Как я могу запросить GA RealtimeView со стандартным SQL в BigQuery? - PullRequest
1 голос
/ 25 июня 2019

При экспорте данных Google Analytics в Google BigQuery вы можете настроить таблицу в реальном времени, которая будет заполняться данными Google Analytics в режиме реального времени. Однако эта таблица будет содержать дубликаты из-за возможного согласованного характера распределенных вычислений.

Чтобы преодолеть это, Google предоставил представление, где дубликаты отфильтровываются. Однако это представление нельзя запросить в стандартном SQL.

Если я попытаюсь сделать запрос по стандарту: Cannot reference a legacy SQL view in a standard SQL query.

Мы стандартизировали Стандарт, и я не решаюсь переписать все наши пакетные запросы на устаревшие, когда мы хотим использовать их в данных в реальном времени. Есть ли способ переключить представление в реальном времени на стандартное представление?

EDIT: Это определение вида (которое каждый день пересматривается Google):

SELECT * FROM [111111.ga_realtime_sessions_20190625] where exportKey in ( SELECT exportKey FROM ( SELECT exportKey, exportTimeUsec, MAX(exportTimeUsec) OVER (PARTITION BY visitKey) AS maxexportTimeUsec FROM [111111.ga_realtime_sessions_20190625] ) WHERE exportTimeUsec >= maxexportTimeUsec );

1 Ответ

1 голос
/ 25 июня 2019

Вы можете создать такое логическое представление, используя стандартный SQL:

CREATE VIEW dataset.realtime_view_20190625 AS
SELECT
  visitKey,
  ARRAY_AGG(
    (SELECT AS STRUCT t.* EXCEPT (visitKey))
    ORDER BY exportTimeUsec DESC LIMIT 1)[OFFSET(0)].*
FROM dataset.ga_realtime_sessions_20190625 AS t
GROUP BY visitKey

Выбирает самую последнюю строку для каждого visitKey. Если вы хотите обобщить это по дням, вы можете сделать что-то вроде этого:

CREATE VIEW dataset.realtime_view AS
SELECT
  CONCAT('20', _TABLE_SUFFIX) AS date,
  visitKey,
  ARRAY_AGG(
    (SELECT AS STRUCT t.* EXCEPT (visitKey))
    ORDER BY exportTimeUsec DESC LIMIT 1)[OFFSET(0)].*
FROM `dataset.ga_realtime_sessions_20*` AS t
GROUP BY date, visitKey
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...