【问题标题】:Google BigQuery - Using wildcard table query with date partitioned table?Google BigQuery - 将通配符表查询与日期分区表一起使用?
【发布时间】:2016-10-06 06:27:02
【问题描述】:

我正在尝试使用通配符表函数来查询一堆日期分区表。

这个查询有效:

select * from `Mydataset.fact_table_1` where _partitiontime='2016-09-30' limit 10

此查询不起作用:

select * from `Mydataset.fact_table_*` where _partitiontime='2016-09-30' limit 10

不支持此操作吗?

如果不支持从多个日期分区表中读取同一天数据的最佳方法是什么?

【问题讨论】:

  • 你能澄清一下你所说的“不起作用”是什么意思吗?您是否收到错误,或者结果是意外的问题?
  • 我收到错误 -“无法识别的名称:_partitiontime” .. 如果我不使用通配符或不使用 _partitiontime,则同样有效。我不能在同一个查询中同时使用它们。
  • 我认为如果你使用通配符表,你必须过滤_TABLE_SUFFIX,或者至少这是我对cloud.google.com/bigquery/docs/querying-wildcard-tables的解释。我不确定您是否可以同时使用 _TABLE_SUFFIX_PARTITIONTIME,但我请同事确认。
  • 我可以在旧版 sql 中使用 TABLE_QUERY 以及 PARTITIONTIME。因此,如果我想列出所有表的分区 - 从 (TABLE_QUERY(Mydataset, 'table_id CONTAINS "fact_table"')) 组中选择 _partitiontime 作为 pt by 1
  • 这里是功能请求的链接,仅供参考:code.google.com/p/google-bigquery/issues/detail?id=728

标签: google-bigquery google-cloud-platform


【解决方案1】:

以下声明

select * from TABLE_QUERY(YOUR_DATASET,'table_id contains "fact_table_"') where _PARTITIONTIME = TIMESTAMP('2016-09-30')

应该做的伎俩

【讨论】:

  • 这行得通,但我正在寻找使用 standard_sql 而不是旧版 sql 的解决方案。
  • 嗨@TimS 你有没有找到一个使用标准sql的解决方案?我尝试使用 UNION ALL,但这太慢了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 2020-07-22
  • 1970-01-01
相关资源
最近更新 更多