Необработанные данные журнала BigQuery для установщиков первого дня

Я новичок в StandardSQL и хотел экспортировать необработанные данные журнала BigQuery для пользователей, которые установили в определенную дату (1 июня 2017 г.), с данными сеанса за первые 3 недели в дату установки и после нее (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);

Я получаю только следующий вывод: "Значения, на которые ссылается UNNEST, должны быть массивами. UNNEST содержит выражение типа STRUCT". Мой первоначальный вопрос был таков: как преобразовать это в массив, чтобы получить соответствующий вывод?

Обновление после ответа Михаила:

Следующий запрос выполнен, но не дал никаких данных в качестве вывода. Я знаю, что должны быть пользователи, которые должны появиться, потому что, если я просматриваю фактическую таблицу (просмотр скриншота), я вижу значения, которые существуют в таблице, которые должны быть частью вывода (но не являются).

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

Скриншот реальной таблицы:

Скриншот

Преобразование временных меток показывает, что указанный выше сеанс действительно должен отображаться в середине двух результатов user_dim.first_open_timestamp_micros, но не...

1496275200000 Преобразовано: если эта отметка времени указана в миллисекундах: GMT: четверг, 1 июня 2017 г., 00:00:00. Ваш часовой пояс: четверг, 1 июня 2017 г., 2:00:00 GMT+. 02:00 летнее время

1496353126947000 Преобразовано: если эта отметка времени указана в микросекундах (1/1 000 000 секунды): GMT: четверг, 1 июня 2017 г., 21:38:46,947. Ваш часовой пояс: четверг, 1 июня 2017 г. 11: 38:46.947 по Гринвичу + 02:00 по летнему стандартному времени

1496361600000 Преобразовано: если эта отметка времени указана в миллисекундах: GMT: пятница, 2 июня 2017 г., 00:00:00. Ваш часовой пояс: пятница, 2 июня 2017 г., 2:00:00 GMT+. 02:00 летнее время

Вопрос:

  • Я что-то упустил, почему это значение не отображается в выводе?

person d_-    schedule 28.08.2017    source источник


Ответы (1)


Попробуйте ниже
Я предположил, что user_dim – это record, а event_dim – это record, 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
person Mikhail Berlyant    schedule 28.08.2017
comment
Спасибо Михаил! Это сработало в сочетании с окончательной настройкой. - person d_-; 28.08.2017