1

我正在尝试从该特定记录的 json 列中没有某些键的雪花中获取记录数。

下面是雪花表的样子:

EMP_ID|DEPARTMENT_NAME|EID|DETAILS
EMP10001 | Finance |10008918 |{                                                                                 
"name": "Alec George",                                                        
"Year_Joined": "2013",
"Ready_to_transfer":  "no",
"Ready_to_permanently_WFH":  "yes",
}

现在我想在雪花表的详细信息列中计算没有以 Ready_ 开头的键的记录,并按 Department_Name 分组计数。

注意:详细信息中可以有多个以 Ready_ 开头的键。

目前正在发生的事情是我的计数查询正在返回键以 Ready_ 开头的记录也被列出。

4

1 回答 1

2

您可以展平以获取所有键,然后对于每条记录,您可以计算以所需字符串开头的键的数量:

with data as (
select $1 emp_id, $2 dep, $3 eid, parse_json($4) details
from (values
('EMP10001','Finance', 10008918, '{
"name": "Alec George",
"Year_Joined": "2013", "Ready_to_transfer": "no", "Ready_to_permanently_WFH": "yes", }')
,('EMP10002','Finance', 10008918, '{
"name": "Alex George",
"Year_Joined": "2013", }')
)
)

select seq, count_if(detail.key like 'Ready_%') how_many_ready
from data, table(flatten(details)) detail
group by 1
;

在此处输入图像描述

然后,您只需要计算计数 > 0 的元素的数量。

于 2021-07-14T20:27:54.487 回答