【问题标题】:Partitioning BigQuery table, loaded from AVRO分区 BigQuery 表,从 AVRO 加载
【发布时间】:2020-03-30 13:24:42
【问题描述】:

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

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

最好的方法是什么?

谢谢

【问题讨论】:

  • 为什么 AVRO 很重要?这是 GCS 中的联合表,还是该问题的陈述是否正确:“这不是外部表”?

标签: google-bigquery avro partitioning


【解决方案1】:

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

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

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

所以,我认为你可以试试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多