Bigquery 集群不会降低查询成本

Posted

技术标签:

【中文标题】Bigquery 集群不会降低查询成本【英文标题】:Bigquery clustering not reducing query costs 【发布时间】:2019-02-19 17:31:41 【问题描述】:

我对 BigQuery 中的聚簇表(带有日期分区)有疑问。我有一个由名为 entity_id 的列聚集的表。问题是,我希望在通过这些聚集列过滤查询时看到字节读取减少,但根据 BigQuery Web UI,它无论如何都会进行全扫描。

例如: SELECT * FROM project.usersDataset.users_cluster WHERE entity_id = '405849241' LIMIT 1000; 回报: “查询完成(经过 0.570 秒,已处理 862.94 MB)” 这实际上是整个表的大小 (862,94 MB)

这是表配置: Table configuration img

编辑:我一直在进行测试,我发现有时会保存一些读取的字节,但不会太多:Query from BigQuery Web Ui 我期望节省更多的字节成本(返回 1 个条目并扫描 862MB 表中的 719MB),但在 bigquery 文档中没有任何保证。

有人知道会发生什么吗? 谢谢!

【问题讨论】:

我在此链接***.com/questions/53980953/… 中提出了类似的问题,您能否提供与您的 Web UI 相同的屏幕截图以帮助深入了解此问题 集群只适用于分区表,并且通常在 1GB 以上的数据集上起作用。 是的 Tamir,这与您的问题非常相似。实际上(正如我最近编辑的帖子)我继续测试,我发现有时会减少一些字节成本(总表的 862MB 中的 719MB 并返回 1 行)。我想我期待更大的成本节省,但在 bigquery 文档中并没有保证这些,正如 Pentium10 指出的那样,数据量可能也无济于事。谢谢两位! 【参考方案1】:

来自 link 中提供的 BigQuery 文档

正在开发的功能

支持集群非分区表。

请检查您的表是集群和分区

注意:根据 BigQuery 文档,如果没有 WHERE 条件,也将使用集群

【讨论】:

我忘了补充,它是一个按日期分区的表,由 entity_id 字段聚集。我最近编辑了帖子以添加表格规格。我对你的笔记有疑问,我认为你实际上需要查询中的集群字段才能工作 查看 Felipe 关于集群 medium.com/google-cloud/… 的精彩文章,在他的示例中查看部分仅在分区上的位置以及集群如何节省成本,如果不清楚,我的意图是抱歉。希望本文档能解决您的问题。 @MarcoLotto,我发布了另一个关于类似问题的问题,您可以在此link 中找到。请注意,如果您将流式缓冲区附加到您的表,您可能需要每天运行 merge 命令以查看成本改进

以上是关于Bigquery 集群不会降低查询成本的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:我可以通过将数据存储在多个表中来降低查询成本吗?

BigQuery - 集群表不使用多个键减少查询大小

BigQuery:加入集群字段

如何下载在 BigQuery 中进行的所有查询?

将 MySQL 查询转换为 BigQuery 查询

BigQuery - 在插入表时调用查询