json - 计数雪花中的 JSON 列
问题描述
我在 Snowflake 中有一个名为 HISTORY 的表,其中有一个名为 RECORD 且数据类型为 VARIANT 的列,该列包含 JSON 数据,我想为 HISTORY 表添加新列,该列计算 HISTORY 表每一行的 JSON 列(值),请帮忙。
解决方案
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;
推荐阅读
- javascript - 如何剥离 guid 的 URL 并用完直到 guid 以防万一在 Javascript/jquery 中切换?
- google-bigquery - 为什么我的 CASE WHEN 给了我一个 AGGREGATION 错误消息?
- redux - 不要订阅动作 ngxs
- caching - Github 页面是否具有从 API 访问和缓存最新版本的内置方式?
- vue.js - babel-standalone 不转译 esm 模块
- python - Python:关于计算 ARPU 的群组分析
- algorithm - 仅压缩静态数据的算法?
- python - 有没有办法删除组的特定内容?
- java - 如何从 Android 基本模块中的动态功能模块访问 Java 代码/库?
- javascript - 全局变量范围未应用于函数