【问题标题】:Sort order of BigQueryStorage Read APIBigQueryStorage 读取 API 的排序顺序
【发布时间】:2022-06-22 13:26:38
【问题描述】:

如标题所述,使用存储读取 API 构建的读取流读取的数据是否有任何排序顺序?关于分区和集群键是否有任何排序,据我了解,分区是共置的,如果使用集群,则分区中的数据存储在集群块中?

【问题讨论】:

    标签: api google-bigquery storage


    【解决方案1】:

    第一个问题

    Storage API 在storage directly 上运行。因此,您确实无法假设使用 Storage Read API 接收数据的顺序。

    第二个问题

    在聚簇表中,只要将新数据添加到表或特定分区,数据就会自动组织起来。来自partitioned table docclustered table doc

    分区表:分区表是一种特殊的表,它分为多个段,称为分区,可以更轻松地管理和查询您的数据。

    集群表:当您在 BigQuery 中创建集群表时,表数据会根据表架构中一个或多个列的内容自动组织。您指定的列用于搭配相关数据。将数据写入聚簇表时,BigQuery 会使用聚簇列中的值对数据进行排序。
    这些值用于将数据组织到 BigQuery 存储中的多个块中。聚集列的顺序决定了数据的排序顺序。当新数据添加到表或特定分区时,BigQuery 会在后台执行自动重新集群以恢复表或分区的排序属性。

    当您将 cluster by 与某些列一起使用时,它会应用于整个数据集。如果表是partitioned table,那么它将应用于每个分区。

    您可以关注此code lab 以获得更好的理解。来自实验室:- 以stackoverflow.question_2018 表为例。假设它有 3 列

    1. Creation_date 2.Title 3.Tags

    如果我们从具有creation_date 作为日期分区的主表创建一个新的分区表,那么根据分区逻辑,它将在每个创建日期都有一个分区。

    现在,如果我们创建一个表 creation_date 作为分区并在列 tags 上应用 cluster by,那么集群将应用于每个分区。即使我们在此表中添加新数据,bigquery 也会负责重新组织数据。

    希望这能帮助你理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 2017-05-10
      • 2015-07-17
      • 2012-07-06
      相关资源
      最近更新 更多