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

SQL,从每组中的 json 字段中提取唯一值

postgreySQL 库表的第 1 列是 ID,用于排序;第 2 列是分类;第 3 列类似 json(非标准 json), 并存在重复项。

idcomponent_typecomponent_names
1INGESTION{ingestiona,atul, ingestiona, ingestionb}
2INGESTION{test_s3_prerit, atul}
3DQM{testmigration}
4SCRIPT{scripta,scripta,scripta,testimportscript,testimportscript,b,c,c,x}
5SCRIPT{testimportscript, scripta,scripta,a,a,b,b,c}
6SCRIPT{Script_Python,scripta,x}
7BUSINESS_RULES{s3_testH_Graph}
8EXPORT{Export2}

要求:用 Java 提取每组的唯一值,并使其位于原记录的原位置;或者说,按照原分组每条记录的顺序,自上而下依次删掉重复的项,唯一值保持原位。

component_typecomponent_names
INGESTION{ingestiona,atul,ingestionb}
INGESTION{test_s3_prerit}
DQM{testmigration}
SCRIPT{scripta,testimportscript,b,c,x}
SCRIPT{a}
SCRIPT{Script_Python}
BUSINESS_RULES{s3_testH_Graph}
EXPORT{Export2}

编写SPL代码

A 
1=post1.query("select component_type,component_names from tb order by id")
2=A1.run(#2=mid(#2,2,len(#2)-2).split@tc() )
3=A2.group@u(#1).(~.run( #2=(#2[-1]|#2).id@u() ).rvs().run(#2=#2\#2[1]))
4return A1.run(#2="{"+#2.concat@c()+"}")

A1:通过JDBC查询数据库。

A2:将每条记录的第 2 个字段拆分为多项。

A3:按第 1 列分组并保持原序,然后处理每组数据:按记录顺序累积各项,并去除重复;颠倒记录顺序;用本记录的累积结果和下条记录的累积结果求差集。

A4:恢复原字符串格式,并返回结果。

Java 集成 SPL 可参考 Java 如何调用 SPL 脚本

SPL开源地址


http://www.kler.cn/a/306920.html

相关文章:

  • 智能零售柜商品识别
  • 软件测试——认识测试
  • goframe开发一个企业网站 rabbitmq队例15
  • Kubernetes的基本构建块和最小可调度单元pod-0
  • 【前端】HTML标签汇总
  • C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
  • 鸿蒙开发基础
  • Rust Web开发框架对比:Warp与Actix-web
  • SpringBoot + MySQL + MyBatis 实操示例教学
  • 从冯唐的成事心法 看SAP协助企业战略落地到信息化
  • 车载软件架构 --- SOA设计与应用(上)
  • DAY20240913 VUE:深入解析 Vue Router 局部路由守卫:路由独享与组件内部守卫的妙用与区别
  • 自修C++PrimerPlus--类型转换、右值引用、引用中的类对象
  • 虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统
  • C++实现unordered_map和unordered_set
  • 【Kafka】分区与复制机制:解锁高性能与容错的密钥
  • 交换技术是一种在计算机网络和通信系统中广泛应用的关键技术,它主要通过交换设备(如交换机、路由器等)实现数据的转发和传输
  • VBA V3高级视频行为分析系统(含源码)
  • 数据库系统 第52节 数据库日志和恢复
  • 用Matlab求解绘制2D散点(x y)数据的最小外接圆、沿轴外接矩形
  • 代码随想录算法训练营第48天 | LeetCode739.每日温度、 LeetCode496.下一个更大元素I、 LeetCode503.下一个更大元素II
  • Linux 之 RPM [Red - Hat Package Manager]【包管理】
  • JavaScript 事件处理
  • Gateway Timeout504: 网关超时的完美解决方法
  • 【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】005 - Kernel 入口 C 函数 start_kernel() 源码分析
  • 【Webpack--007】处理其他资源--视频音频