当前位置: 首页 > news >正文

SQL脚本--捞json数据

将JSON格式的订单数据转换为离线分析表。原始数据存储在order_data表中,包含嵌套的ext_info数组。通过使用Hive SQL的LATERAL VIEW EXPLODE和from_json函数解析JSON数组,并按不同费率(0.90/0.95/0.99)分组统计票券数量和ID列表。最终生成order_rate_data表,包含order_id、user_id、create_date以及各费率对应的count和ticketIds字段。这种方法适用于将复杂JSON数据转换为便于数据分析。

order_data表字段,order_id,user_id,create_date,update_date,use_case,ext_info;
数据:

{"order_id":10002389,"userId": 23984,"useCase": "测试环境","create_date": "2025-08-07 12:30:23","update_date": "2025-08-07 12:30:23","extInfo": [{ "count": 1, "rate": "0.99", "ticketIds": [1009348] },{ "count": 1, "rate": "0.95", "ticketIds": [1009348] },{ "count": 4, "rate": "0.90", "ticketIds": [1009348, 100439849, 1008438, 10094782] }
]
}

需要根据需要转换成离线表数据,order_rate_data:order_id,user_id,create_date,0.99_count,0.99_ticketIds…

sql脚本如下:

select order_id,user_id,create_date,
MAX(CASE WHEN rate='0.90' THEN `count` END) AS `90_count`,
MAX(CASE WHEN rate='0.90' THEN `ticketIds` END) AS `90_ids`,
MAX(CASE WHEN rate='0.95' THEN `count` END) AS `95_count`,
MAX(CASE WHEN rate='0.95' THEN `ticketIds` END) AS `95_ids`,
MAX(CASE WHEN rate='0.99' THEN `count` END) AS `99_count`,
MAX(CASE WHEN rate='0.99' THEN `ticketIds` END) AS `99_ids`
FROM(
SELECT ei.count AS count,ei.rate AS rate,array_join(ei.ticketIds,',') AS ticketIds, t.order_id,t.user_id,t.create_date
FROM order_data t
LATERAL VIEW EXPLODE(from_json(t.ext_info, 'array<struct<count:BIGINT, rate:STRING, ticketIds:array<BIGINT>>>')
) ext_info AS ei
where is_delete=0
) view_data
group by order_id,create_date,user_id
http://www.dtcms.com/a/327855.html

相关文章:

  • 【SpringBoot】08 容器功能 - SpringBoot底层注解汇总大全
  • CPPIO流
  • 熟悉并使用Spring框架 - XML篇
  • 深度学习自动并行技术:突破计算瓶颈的智能调度艺术
  • Qwen-OCR:开源OCR技术的演进与全面分析
  • 机器学习-决策树(上)
  • 小黑课堂计算机一级WPSOffice题库安装包1.44_Win中文_计算机一级考试_安装教程
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-会议记录
  • 91、23种经典设计模式
  • STM32即插即用HAL库驱动系列——4位串行数码管显示
  • Pandas数据处理与分析实战:Pandas数据处理与分析入门-选择与过滤
  • uniapp -- 小程序处理与设备通讯 GBK/GB2312 编码问题。
  • 记一次 .NET 某汽车控制焊接软件 卡死分析
  • 腾讯云terraform学习教程
  • 传输线的效应
  • 【MAUI】在 .NET MAUI 中实现全局异常捕获的完整指南
  • 五、Nginx、RabbitMQ和Redis在Linux中的安装和部署
  • DAY41 简单CNN
  • PostgreSQL——数据查询
  • PyCharm Community 2024.2.3.exe 安装教程(详细步骤,附安装包下载)
  • Docker守护进程安全加固在香港VPS环境的操作标准
  • vue3使用插槽写一个自定义瀑布列表
  • 海康视觉相机驱动软件参数配置
  • 用 Docker 安装并启动 MySQL:从零到实战的完整指南
  • vivo Pulsar 万亿级消息处理实践(2)-从0到1建设 Pulsar 指标监控链路
  • 人工智能与金融:金融行业的革新
  • 计算机网络摘星题库800题笔记 第3章 数据链路层
  • linux Phy驱动开发之mido总线介绍
  • 打印流水号标签
  • 三防手机和防爆手机的本质区别是什么?