Ежедневные данные GA BigQuery - PullRequest
0 голосов
/ 06 ноября 2018

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

1 Ответ

0 голосов
/ 07 ноября 2018

Кажется, я помню эту проблему и обошел ее, выбрав ga_sessions за 2 дня до и за предыдущий день и таблицу в реальном времени за предыдущий и текущий день.

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

Затем я просто выбрал строки для предыдущего дня из результирующей таблицы.

...