Sql 将多个列转换为Bigquery中的记录

Sql 将多个列转换为Bigquery中的记录,sql,google-cloud-platform,google-bigquery,bigdata,Sql,Google Cloud Platform,Google Bigquery,Bigdata,我试图在Bigquery中将平面表转换为嵌套表。 如果要获取一行,并将某些列转换为两个字段: key.name 键值 例如,如果我在这张桌子上: 我想将其转换为以下结构: 您可以将其定义为数组。我建议将其放入字符串结构中,这样您就只有一个数组: select unique_key, cast_number, date, [struct('block' as key, block as value), struct('iucr' as key, iucr as va

我试图在Bigquery中将平面表转换为嵌套表。 如果要获取一行,并将某些列转换为两个字段:

  • key.name
  • 键值
  • 例如,如果我在这张桌子上:

    我想将其转换为以下结构:


    您可以将其定义为数组。我建议将其放入字符串结构中,这样您就只有一个数组:

    select unique_key, cast_number, date,
           [struct('block' as key, block as value),
            struct('iucr' as key, iucr as value),
            struct('primary_type' as key, primary_type as value),
            . . .
           ] as key_values
    
    但对于你特别要求的:

    select unique_key, cast_number, date,
           ['block', 'iucr', 'primary_type', . . . ] as keys,
           [block, iucr, primary_type, . . . ] as values
    

    注意,这些假设值都是字符串。如果某些值不正确,您可能需要转换它们。

    完美!这就是我要找的。谢谢如何处理“数组不能有空元素;写入字段值时出错”?@LHA。我认为错误很明显。您需要删除该列,或者使用
    coalesce()
    给它一个不同的值。