带有TABLE_DATE_RANGE的FLATTEN

Sha*_*ood 18 google-bigquery

我在数据集中有一系列表,需要在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)
Run Code Online (Sandbox Code Playgroud)

但是,我在使用表通配符时遇到了FLATTENing问题.有人可以帮我解决语法问题吗?可以在TABLE_DATE_RANGE中使用FLATTEN吗?

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)
Run Code Online (Sandbox Code Playgroud)

谢谢,沙燕

Dav*_*ith 17

根据参考手册,FLATTEN语法是:

...(FLATTEN ([project_name:]datasetId.tableId, flattenField))..
...(FLATTEN (subselect_clause, flattenField))..
Run Code Online (Sandbox Code Playgroud)

基于此,我会尝试在FLATTEN语句中添加一个subselect子句,如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!已经探索过这个选项,但希望FLATTEN使用TABLE_DATE_RANGE进行更清晰的查询.我想现在还不可能.我将申请功能请求. (2认同)
  • 解决方案不起作用.我收到此错误消息:错误:找不到字段'customDimensions'. (2认同)