【问题标题】:Count JSON column in Snowflake计数雪花中的 JSON 列
【发布时间】:2021-08-10 20:33:37
【问题描述】:

我在 Snowflake 中有一个名为 HISTORY 的表,其中有一个名为 RECORD 且数据类型为 VARIANT 的列,此列中包含 JSON 数据,我想为 HISTORY 表添加新列,该列计算每行的 JSON 列(值) HISTORY 表,请帮忙。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我试过 select Count(RECORD:"F000 Start Date") from "MULESOFT_DEV"."SURVEY_RESULTS"."SURVEY_RESPONSES_HISTORICAL_DATA_BackUp" ,但是这个查询为我返回 1 因为这是第一个键值文件,但我想要所有(计算文件中的所有键值)
  • 您要计算一级键还是嵌套键? JSON 可以嵌套在里面,所以像这样的简单 COUNT 不起作用。您也许可以使用 Javascript stored procedure 获得该计数

标签: json snowflake-cloud-data-platform


【解决方案1】:

Json 数据开头如下:

{"prizes":
   [ {"year":"2018", 
         "category":"physics",  
         "laureates":[ {"id":"960","firstname":"Arthur","surname":"Ashkin"}
                                    , { "id":"961","firstname":"G\u00e9rard","surname":"Mourou"  }
                                  ]
       },
      ...
   ]
} 

首先将数据展平到我需要的最低级别(获奖者),然后应用于“年份”元素,该元素比获奖者元素高一级。如果需要,您还可以过滤最低级别的列。

select 
count(*)
from NobelPrizeJson
, lateral flatten(INPUT=>json:prizes) prizes
, lateral flatten(INPUT=>prizes.value:laureates) laureates
 where prizes.value:year::int  > 2010;

这是张贴在: https://community.snowflake.com/s/question/0D50Z00008xAQSY/i-have-a-query-that-counts-the-number-of-objects-inside-a-large-json-document-and-now-i-need-to-filter-on-only-objects-with-a-specific-keyvalue-pair-inside-those-objects-how-can-i-filter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 2023-02-15
    • 2021-08-01
    • 2020-07-29
    相关资源
    最近更新 更多