【问题标题】:Is there a way to select table_id in a Bigquery Table Wildcard Query有没有办法在 Bigquery 表通配符查询中选择 table_id
【发布时间】:2014-06-03 04:50:34
【问题描述】:

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

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 函数生成的表聚合中不可见。有没有办法做到这一点?可能是表元数据上的某种连接?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    现在可以通过 _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_*`

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2023-03-30
      • 1970-01-01
      相关资源
      最近更新 更多