【问题标题】:converting array of strings to single row values将字符串数组转换为单行值
【发布时间】:2018-10-03 13:38:31
【问题描述】:

我在 Big Query 表中有记录为
名称值
Aashis ["AB",AC"]
拉胡尔 ["AA",AD"]

这里name和value列为String类型

我希望输出为
名称值
阿希斯 AB
阿西斯空调
拉胡尔 AA
拉胡尔广告

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    以下是 BigQuery 标准 SQL

    #standardSQL
    SELECT name, value
    FROM `project.dataset.table`,
    UNNEST(value) value
    

    您可以使用您问题中的虚拟数据进行测试,如下所示

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 'Aashis' name, ["AB","AC"] value UNION ALL
      SELECT 'Rahul', ["AA","AD"]
    )
    SELECT name, value
    FROM `project.dataset.table`,
    UNNEST(value) value
    

    结果

    Row name    value    
    1   Aashis  AB   
    2   Aashis  AC   
    3   Rahul   AA   
    4   Rahul   AD     
    

    更新:列值是 String 类型,Unnest 接受数组。如何将此列转换为数组?

    见下例

    #standardSQL
    WITH `project.dataset.table` AS (
      SELECT 'Aashis' name, '["AB","AC"]' value UNION ALL
      SELECT 'Rahul', '["AA","AD"]'
    )
    SELECT name, value
    FROM `project.dataset.table`,
    UNNEST(SPLIT(REGEXP_REPLACE(value, r'^\[|]$', ''))) value   
    

    结果

    Row name    value    
    1   Aashis  "AB"     
    2   Aashis  "AC"     
    3   Rahul   "AA"     
    4   Rahul   "AD"     
    

    【讨论】:

    • 感谢米哈伊尔的回答。这里的列值为 String 类型,Unnest 接受数组。如何将此列转换为数组?
    • 您在问题中明确表示您有一个array of string。所以看起来这不是一个案例!我会尽快更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多