【问题标题】:SNOWFLAKE querying the array of elementsSNOWFLAKE 查询元素数组
【发布时间】:2020-12-21 22:27:00
【问题描述】:

我正在使用 SNOW_FLAKE 并尝试查询以列名 nested_colmn 下的元素数组形式存储的数据,例如:

nested_colmn
[
  {
    "firstKey": "val1",
    "secondKey": 2555,
    "thirdKey": false,
    "fourthkey": "otrvalue"
  },
  {
    "firstKey": "val2",
    "secondKey": 255221,
    "thirdKey": true,
    "fourthkey": "otrvalu"
  }
]

如果我这样做,上面的数组将作为一个完整的行返回

Select nested_colmn from table_name

现在我只想从属性列中查询/获取 firstkey(nested_colmn.firstkey) 的结果。如何构建查询以从数组中检索单个自定义元素,而不是全部获取。如果对此有任何想法,请帮助我

【问题讨论】:

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


    【解决方案1】:

    注意:我假设您确实希望源表将数组作为值,而不是剥离外部数组并将每个元素放入自己的行中。

    首先,使用您的示例数据创建一个测试表:

    CREATE OR REPLACE TEMPORARY TABLE table_name (
      nested_colmn  VARIANT
    )
    AS
      SELECT PARSE_JSON($1) AS nested_colmn
        FROM VALUES
               ($$
    [
      {
        "firstKey": "val1",
        "secondKey": 2555,
        "thirdKey": false,
        "fourthkey": "otrvalue"
      },
      {
        "firstKey": "val2",
        "secondKey": 255221,
        "thirdKey": true,
        "fourthkey": "otrvalu"
      }
    ]
    $$)
    ;
    

    有了这个,这里是一个示例查询:

    SELECT F.VALUE:"firstKey"::VARCHAR AS FIRST_KEY
      FROM table_name T
          ,LATERAL FLATTEN(nested_colmn) F
    ;
    

    【讨论】:

      【解决方案2】:

      您将需要在数组上运行横向展平,然后解析 JSON:

      WITH x as (
      SELECT array_construct(parse_json('
        {
          "firstKey": "val1",
          "secondKey": 2555,
          "thirdKey": false,
          "fourthkey": "otrvalue"
        }'),parse_json('
        {
          "firstKey": "val2",
          "secondKey": 255221,
          "thirdKey": true,
          "fourthkey": "otrvalu"
        }')) as var)
      SELECT p.value:firstKey::varchar
      FROM x,
      lateral flatten(input => x.var) p;
      

      【讨论】:

        猜你喜欢
        • 2021-06-19
        • 1970-01-01
        • 1970-01-01
        • 2020-11-13
        • 2011-03-19
        • 2014-05-21
        • 1970-01-01
        • 2019-08-09
        • 2013-11-03
        相关资源
        最近更新 更多