【问题标题】:Querying List in Snowflake在雪花中查询列​​表
【发布时间】:2021-10-02 21:00:53
【问题描述】:

我在 Snowflake 中有一张如下表

+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|attrs          |options                                                                                                                                                                                                                                                                                            |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|acct           |[{"key":"spencer","val":"spencer"},{"key":"mart","val":"mart"},{"key":"red-fin","val":"-"}]                                                                                                                                                                                                        |
|fav_activity   |[{"key":"movie","val":"movie"},{"key":"books","val":"books"},{"key":"music","val":"music"},{"key":"swimming","val":"swimming"},{"key":"games","val":"games"},{"key":"team","val":"team"},{"key":"food","val":"food"},{"key":"steam-room","val":"\"steam room\""},{"key":"hiking","val":"hiking"}]  |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

现在我需要比较字典列表的每个键和值,并只返回键/值不同的字典的键。

例如,查看 attrs acct - 列表中有 3 个字典。前两个字典的键和值是相同的,但第三个具有不同的键/值。所以我需要返回第三个字典的键red-fin

预期输出:

+---------------+------------+
|attrs          |result      |
+---------------+------------+   
|acct           |red-fin     |
|fav_activity   |steam-room  |
+---------------+------------+  

谁能帮我在雪花中做这个。

提前致谢。

【问题讨论】:

    标签: snowflake-cloud-data-platform snowflake-schema snowflake-sql


    【解决方案1】:

    你只需要展平和比较。

    这解决了示例测试用例:

    with data as (
    select $1 attrs, parse_json($2) options   
    from values ('acct', '[{"key":"spencer","val":"spencer"},{"key":"mart","val":"mart"},{"key":"red-fin","val":"-"}]')
    , ('fav_activity', '[{"key":"movie","val":"movie"},{"key":"books","val":"books"},{"key":"music","val":"music"},{"key":"swimming","val":"swimming"},{"key":"games","val":"games"},{"key":"team","val":"team"},{"key":"food","val":"food"},{"key":"steam-room","val":"\\"steam room\\""},{"key":"hiking","val":"hiking"}]')
    )
    
    select attrs, k.value:key
    from data, table(flatten(options)) k
    where k.value:key!=k.value:val
    ;
    

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 2023-02-15
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多