Я новичок в 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 летнее время
Вопрос:
- Я что-то упустил, почему это значение не отображается в выводе?