starrocks中的json解析

LATERAL 作用

允许子查询或表函数访问主查询的列。
支持对每一行执行子查询,返回与该行相关的结果。
常用于展开数组、JSON、或者调用表函数

运用测试

with t1 as (SELECT json_array(1, true, 'starrocks', 1.1) as ja )
SELECT
parse_json(a.value)  as value 
,*
from t1,LATERAL JSON_EACH(ja) a ; 

在这里插入图片描述

运用举例

INSERT into dwd.`dwd_cust_exp_user_task_event_detail_di` 
with base_data as (
SELECT
	ds 
	,extend_params
	,anonymous_id
	,serial_no 
	,event_name 
from ods.ods_unity_traffic_log_di
where ds='2025-07-02' and event_name in( 'task_expose','task_verify_click')
), task_verify_click as (
SELECT
	ds 
	,get_json_string(extend_params,'$.task_id')    as task_key
	,anonymous_id
	,serial_no 
	,event_name 
from base_data 
where event_name = 'task_verify_click'
), task_keys as (
SELECT
	ds 
	,json_query(parse_json(extend_params),'$.expose_list')    as tks 
	,anonymous_id
	,serial_no 
	,event_name 
from base_data
where  event_name  =  'task_expose'
),details as (
SELECT 
	ds 
	,anonymous_id
	,serial_no 
	,event_name 
	,parse_json(data.value) detail  
from task_keys, LATERAL JSON_EACH(tks) data
), expose_every as (
SELECT
	ds 
	,get_json_string(d.detail,'$.task_id') as task_key 
	,anonymous_id
	,serial_no  
	,event_name 
from details d 
), rest_data as (
SELECT 
	ds,task_key,anonymous_id,serial_no,event_name
from expose_every
union all 
SELECT
	ds,task_key,anonymous_id,serial_no,event_name
from expose_every
), task_config as (
SELECT 
	id  as task_id 
	,task_type
	,task_key 
from ods.`ods_sosponge_activity_task_s_task_config` 
where ds='2025-07-02' and  activity_type = 0  -- 代表是 exp活动
and enable_flag = 0
)SELECT
 ds 
 ,t2.task_id 
--  ,t1.task_key 
 ,t2.task_type 
 ,t1.event_name 
 ,bitmap_hash(anonymous_id)   as anonymous_id_bitmap
 ,bitmap_hash(serial_no)  as view_bitmap
from  rest_data  t1 
LEFT JOIN task_config t2 
on t1.task_key = t2.task_key
where t2.task_id is not null  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值