使用 Avro 将具有多列的行插入 BigQuery

Inserting rows with multiple columns into BigQuery using Avro

我在使用 Avro 作为导入格式创建简单 table 时遇到问题。我想创建一个带有 N 列原始数据类型的典型 table,例如带有列 c1 STRINGc2 INTEGER.

的 table

我使用这样的模式

{
    "type": "record",
    "name": "x",
    "fields": [
        {
            "name": "c1",
            "type": "string"
        },
        {
            "name": "c2",
            "type": "int"
        }
    ]
}

这导致一列的名称为 root,类型为 RECORD,其中嵌套了 c1c2

如何使用 Avro 导入到具有两列 c1c2 的 table?或者目前是否可以只创建具有固定名称 root 的一列的 table?

我尝试了其他方法:

感谢您的反馈。 Avro schema 总是以一个未命名的列开始,它可以是像字符串这样的原始类型,也可以是像记录这样的复杂类型。我们现在将它映射到 BQ 中的一个列并将名称固定为 "root"。如果这成为一个常见的请求,我们将考虑在根级别对封闭记录进行条带化。但是我们处理记录类型的方式与其他类型不同。

现在的解决方案是用查询剥离根记录并保存到另一个table。或者,您可以通过 federated tables:

一步合并加载和剥离

bq 查询 --external_table_definition=foo::AVRO=gs://your_bucket/path/file.avro* --destination_table your_dataset.your_table "SELECT root.* FROM foo"