sql - 大查询 : Append to a nested record

标签 sql google-bigquery

我目前正在检查 Bigquery,我想知道是否可以将新数据添加到嵌套表中。

例如,如果我有一张这样的表:

[
    {
        "name": "name",
        "type": "STRING"
    },
    {
        "name": "phone",
        "type": "RECORD",
        "mode": "REPEATED",
        "fields": [
            {
                "name": "number",
                "type": "STRING"
            },
            {
                "name": "type",
                "type": "STRING"
            }
        ]
    }
]

然后我插入联系人 John Doe 的电话号码。
INSERT into socialdata.phones_examples (name, phone) VALUES("Jonh Doe", [("555555", "Home")]);

是否可以选择稍后向联系人添加另一个号码?要得到这样的东西:

Append example

我知道我可以更新整个字段,但我想知道是否有办法将新值附加到嵌套表中。

最佳答案

当您将数据插入 BigQuery 时,粒度是行级别,而不是行中包含的数组元素。您可能想要使用这样的查询,在其中更新相关行并附加到数组:

UPDATE socialdata.phones_examples
SET phone = ARRAY_CONCAT(phone, [("555555", "Home")])
WHERE name = "Jonh Doe"

关于sql - 大查询 : Append to a nested record,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52729455/

相关文章:

python - 如何在 Python 中管理 Google API 错误

sql - 查找日期范围包含给定日期的记录?

mysql - 使用序列值插入行时出现列不允许错误

mysql - SQL 返回值 - 怎么做?

sql - BigQuery查询以查找表的列名

google-bigquery - BigQuery : select from regexp_match where field in other table

google-cloud-platform - 有没有办法在 Google Cloud Platform 中安排 Cloud Shell 命令?

c# - 重新创建具有多线程和高并发的阻塞环境

php - 通过 session 插入双客户 ID

google-bigquery - Google Bigquery-通过命令行创建表架构