尝试使用 BigQuery select 事件数据时出错
Error when trying to select event data with BigQuery
我正在尝试 select BigQuery 中的 event_dim.date
,但由于错误而无法实际访问它
Error: Cannot access field date on a value with type ARRAY<STRUCT<date STRING, name STRING, params ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT, ...>>>, ...>> at [1:18]
我的查询:
SELECT event_dim.date FROM `table`
我知道我做错了什么,我们将不胜感激。谢谢!
您是否要获取每一行的日期数组?那么你想要一个 ARRAY 子查询:
SELECT ARRAY(SELECT date FROM UNNEST(event_dim)) AS dates
FROM `table`;
如果您试图在不同的行中获取所有日期,那么您希望与数组交叉连接:
SELECT event.date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event;
过滤特定日期:
SELECT event.date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event
WHERE event.date = '20170104';
或者您可以将日期字符串解析为 date
类型,这样您就可以按年或周进行过滤,例如:
SELECT date
FROM (
SELECT PARSE_DATE('%Y%m%d', event.date) AS date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event
)
WHERE EXTRACT(YEAR FROM date) = 2017;
我正在尝试 select BigQuery 中的 event_dim.date
,但由于错误而无法实际访问它
Error: Cannot access field date on a value with type ARRAY<STRUCT<date STRING, name STRING, params ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT, ...>>>, ...>> at [1:18]
我的查询:
SELECT event_dim.date FROM `table`
我知道我做错了什么,我们将不胜感激。谢谢!
您是否要获取每一行的日期数组?那么你想要一个 ARRAY 子查询:
SELECT ARRAY(SELECT date FROM UNNEST(event_dim)) AS dates
FROM `table`;
如果您试图在不同的行中获取所有日期,那么您希望与数组交叉连接:
SELECT event.date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event;
过滤特定日期:
SELECT event.date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event
WHERE event.date = '20170104';
或者您可以将日期字符串解析为 date
类型,这样您就可以按年或周进行过滤,例如:
SELECT date
FROM (
SELECT PARSE_DATE('%Y%m%d', event.date) AS date
FROM `table`
CROSS JOIN UNNEST(event_dim) AS event
)
WHERE EXTRACT(YEAR FROM date) = 2017;