2017-08-28 44 views
0

对于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; 

截图实际表:

Screenshot

转换的时间戳,表明上述会议确实应该在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

问:

  • 我错过了什么,为什么这个值不会显示在输出中?

回答

1

试试下面
我假设 - user_dimrecord,并event_dimrecord, repeated

#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 
+0

谢谢米哈伊尔!它与最终调整结合使用。 – Dirk