我应该如何在不破坏嵌套的情况下过滤 RECORD 中的列?

How should I filter columns in RECORD without breaking nest?

我使用 BigQuery 从 Firebase 接收分析数据,现在我想过滤一些列。

这是一个数据方案(简化)。

device                           RECORD   NULLABLE
  device.category                STRING   NULLABLE
  device.vendor_id               STRING   NULLABLE
  device.is_limited_ad_tracking  STRING   NULLABLE

我不需要 vendor_id 列,但我想像这样保留 device 嵌套:

device                           RECORD   NULLABLE
  device.category                STRING   NULLABLE
  device.is_limited_ad_tracking  STRING   NULLABLE

起初我写了SELECT device.category, device.is_limited_ad_tracking FROM `my_table`,但是categoryis_limited_ad_tracking列变得没有嵌套了。

  category                STRING   NULLABLE
  is_limited_ad_tracking  STRING   NULLABLE

如何在不破坏嵌套的情况下过滤列?

以下适用于 BigQuery 标准 SQL

#standardSQL
SELECT STRUCT(device.category, device.is_limited_ad_tracking) device
FROM `project.dataset.table`    

你可以用下面的方法进行烟雾测试

#standardSQL
WITH `project.dataset.table` AS (
  SELECT STRUCT<category STRING, vendor_id STRING, is_limited_ad_tracking STRING>('c1', 'id1', 'is1') device
)
SELECT STRUCT(device.category, device.is_limited_ad_tracking) device
FROM `project.dataset.table`