首页 > 解决方案 > 如何将多条记录插入 BigQuery 中特定行的重复记录字段?

问题描述

我有一个非常简单的 BigQuery 表架构:

Field name          Type        Mode

thing               STRING      NULLABLE    
arraything          RECORD      REPEATED    
    quotekey        STRING      NULLABLE    
    policyvalue     INTEGER     NULLABLE    
    testbool        BOOLEAN     NULLABLE    
    testtimestamp   TIMESTAMP   NULLABLE    

我插入了一行,只有一个thing

INSERT INTO `...tablename`(thing) VALUES('Moose');

我需要能够将多个对象插入到我的arraything中,并且我可以收集到的语法是:

UPDATE `...tablename` SET arraything = ARRAY_CONCAT(arraything, [("a string", 6, true, NULL)]) WHERE thing = 'Moose';

但是,我收到错误:

Query error: No matching signature for function ARRAY_CONCAT for argument types: ARRAY<STRUCT<quotekey STRING, policyvalue INT64, testbool BOOL, ...>>, ARRAY<STRUCT<STRING, INT64, BOOL, ...>>. Supported signature: ARRAY_CONCAT(ARRAY, [ARRAY, ...]) at [36:78]

不能ARRAY_CONCAT与重复类型一起使用吗?如何在where = 'Moose'arraything的行中实现插入(现在一次多个)s ?thing我需要做一些铸造吗?

标签: google-bigquery

解决方案


考虑以下固定语法

UPDATE `...tablename`
SET arraything = ARRAY_CONCAT(
  arraything, [
    struct<quotekey STRING, policyvalue INTEGER, testbool BOOLEAN, testtimestamp TIMESTAMP>
    ("a string", 6, true, NULL)
  ]
) 
WHERE thing = 'Moose';

推荐阅读