对于StandardSQL我很新,并且希望为在第(3)周的第一个会话数据上安装给定日期(2017年6月1日)的用户导出Raw BigQuery日志数据,安装日期后(D0-D20)。第1天安装程序的原始BigQuery日志数据
#StandardSQL
SELECT user_dim.first_open_timestamp_micros, user_dim.app_info.app_instance_id, event_dim.date, event_dim.name, event_dim.timestamp_micros, event_dim.previous_timestamp_micros
FROM `your_table_id.app_events_*`
WHERE _TABLE_SUFFIX BETWEEN '20170601' AND '20170621' AND
(SELECT user_dim.first_open_timestamp_micros
FROM UNNEST(user_dim) AS user
WHERE user.first_open_timestamp_micros BETWEEN 1496275200000 AND 1496361600000);
我只得到以下的输出:“在UNNEST参考的值必须是数组UNNEST包含结构类型的表达。”我最初的问题是:如何将其转换为数组,以给我适当的输出?米哈伊尔的回答后
更新:
执行下面的查询,但没有给出任何数据输出。我知道应该有应该显示的用户,因为如果我预览实际表格(查看屏幕截图),我会看到表中存在的值应该是输出的一部分(但不是)。
#standardSQL
SELECT
user_dim.first_open_timestamp_micros,
user_dim.app_info.app_instance_id,
event.date, event.name,
event.timestamp_micros,
event.previous_timestamp_micros
FROM `your_table_id.app_events_*`, UNNEST(event_dim) AS event
WHERE _TABLE_SUFFIX BETWEEN '20170601' AND '20170621'
AND user_dim.first_open_timestamp_micros BETWEEN 1496275200000 AND 1496361600000
LIMIT 10;
截图实际表:
转换的时间戳,表明上述会议确实应该在2 user_dim.first_open_timestamp_micros,结果中间出现,但不...
1496275200000转换: 假设th是时间戳是以毫秒为单位: GMT:周四,2017年6月1日12:00:00 AM 您的时区:周四,2017年6月1日上午02时○○分00秒GMT + 02:00 DST
1496353126947000已转换: 假设此时间戳记为微秒(1/1,000,000秒): GMT:2017年6月1日星期四9:38:46.947 PM 您所在的时区:2017年6月1日星期四11:38:46.947 PM GMT + 02:00 DST
1496361600000转换: 假设这个时间戳以毫秒为单位: GMT:周五,2017年6月2日12:00:00 AM 您的时区:周五,2017年6月2日上午2点00分00秒GMT + 02:00 DST
问:
- 我错过了什么,为什么这个值不会显示在输出中?
谢谢米哈伊尔!它与最终调整结合使用。 – Dirk