2014-04-18 22 views
8

我有一组日分片数据,其中单个条目不包含一天。我想使用表通配符来选择所有可用的数据,并获取按我感兴趣的列和捕获日期分组的数据。东西,换句话说,就像这样:有没有办法选择BigQuery表中的table_id通配符查询

SELECT table_id, identifier, Sum(AppAnalytic) as AppAnalyticCount 
    FROM (TABLE_QUERY(database_main,'table_id CONTAINS "Title_" AND length(table_id) >= 4')) 
    GROUP BY identifier, table_id order by AppAnalyticCount DESC LIMIT 10 

当然,这不实际工作,因为table_id的不是从TABLE_QUERY函数生成的表中聚集可见。有什么办法可以做到这一点?也许某种表格元数据的连接?

回答

4

此功能目前可提供的BigQuery通过_TABLE_SUFFIX虚列。完整的文档位于https://cloud.google.com/bigquery/docs/querying-wildcard-tables。 夫妇的注意事项:

  • 您将需要使用Standard SQL使表通配符
  • 你将不得不重新命名_TABLE_SUFFIX成别的东西在你SELECT列表,也就是下面的例子说明它

    SELECT _TABLE_SUFFIX as table_id, ... FROM `MyDataset.MyTablePrefix_*`

9

今天不可用,但我也很想拥有。该团队认真对待功能请求,因此感谢您为此添加支持:)。

与此同时,一种解决方法是对每个表的SELECT进行手动联合,再加上一个包含日期数据的附加列。

例如,而不是:

SELECT x, #TABLE_ID 
FROM table201401, table201402, table201303 

你可以这样做:

SELECT x, month 
FROM 
    (SELECT x, '201401' AS month FROM table201401), 
    (SELECT x, '201402' AS month FROM table201402), 
    (SELECT x, '201403' AS month FROM table201403) 
+0

嗯,你也得到我的支持... –

+1

带上并且投票给你r功能要求:https://code.google.com/p/google-bigquery/issues/list?q=label:Feature-Request –

+1

看起来像[163](https://code.google.com/p/google-bigquery/issues/detail?id = 163)是我们应该投票才能获得此功能的错误。 –

相关问题