Я работаю над несколькими запросами, чтобы измерить ежедневную производительность, используя данные Google Analytics в BigQuery. Мой проект в настоящее время настроен с использованием данных от GA. Проблема в том, что вчерашняя таблица ga.us.ga_sessions_20181105
не создается до позднего утра.
Представление предыдущего дня ga.us.ga_realtime_sessions_view_20181105
в реальном времени все еще существует до создания вчерашней таблицы.
Есть ли способ запросить как вчерашнюю таблицу, так и вчерашнее представление в реальном времени, и обработать ошибку "таблица не найдена", если вчерашняя таблица еще не была записана?
Примерно так:
SELECT
date,
SUM(totals.visits) AS visits
FROM
-- If this table doesn't exist yet
TABLE_DATE_RANGE([ga:us.ga_sessions_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY')),
-- Query this view instead
TABLE_DATE_RANGE([ga:us.ga_realtime_sessions_view_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'))
WHERE
TIME(DATE_ADD(SEC_TO_TIMESTAMP(visitStartTime), -6, 'HOUR')) <= TIME(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'))
GROUP BY
date;
РЕШЕНИЕ:
Благодаря @Bobbylank я просто выбираю обе таблицы в одном запросе:
SELECT
date,
SUM(totals.visits) AS visits
FROM
TABLE_DATE_RANGE([ga:us.ga_sessions_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY')),
TABLE_DATE_RANGE([ga:us.ga_realtime_sessions_view_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'))
WHERE
TIME(DATE_ADD(SEC_TO_TIMESTAMP(visitStartTime), -6, 'HOUR')) <= TIME(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'))
GROUP BY
date;