首页 > 解决方案 > 计数雪花中的 JSON 列

问题描述

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

在此处输入图像描述

标签: jsonsnowflake-cloud-data-platform

解决方案


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-c​​ounts-the-number-of-objects-inside-a-large-json-document -现在我需要在仅对象上使用特定键值对在这些对象内部过滤器如何过滤器


推荐阅读