【发布时间】:2020-11-16 09:58:08
【问题描述】:
此表按小时分区:
SELECT *
FROM `blockchain-etl-internal.crypto_ethereum_partitioned.logs_by_topic_0xd78`
WHERE block_timestamp >= '2020-11-14 00:00:00' and block_timestamp < '2020-11-14 01:00:00'
ORDER BY block_timestamp DESC
但是,我指定 BigQuery 对 block_timestamp 的任何过滤器都会扫描整个表。您可以在查询中查看该表的大小和扫描的数据量以确保。
BigQuery 不应该只扫描被过滤掉的分区中的数据吗?
【问题讨论】:
-
桌子的尺寸是多少?
-
@MikhailBerlyant 大约 400MB
-
您的过滤器不是按小时而是按日期,您是否尝试过按小时过滤,看看它是否仍然扫描整个表?
-
刚刚更新了按小时过滤的问题。它仍然扫描整个表。顺便说一句,问题中的表格是公开的
-
如果您检查该表的分区信息(例如通过 $__PARTITIONS_SUMMARY__),您会发现没有分区并且所有数据都属于所谓的 _UNPARTITIONED 分区 - 这将解释你的问题 - 但现在真正的问题是如何将表明确设置为按小时分区??!!
标签: google-bigquery