第一天安装者的原始 BigQuery 日志数据

Raw BigQuery Log-data for 1st Day Installers

我是 StandardSQL 的新手,想为在给定日期(2017 年 6 月 1 日)安装的用户导出原始 BigQuery 日志数据,并在安装日期(D0- D20).

    #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);

我只得到以下输出:"Values referenced in UNNEST must be arrays. UNNEST contains expression of type STRUCT". 我最初的问题是:我如何将它转换成一个数组,给我适当的输出?

米哈伊尔回答后更新:

执行了以下查询,但未提供任何数据作为输出。我知道应该有一些用户应该出现,因为如果我预览实际的 table(查看屏幕截图),我会看到 table 中存在的值应该是输出的一部分(但不是).

#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;

实际截图table:

转换时间戳,表明上面的会话确实应该出现在 2 个 user_dim.first_open_timestamp_micros 结果的中间,但没有...

1496275200000 转换: 假设这个时间戳以毫秒为单位: 格林威治标准时间:2017 年 6 月 1 日星期四 12:00:00 上午 您所在的时区:2017 年 6 月 1 日星期四 2:00:00 AM 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 转换: 假设这个时间戳以毫秒为单位: 格林威治标准时间:2017 年 6 月 2 日星期五 12:00:00 上午 您所在的时区:2017 年 6 月 2 日星期五 2:00:00 AM GMT+02:00 DST

问题:

试试下面
我假设 - user_dimrecordevent_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