【问题标题】:How to extract array from JSON String in BigQuery如何从 BigQuery 中的 JSON 字符串中提取数组
【发布时间】:2021-10-13 14:47:40
【问题描述】:
Hi, I'm working on a table looks like below:
----------------------------------------------------------------------------------------------------------------------------------------------
|     user_id    |                       j_games_information                                                   
----------------------------------------------------------------------------------------------------------------------------------------------
|   hsbdgcy76s   |{"data": [{"game_id": "acb", "rewards":[{"no":3,"items":"oils"}]},{"game_id": "bsm", "rewards":[{"no":4,"items":"bombs"}]}]}    
----------------------------------------------------------------------------------------------------------------------------------------------
|   kslcn6vg76   |{"data": [{"game_id": "ohf", "rewards":[{"no":6,"items":"oils"}]},{"game_id": "dfg", "rewards":[{"no":7,"items":"bombs"}]}]}   
----------------------------------------------------------------------------------------------------------------------------------------------

我的预期输出将是:

-----------------------------------
|     user_id    |     game_ids   |                                             
-----------------------------------
|   hsbdgcy76s   |      acb       |   
-----------------------------------
|   hsbdgcy76s   |      bsm       |   
-----------------------------------
|   kslcn6vg76   |      ohf       |   
-----------------------------------
|   kslcn6vg76   |      dfg       |   
-----------------------------------

我尝试了以下代码,但此查询未返回任何结果。谁能帮我这个?谢谢!

select user_id, JSON_EXRACT_SCALAR(json_array,"$.game_id") AS game_ids
from table, unnest(json_extract_array(j_games_information,"$.data")) AS json_array

但是

【问题讨论】:

    标签: arrays json google-bigquery


    【解决方案1】:

    尝试用j_games_information替换json_file

    with mytable as (
        select 'hsbdgcy76s' as user_id, '{"data": [{"game_id": "acb", "rewards":[{"no":3,"items":"oils"}]},{"game_id": "bsm", "rewards":[{"no":4,"items":"bombs"}]}]}' as j_games_information union all 
        select 'kslcn6vg76' as user_id, '{"data": [{"game_id": "ohf", "rewards":[{"no":6,"items":"oils"}]},{"game_id": "dfg", "rewards":[{"no":7,"items":"bombs"}]}]}' as j_games_information
    )
    select user_id, JSON_EXTRACT_SCALAR(json_array,"$.game_id") AS game_ids
    from mytable, unnest(json_extract_array(j_games_information,"$.data")) AS json_array
    

    【讨论】:

    • Ops,我实际上使用了j_games_information。
    • 嗯,你的查询对我有用
    猜你喜欢
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多