Querying nested data in bigquery
我正在尝试提取按主机名过滤的bigquery google Analytics(分析)数据中的所有列。
但是,结果仍显示其他主机名,如屏幕截图所示。
我正在使用过滤器进行选择,以将数据复制到具有相同架构的另一个数据集。
以下查询:
1 | SELECT g.* FROM `10241241.ga_sessions_20160805` g, UNNEST (hits) as hits WHERE hits.page.hostname="www.googlemerchandisestore.com" |
已更新
如何在不更改其嵌套结构的情况下复制同一模式?
要过滤的值位于数组中...因此,您可以过滤/清洗该数组或排除不包含该值的数组的行或排除仅包含该值的行。不确定哪个适用于您,因为您似乎没有理由将数组与整个表交叉连接(这极大地膨胀了它)。
清理数组:
1 2 3 4 5 6 7 | SELECT * REPLACE( ARRAY(SELECT AS STRUCT * FROM g.hits WHERE page.hostname='www.googlemerchandisestore.com') AS hits ) FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20160805` g limit 1000 |
排除不包含值
的行
1 2 3 4 5 6 | SELECT * FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20160805` g WHERE (SELECT COUNT(1)>0 FROM g.hits WHERE page.hostname='www.googlemerchandisestore.com') limit 1000 |
等
您不应再添加点击数列。另外,我建议您对未套用的列使用其他名称。这样会更容易理解。
1 2 3 | SELECT g.* EXCEPT(hits), hit FROM `10241241.ga_sessions_20160805` g, UNNEST (hits) as hit WHERE hits.page.hostname="www.googlemerchandisestore.com" |