【问题标题】:How do I copy from one BigQuery Table to another when the target contains REPEATED fields?当目标包含 REPEATED 字段时,如何从一个 BigQuery 表复制到另一个?
【发布时间】:2020-02-20 21:55:20
【问题描述】:

我有两个具有相似架构的表,但一个具有将模式设置为重复的字段子集。例如:

架构 1:

[
    {"name": "id", "type": "NUMERIC", "mode": "REQUIRED"},
    {"name": "name", "type": "STRING", "mode": "REQUIRED"},
    {"name": "created", "type": "TIMESTAMP", "mode": "REQUIRED"},
    {"name": "valid", "type": "BOOLEAN", "mode": "REQUIRED"},
    {"name": "parameter1", "type": "STRING", "mode": "REQUIRED"},
    {"name": "parameter2", "type": "FLOAT", "mode": "REQUIRED"},
    {"name": "parameter3", "type": "BOOLEAN", "mode": "REQUIRED"}
]

架构 2:

[
    {"name": "id", "type": "NUMERIC", "mode": "REQUIRED"},
    {"name": "name", "type": "STRING", "mode": "REQUIRED"},
    {"name": "created", "type": "TIMESTAMP", "mode": "REQUIRED"},
    {"name": "valid", "type": "BOOLEAN", "mode": "REQUIRED"},
    {"name": "parameters", "type": "RECORD", "mode": "REPEATED", "fields":
        [
            {"name": "parameter1", "type": "STRING", "mode": "REQUIRED"},
            {"name": "parameter2", "type": "FLOAT", "mode": "REQUIRED"},
            {"name": "parameter3", "type": "BOOLEAN", "mode": "REQUIRED"}
        ]
    }
]

我使用这些模式创建了 Table1 和 Table2。 Table1 已写入,Table2 为空。我想将 Table1 的内容复制到 Table2,其中 Table1.parameter1、Table1.parameter2 和 Table1.parameter3 被写入一个 Table2.parameters 数组,每个数组只有一个元素。我假设像 INSERT INTO TABLE2 (id, name, created ...) SELECT id, name, created FROM TABLE1; 这样的 SQL 命令应该可以完成这项工作,但我找不到正确的语法。

(将来表 2 中将写入多行 parameters 的数据,因此需要复制)

我在https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax 看到了文档,但似乎没有一个建议适合我的用例。你能指出我正确的方向吗?

谢谢!

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    这可以通过在将第一个表的参数列插入到第二个表时将它们分组为STRUCTARRAY 来完成:

    INSERT INTO table2 (id, name, created, valid, parameters)
    SELECT id, name, created, valid, [(parameter1, parameter2, parameter3)]
    FROM table1
    

    【讨论】:

    • 非常好,正是我需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多