Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform Snowflake从包含嵌套字典列表的列中获取每个键/值_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform Snowflake从包含嵌套字典列表的列中获取每个键/值

Snowflake cloud data platform Snowflake从包含嵌套字典列表的列中获取每个键/值,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我有一个名为monthly_stats VARCHAR type的列,其中包含以下词典列表: [{"id": 123, "quantity_booked": "12", "budget_booked": "112", "budget_booked_loc": "36.428571"}, {"id": 128811

我有一个名为monthly_stats VARCHAR type的列,其中包含以下词典列表:

    [{"id": 123, "quantity_booked": "12", "budget_booked": "112", "budget_booked_loc": "36.428571"}, 
        {"id": 1288119, "quantity_booked": "1703.3", "budget_booked": "58.694684",
     "budget_booked_loc": "43.434066"}, {"id": 233, "quantity_booked": "1648.35",
 "budget_booked": "56.801307", "budget_booked_loc": "42.032967"}]
我尝试了以下查询:

 with org_table as (             
    select
    parse_json(monthly_stats) as m
    from my_table
) 
    select
    m[0]:id::integer as monthly_budgets_id,
    from org_table);

但这仅选择字典列表中的第一个id。如何获取每个字典中的每个id?

请阅读以下文章,这可能会有所帮助:


您可以使用“展平”在数组上进行迭代:

以我的桌子为例 选择 “[{id:123,登记数量:12,登记预算:112,登记预算:36.428571}, {id:1288119,预订数量:1703.3,预订预算:58.694684, 预算登记地址:43.434066,{id:233,登记数量:1648.35, 预算记录:56.801307,预算记录:42.032967 ,org_表为 选择parse_jsonmonthly_stats作为m 从我的桌子上 选择x.value:id,x.value:budget\U booked 从org_表,TableFlattm x;
您可以使用“横向展平”进行如下尝试:


这是可行的,但当我运行它时,它给了我重复的值18:从我的_new_表中选择DISTINCT id,count*;其中id='296467'由1分组;
set teststring = '[{"id": 123, "quantity_booked": "12", "budget_booked": "112", "budget_booked_loc": "36.428571"},
                    {"id": 1288119, "quantity_booked": "1703.3", "budget_booked": "58.694684", "budget_booked_loc": "43.434066"}]';


 with org_table as (
    select
    parse_json($teststring) as m
)
    select
    flattened.value:id as id
    from org_table,
    lateral flatten( input => m ) as flattened;