无法使用 WHERE 进行过滤(无法访问类型为 ARRAY<STRUCT<hitNumber INT64、时间 INT64、小时 INT64 的值的字段小时)
Unable to filter using WHERE (Cannot access field hour on a value with type ARRAY<STRUCT<hitNumber INT64, time INT64, hour INT64)
#standardSQL
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701'
AND
hits.hour > '11'
我正在尝试查看在中午 12 点到午夜(在标准 SQL 中)向 Google Analytics 发送点击的国家/地区列表
我正在使用 https://support.google.com/analytics/answer/3437719?hl=en 中的 hits.hour 但出现此错误:
无法访问类型为 ARRAY 的值的字段小时
您可以使用以下方法修正语法:
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701' AND
hits[offset(0)].hour > 11
但这并不能真正满足您的需求。相反,您需要 unnest()
,因为 hits
是一个数组。所以:
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`,
unnest(hits) hit
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701' and
hit.hour > 11;
另请注意,hour
似乎是一个数字,因此单引号不合适。
#standardSQL
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701'
AND EXISTS (SELECT 1 FROM UNNEST(hits) hit WHERE hit.hour > 11)
#standardSQL
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701'
AND
hits.hour > '11'
我正在尝试查看在中午 12 点到午夜(在标准 SQL 中)向 Google Analytics 发送点击的国家/地区列表 我正在使用 https://support.google.com/analytics/answer/3437719?hl=en 中的 hits.hour 但出现此错误: 无法访问类型为 ARRAY 的值的字段小时
您可以使用以下方法修正语法:
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701' AND
hits[offset(0)].hour > 11
但这并不能真正满足您的需求。相反,您需要 unnest()
,因为 hits
是一个数组。所以:
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`,
unnest(hits) hit
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701' and
hit.hour > 11;
另请注意,hour
似乎是一个数字,因此单引号不合适。
#standardSQL
SELECT DISTINCT geoNetwork.country
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE _TABLE_SUFFIX BETWEEN '20170701' AND '20170701'
AND EXISTS (SELECT 1 FROM UNNEST(hits) hit WHERE hit.hour > 11)