【问题标题】:Is there a pandas split(expand=True) equivalent in Bigquery function?Bigquery 函数中是否有等效的 pandas split(expand=True) ?
【发布时间】:2021-10-22 12:18:16
【问题描述】:

我正在尝试在 BigQuery 中重现以下示例:

从表格开始:

ROW                                    VALUE
0                                        AAA
1                                        BBB
2                                     CCC ~ DDD

我想在 BigQuery 中重现以下行为:

df["VALUE"].str.split("~",expand=True)

返回:

       0             1            
0     AAA          None         
1     BBB          None         
2     CCC          DDD

有没有办法在 BigQuery 中实现这一点?

到目前为止,我有以下查询:

SELECT SPLIT(VALUE, "~")
FROM my_dataset.my_table

但它会返回:

Row     f0_     
1   683600749R
    ______________
2   284A92167R
    ______________
3   281150577R 
    
    281154695R
    ______________

虽然我想拥有:

Row     f0_           f1_
1   683600749R      None
    ____________________________
2   284A92167R      None
    ____________________________
3   281150577R      281154695R
    ____________________________

【问题讨论】:

    标签: pandas dataframe google-bigquery


    【解决方案1】:

    这不是一个完美的解决方案,但要获得拆分的第 1 部分和第 2 部分,您可以编写:

    with tab1 as (
        SELECT NULL as col1
            UNION ALL
        SELECT 'AAA' as col1
            UNION ALL 
        SELECT 'BBB' as col1
            UNION ALL 
        SELECT 'CCC ~ DDD'as col1
    )
    SELECT 
    col1,
    SPLIT(col1, "~")[OFFSET(0)] AS part_1,
    CASE 
        WHEN ARRAY_LENGTH(SPLIT(col1, "~")) < 2 THEN NULL 
        ELSE SPLIT(col1, "~")[OFFSET(1)] 
        END AS part_2
    FROM tab1
    
    # output
    Row    col1     part_1    part_2
    1    null    null    null
    2    AAAA    AAAA    null
    3    BBBB    BBBB    null
    4    CCC ~ DDDD    CCC    DDD
    

    如果您不使用 CASE WHEN 来获取 OFFSET(1),当 SPLIT 不会(至少)生成两个部分时,您将收到错误 Array index 1 is out of bounds

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      相关资源
      最近更新 更多