FLATTEN с TABLE_DATE_RANGE
У меня есть набор таблиц в наборе данных и вам нужно запросить их все, а FLATTENing - одну из повторяющихся записей. Например, такой запрос выглядит следующим образом:
SELECT
date,
customDimensions.value AS customDimension,
hits.page.pagePath AS pagePath
FROM
(FLATTEN( [<projectId>:<datasetId>.ga_sessions_20130910] ,
customDimensions))
WHERE
hits.page.pagePath CONTAINS '/helmets'
AND customDimensions.index IN (1,2,3)
Однако у меня возникают проблемы с FLATTENing при использовании подстановочных знаков в таблице. Может ли кто-нибудь помочь мне с синтаксисом? Можно ли использовать FLATTEN с TABLE_DATE_RANGE?
SELECT
date,
customDimensions.value AS customDimension,
hits.page.pagePath AS pagePath
FROM
(FLATTEN (TABLE_DATE_RANGE ([<project>:<dataset>.ga_sessions_],
TIMESTAMP('2013-09-10'),
TIMESTAMP ('2014-06-10'))),
customDimensions)
WHERE
hits.page.pagePath CONTAINS '/helmets'
AND customDimensions.index IN (1,2,3)
Спасибо,
Шаян
Ответы
Ответ 1
Согласно справочному руководству, синтаксис FLATTEN:
...(FLATTEN ([project_name:]datasetId.tableId, flattenField))..
...(FLATTEN (subselect_clause, flattenField))..
Исходя из этого, я попытался бы поставить предложение subselect в инструкции FLATTEN следующим образом:
SELECT
date,
customDimensions.value AS customDimension,
hits.page.pagePath AS pagePath
FROM
FLATTEN(
(SELECT date, customDimensions, hits FROM TABLE_DATE_RANGE ([<project>:<dataset>.ga_sessions_],
TIMESTAMP('2013-09-10'),TIMESTAMP ('2014-06-10')))
, customDimensions)
WHERE
hits.page.pagePath CONTAINS '/helmets'
AND customDimensions.index IN (1,2,3)
Ответ 2
Попробуй, это работает для меня..
SELECT
date,
customDimensions.value AS customDimension,
hits.page.pagePath AS pagePath
FROM
(FLATTEN (SELECT * FROM TABLE_DATE_RANGE ([<project>:<dataset>.ga_sessions_],
TIMESTAMP('2013-09-10'),
TIMESTAMP ('2014-06-10'))),
customDimensions)
WHERE
hits.page.pagePath CONTAINS '/helmets'
AND customDimensions.index IN (1,2,3)