如何在 GCP BigQuery 中创建分片表

Ast*_*-K2 2 google-bigquery

当我们开始使用 GCP BigQuery 时,我们的代码必须从数据集中所谓的分片表中检索数据。该表组的名称类似于,sometablename_(3000)图标表示为在此输入图像描述。括号中的数字表示迄今为止在数据集中创建的表的总数以及日期,每天这些表都会被其他一些发布者添加到那里,因此计数每天都会增加。我们的代码需要一个通配符查询来限制日期范围,以便从此表中读取数据,这可以正常工作。从控制台创建表时我们看到的唯一其他选项是分区表,其表示方式不同。

但好奇的问题是,这些表最初是如何每天创建的?当我们手动尝试创建另一个具有相同名称格式的表时,它被创建为单独的表,但进入该组。不确定文档是否有任何参考,但找不到任何参考。

因此,我们非常感谢任何有助于理解这一背景的帮助。

Bet*_*ens 10

一旦 google-bigquery 找到具有以下特征的表,就会自动生成分片表:

  • 存在于同一数据集中
  • 具有完全相同的表架构
  • 相同的前缀
  • 具有 _YYYYMMDD 形式的后缀(例如 20210130)

您可以在官方文档分区与分片中找到有关分片表的更多信息。

因此,这意味着如果我创建 3 个名为 BUSINES_YYYYMMDD 的表,一旦在 UI 中刷新,它将被分组。

 * Business_(3)
    - Business_20211201
    - Business_20211202
    - Business_20211203
Run Code Online (Sandbox Code Playgroud)

如果我想查询这些表,我只需通过用户界面并选择表即可。

# UI under schema tab 
BUSINESS_20211203      2021-12-03 v  # Filter tables under the shard

Table schema
...
Run Code Online (Sandbox Code Playgroud)

或者直接进入查询uicompose new query并执行查询。

   Select * from my-project-id.my-dataset.Business_20211203 limit 1
Run Code Online (Sandbox Code Playgroud)

因此,如果您在同一数据集中获取由出版商/组织创建的表,并且符合顶部提到的条件,那么它将被分组。

关于查询这个组,谷歌建议进行分区而不是分片。您可以通过此链接查看将分片转换为分区表的过程。

另外,我发现这篇文章还显示了每种模式的对比。

  • 呃!刷新浏览器是关键,我完全被难住了!刚才尝试了一下,真相大白了。非常感谢@Betjens 解释得如此清楚。 (3认同)