有没有办法在Bigquery表通配符查询中选择table_id

时间:2014-04-18 16:28:48

标签: google-bigquery

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

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函数产生的表聚合中不可见。有没有办法实现这个目标?某种类型的表元数据连接可能吗?

2 个答案:

答案 0 :(得分:10)

今天不可用,但我也喜欢这样的东西。团队认真对待功能请求,所以感谢您为此添加支持:)。

与此同时,一种解决方法是对每个表的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)

答案 1 :(得分:7)

此功能现在可通过_TABLE_SUFFIX伪列在BigQuery中使用。完整文档位于https://cloud.google.com/bigquery/docs/querying-wildcard-tables。 有几点需要注意:

  • 您需要使用Standard SQL启用表格通配符
  • 您必须将_TABLE_SUFFIX重命名为SELECT列表中的其他内容,即以下示例说明

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