【问题标题】:BigQuery: query time partitioned table row counts per partition for 0 bytes (free) queryBigQuery:0 字节(免费)查询的每个分区的查询时间分区表行数
【发布时间】:2019-04-25 16:12:41
【问题描述】:

使用提取时间分区表,可以免费查询每个分区的行数。以 0 计费的字节数。

SELECT DATE(_PARTITIONTME) AS dd, COUNT(*) FROM ds.ingestion_time_partitioned GROUP BY dd
# free

对于基于列的时间分区表,等效查询的成本是我在列中读取的预期成本(不是免费的)。

SELECT DATE(_timestamp) AS dd, COUNT(*) FROM ds.column_time_partitioned GROUP BY dd
# not free

有什么方法可以免费运行第二个查询吗?我有点假设这两个表的结构相似,因此允许第一个查询空闲的任何元数据也将存在于第二个表中。

【问题讨论】:

  • @ElliottBrossard 好电话,我忘记了那个元数据。我无法从中获得行数,但我可以获得 last_modified_timestamp 最终也解决了我的问题。

标签: google-bigquery


【解决方案1】:

这对于基于列的分区表是不可能的。在您的第一个查询中,您选择了伪列 _PARTITIONTIME(而不是表中包含数据的任何列),而您的第二个查询选择了名为 _timestamp 的分区列,这会因为您读取其数据而产生成本。

https://cloud.google.com/bigquery/docs/querying-partitioned-tables

【讨论】:

  • 是的,我意识到第一个不是访问真正的列,第二个是。我只是希望可能有某种方法可以访问该元数据。我只能假设在内部为分区表、摄取时间或列库保留了相同的数据。这只是一个可访问的问题,它似乎不适用于列分区表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2017-08-08
相关资源
最近更新 更多