首页 > 解决方案 > 分区 BigQuery 表,从 AVRO 加载

问题描述

我有一个 bigquery 表,其数据是从 GCS 上的 AVRO 文件加载的。这不是外部表。

每个 AVRO 对象中的一个字段是created(带有long类型的日期),我想使用该字段对表进行分区。

做这个的最好方式是什么?

谢谢

标签: google-bigqueryavropartitioning

解决方案


阻止created用作分区列的两个问题:

  • avro 文件在加载期间定义模式。在这一步只有一个分区选项:选择 Partition By Ingestion Time,但是,很可能会为此目的包含另一个字段。

  • 创建的字段很长。该值似乎包含一个日期时间。如果它是 Integer,您将能够以某种方式使用 Integer Range 分区表。但在这种情况下,您需要将 long 值转换为 Date/Timestamp 以使用date/timestamp partitioned tables

所以,在我看来,你可以尝试:

  1. 将数据按原样导入到第一个表中。
  2. 创建第二个按createdTIMESTAMP 类型分区的空表。
  3. 执行从第一个表读取的查询并在TIMESTAMP_SECONDScreated (或 TIMESTAMP_MILLIS)上应用时间戳函数以将值转换为 TIMESTAMP,因此您插入的每个值都将被分区。

推荐阅读