ES数据处理方法

由于日志数据存在ES项目里,需要从ES中获取日志进行分析,使用SQL数据进行处理,如下:

select

     traceid--    STRING   COMMENT '流程id',

    ,appnum  --   BIGINT   COMMENT '迭代号',

    ,appversion --STRING   COMMENT 'APP版本',    

    ,appcode   -- STRING   COMMENT '应用编码',

    ,type     --  STRING   COMMENT '类型',

    ,spanid   --  STRING   COMMENT '模块id',  

    ,apptype   -- STRING   COMMENT '应用类型详情见定义',

    ,eventtime -- DATETIME COMMENT '日期',

    ,name      -- STRING   COMMENT '名称',

    ,id        -- STRING   COMMENT 'id',

    ,theid     -- STRING   COMMENT 'theId'  

    ,preid

    -------------data----------------    

    ,GET_JSON_OBJECT(data_tmp,'$.allInOne') AS allInOne  

    ,GET_JSON_OBJECT(data_tmp,'$.class')      AS class

    ,GET_JSON_OBJECT(data_tmp,'$.classCode')      AS classCode

    ,GET_JSON_OBJECT(data_tmp,'$.deviceId')     AS deviceId

    ,GET_JSON_OBJECT(data_tmp,'$.grade')   AS grade

    ,GET_JSON_OBJECT(data_tmp,'$.gradeCode') AS gradeCode

    ,GET_JSON_OBJECT(data_tmp,'$.handleTime') AS handleTime

    ,GET_JSON_OBJECT(data_tmp,'$.heigth') AS heigth

    ,cast(ipint(GET_JSON_OBJECT(json_build,'$.ip')) as string) AS ipAddr

    ,GET_JSON_OBJECT(data_tmp,'$.isSuccess') AS isSuccess     --isSuccess(1.是 0否)

    ,GET_JSON_OBJECT(data_tmp,'$.loginMode') AS loginMode     -- 登陆模式 1 游客登陆 2 账户登陆

    ,GET_JSON_OBJECT(data_tmp,'$.loginType') AS loginType     -- 登陆方式 1:在线登陆 2 离线登陆

    ,GET_JSON_OBJECT(data_tmp,'$.school') AS school

    ,GET_JSON_OBJECT(data_tmp,'$.schoolCode') AS schoolCode  

    ,GET_JSON_OBJECT(data_tmp,'$.width') AS width

    ,GET_JSON_OBJECT(data_tmp,'$.subject') AS subject

    ,GET_JSON_OBJECT(data_tmp,'$.subjectCode') AS subjectCode

    ,GET_JSON_OBJECT(data_tmp,'$.classTime') AS classTime

    ,GET_JSON_OBJECT(data_tmp,'$.reason') AS reason

    ,GET_JSON_OBJECT(data_tmp,'$.operateVersion') AS operateVersion  

    ----------新增---------

    ,CASE WHEN GET_JSON_OBJECT(data_tmp,'$.userId')  is not NULL THEN GET_JSON_OBJECT(data_tmp,'$.userId')

          WHEN GET_JSON_OBJECT(data_tmp,'$.teacherCode') is not null THEN  GET_JSON_OBJECT(data_tmp,'$.teacherCode')

          ELSE  GET_JSON_OBJECT(data_tmp,'$.userId')

     END  AS userId          

    ,GET_JSON_OBJECT(data_tmp,'$.userName') AS userName

    ,GET_JSON_OBJECT(data_tmp,'$.userType') AS userType

    ,GET_JSON_OBJECT(data_tmp,'$.account') AS account

    ,GET_JSON_OBJECT(data_tmp,'$.courseId') AS courseId  

    ,GET_JSON_OBJECT(data_tmp,'$.pageName') AS pageName  

    ,GET_JSON_OBJECT(data_tmp,'$.pageTitle') AS pageTitle  

    ,CASE    WHEN GET_JSON_OBJECT(data_tmp,'$.describe') is not NULL  THEN GET_JSON_OBJECT(data_tmp,'$.describe')

             WHEN GET_JSON_OBJECT(data_tmp,'$.eventDesc') is not NULL  THEN GET_JSON_OBJECT(data_tmp,'$.eventDesc')

             ELSE  ''

             END AS  describes    

    ,GET_JSON_OBJECT(data_tmp,'$.source') AS source      

    ,GET_JSON_OBJECT(data_tmp,'$.topDistance') AS topDistance  

    ,GET_JSON_OBJECT(data_tmp,'$.size') AS sizes  

   ---------------json_build--------------------

    ,GET_JSON_OBJECT(json_build,'$.sysVersion')   AS sysVersion    

    ,GET_JSON_OBJECT(json_build,'$.cpuType')     AS cpuType  

    ,GET_JSON_OBJECT(json_build,'$.memory') AS memory

    ,GET_JSON_OBJECT(json_build,'$.netType') AS netType

    ,GET_JSON_OBJECT(json_build,'$.sysName') AS sysName

    ,GET_JSON_OBJECT(json_build,'$.deviceModel') AS deviceModel

    ,GET_JSON_OBJECT(json_build,'$.deviceNo') AS deviceNo  

   -------------------新增--------------------

   ,GET_JSON_OBJECT(json_build,'$.screenHeight') AS screenHeight  

   ,GET_JSON_OBJECT(json_build,'$.screenWidth') AS screenWidth  

   ,GET_JSON_OBJECT(json_build,'$.browserName') AS browserName

   ,GET_JSON_OBJECT(json_build,'$.browserVersion') AS browserVersion

   ,GET_JSON_OBJECT(json_build,'$.browserWidth') AS browserWidth

   ,GET_JSON_OBJECT(json_build,'$.browserHeight') AS browserHeight

   ,GET_JSON_OBJECT(json_build,'$.ip') AS ip

   ,GET_JSON_OBJECT(json_build,'$.remoteIp') AS remoteIp

   ,GET_JSON_OBJECT(data_tmp,'$.actionName') AS actionName

   ,GET_JSON_OBJECT(data_tmp,'$.finishStatus') AS finishStatus

   ,GET_JSON_OBJECT(data_tmp,'$.isFirst') AS isFirst

   ,GET_JSON_OBJECT(data_tmp,'$.bankType') AS bankType

   ,GET_JSON_OBJECT(data_tmp,'$.book') AS book

   ,GET_JSON_OBJECT(data_tmp,'$.mode') AS mode

   ,GET_JSON_OBJECT(data_tmp,'$.chapter') AS chapter

   ,GET_JSON_OBJECT(data_tmp,'$.result') AS result

   ,GET_JSON_OBJECT(data_tmp,'$.knowledgeCount') AS knowledgeCount

   ,GET_JSON_OBJECT(data_tmp,'$.questCount') AS questCount

   ,GET_JSON_OBJECT(data_tmp,'$.scoreType') AS scoreType

   ,GET_JSON_OBJECT(data_tmp,'$.scoreModule') AS scoreModule

   ,GET_JSON_OBJECT(data_tmp,'$.appName') AS appName

   ,GET_JSON_OBJECT(data_tmp,'$.voteNumber') AS voteNumber

   ,GET_JSON_OBJECT(data_tmp,'$.perVoteNubmer') AS perVoteNubmer

   ,GET_JSON_OBJECT(data_tmp,'$.type') AS attributeType

--- 新增 2022-12-09 ----

   ,GET_JSON_OBJECT(data_tmp,'$.loginTypeName') AS loginTypeName

   ,GET_JSON_OBJECT(data_tmp,'$.name') AS noteName

   ,GET_JSON_OBJECT(data_tmp,'$.notes') AS notes

   ,GET_JSON_OBJECT(data_tmp,'$.pageNum') AS pageNum

   ,GET_JSON_OBJECT(data_tmp,'$.color') AS color  

   ,GET_JSON_OBJECT(data_tmp,'$.event') AS event

   ,GET_JSON_OBJECT(data_tmp,'$.date') AS  switchDate

   ,GET_JSON_OBJECT(data_tmp,'$.input') AS  inputValue  

   ,GET_JSON_OBJECT(data_tmp,'$.title') AS  title

   ,GET_JSON_OBJECT(data_tmp,'$.fileName') AS  fileName   --文件名

-- 1.文档:doc、docx、PDF

-- 2.音频:WAV、ape、AIFF、CD、AU、MP3、WMA、VQF、FLAC、MIDI、Ogg、U-Law、VOC、aac、RA/.RM/.RAM

-- 3.视频:avi、MOV/.QT、MKV、MP4、WMV、MPEG、BD、HDVD、RMVB、PROPER、R5、Watermarks、TS、DAT、SWF、ASF、3GP、FLV、HDRIP、IMAX

-- 4.课件:ppt、pptx、pps、ppsx、ppa、ppam、pot、potx、thmx

-- 5.图片:Webp、BMP、PCX、TIF、GIF、JPEG、TGA、EXIF、FPX、SVG、PSD、CDR、PCD、DXF、UFO、EPS、AI、PNG、HDRI、RAW、WMF、FLIC、EMF、ICO

-- 6.表格:xls、csv、CSS、XPS、xlsm、et、

-- 7.压缩包:RAR、ZIP、ARJ、Z、LZH、JAR

-- 8.其他

   ,GET_JSON_OBJECT(data_tmp,'$.fileId') AS  fileId      

   ,GET_JSON_OBJECT(data_tmp,'$.fileNames') AS  fileNames  

   ,GET_JSON_OBJECT(data_tmp,'$.beginDate') AS  beginDate    

   ,GET_JSON_OBJECT(data_tmp,'$.endDate') AS  endDate  

   ,GET_JSON_OBJECT(data_tmp,'$.questionId') AS  questionId   --题号

   ,GET_JSON_OBJECT(data_tmp,'$.packageName') AS  packageName  

   ,GET_JSON_OBJECT(data_tmp,'$.versionName') AS  versionName    

   ,GET_JSON_OBJECT(data_tmp,'$.versionCode') AS  versionCode

   ,GET_JSON_OBJECT(data_tmp,'$.jobId') AS  jobId

   ,GET_JSON_OBJECT(data_tmp,'$.answer') AS  answer

   ,GET_JSON_OBJECT(data_tmp,'$.wrong') AS  wrong    

   ,GET_JSON_OBJECT(data_tmp,'$.correct') AS  correct

   ,GET_JSON_OBJECT(data_tmp,'$.unanswered') AS  unanswered  

   ,GET_JSON_OBJECT(data_tmp,'$.finishNumber') AS  finishNumber  

   ,GET_JSON_OBJECT(data_tmp,'$.totalNumber') AS  totalNumber  

   ,GET_JSON_OBJECT(data_tmp,'$.word') AS  word  

   ,GET_JSON_OBJECT(data_tmp,'$.msg') AS  msg  

   ,GET_JSON_OBJECT(data_tmp,'$.count') AS  impCount  

   ,GET_JSON_OBJECT(json_build,'$.pageHeight') AS pageHeight   --页面高度

   ,GET_JSON_OBJECT(data_tmp,'$.answers') AS  answers --答题情况

   --新增--

   ,GET_JSON_OBJECT(data_tmp,'$.num') AS  num --题目数量

   ,GET_JSON_OBJECT(data_tmp,'$.op') AS  op --随机选人 选项 op(清除(NULL)、A、B、C) op(不随机(0)、1、2、3)

   ,GET_JSON_OBJECT(data_tmp,'$.leaveTime') AS  leaveTime --收卷倒计时

   ,GET_JSON_OBJECT(data_tmp,'$.examId') AS  examId --考试id

   ,GET_JSON_OBJECT(data_tmp,'$.id') AS  idCode --id,用英文逗号隔开,组code

   ,GET_JSON_OBJECT(data_tmp,'$.code') AS  code --对调学生

   ,GET_JSON_OBJECT(data_tmp,'$.rol') AS  rol --对调学生 位置rol

   ,GET_JSON_OBJECT(data_tmp,'$.col') AS  col --对调学生 位置col

   ,GET_JSON_OBJECT(data_tmp,'$.stage') AS  stage --学段

   ,GET_JSON_OBJECT(data_tmp,'$.version') AS  versions --学段

--    ,GET_JSON_OBJECT(data_tmp,'$.type') AS  见 attributeType --类型 type(1.批注作答 2.画板作答)

  -- ,GET_JSON_OBJECT(data_tmp,'$.actionName') AS actionName      --活动名称

  -- ,GET_JSON_OBJECT(data_tmp,'$.answer') AS  answer    --答案

   --,GET_JSON_OBJECT(data_tmp,'$.color') AS  color --颜色

  -- ,GET_JSON_OBJECT(data_tmp,'$.finishNumber') AS  finishNumber --找到的数量

   --,GET_JSON_OBJECT(data_tmp,'$.totalNumber') AS  totalNumber --总词数

  -- ,GET_JSON_OBJECT(data_tmp,'$.word') AS  word --未答数

  -- `completionStatus` varchar(100) DEFAULT NULL COMMENT '完成情况',

 -- ,GET_JSON_OBJECT(data_tmp,'$.event') AS  event --收起/展开事件

  --,GET_JSON_OBJECT(data_tmp,'$.fileId') AS  fileId --云端文件ID

  --,GET_JSON_OBJECT(data_tmp,'$.fileNames') AS  fileNames --文件名列表

  --,GET_JSON_OBJECT(data_tmp,'$.fileName') AS  fileName --文件名

  --,GET_JSON_OBJECT(data_tmp,'$.date') AS    dates --日期筛选类型

  --,GET_JSON_OBJECT(data_tmp,'$.result') AS  isfinish --完成情况 result:true/false

 -- ,GET_JSON_OBJECT(data_tmp,'$.input') AS  inputValue --输入值

  --,GET_JSON_OBJECT(data_tmp,'$.jobId') AS  jobId --作业ID

  --,GET_JSON_OBJECT(data_tmp,'$.name') AS  name --名称

  --,GET_JSON_OBJECT(data_tmp,'$.questionId') AS  questionId --题目ID

  --`jobType` varchar(50) DEFAULT NULL COMMENT '作业类型',

  --`noteName` varchar(50) DEFAULT NULL COMMENT '笔记本名称',

  --`signName` varchar(100) DEFAULT NULL COMMENT '标签名',  

  --`switchDate` datetime DEFAULT NULL COMMENT '日期切换日期值',

  --`thickNess` varchar(10) DEFAULT NULL COMMENT '粗细值',

  --`timeSlot` varchar(10) DEFAULT NULL COMMENT '时间段',

  --`toolName` varchar(50) DEFAULT NULL COMMENT '工具名称',

  --`wrongBookName` varchar(50) DEFAULT NULL COMMENT '错题本名称',

--  ,GET_JSON_OBJECT(json_build,'$.loginTypeName') AS appcode

--    ,GET_JSON_OBJECT(json_build,'$.appVersion') AS appVersion

,createtime  --创建时间

from (

select  theid,

                    id,

                    name,

                    eventtime,

                    apptype,

                     regexp_replace(regexp_replace(regexp_replace(build,'^\\[',''),'\\]$',''),'},\\{','}|{') AS json_build,

                    spanid,

                    type,

                    appcode,

                    regexp_replace(regexp_replace(regexp_replace(data,'^\\[',''),'\\]$',''),'},\\{','}|{') AS json_data,

                    appversion,

                    appnum,

                    preid,

                    traceid,

                    createtime

                     from  dw_es_action_log_inc_new

                    WHERE

                   --  DATETRUNC(eventtime,'hh') >=  DATETRUNC(dateadd(TO_DATE('${cyctime}','yyyymmddhhmiss'), -1, 'hh'),'hh')     or    

                   

                     DATETRUNC(createtime,'DD') >=  DATETRUNC(TO_DATE('${bizdate}','yyyymmdd'),'DD')  --测试使用            

) a0

lateral view explode(split(json_data,'\\|')) b AS data_tmp;

从中可以发现,针对很多不同格式的 数据,可以进行这种分解处理。

select bh,bjmc,nj,xxbm,xxmc,xnid,xn,xnmc,xd,rnk from (SELECT bh,bjmc,nj,xxbm,xxmc,xnid,xn,xnmc,xd, Row_Number() OVER (partition by bh,xxbm ORDER BY nj desc) rnk

FROM dw_class where  zt='1'  and  bjlxm = '1' and xnid <> '' ) aa where rnk='1'  

同时可以使用Row_Number,进行数据处理,获取最大年级数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/647556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JeecgBoot集成TiDB,打造高效可靠的数据存储解决方案

TiDB简介 TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库&#xff0c;同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品&#xff0c;具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生…

【学习笔记】CF1349F2 Slime and Sequences (Hard Version)

多项式工业警告&#xff01;&#xff01;&#xff01; 点击看题意 思路来自 这位大佬 。 为什么这么好的题解没人评论。 Part 1 前置知识&#xff1a;拉格朗日反演&#xff08;多项式复合&#xff09;&#xff0c;分式域&#xff08;引入负整数次项&#xff09;。 条件&a…

基数排序算法

1. 排序算法分类 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a; 通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c;因此也称为非线性时间比较类排序。比较类排序算法包括&#xff1a;插入排序、希尔排序、选择…

Netty接收超长TCP数据时 使用按行分隔Decoder无法正确解码的问题解决

使用Netty实现的tcp服务端&#xff0c;由于tcp是流式传输的&#xff0c;故需要选用一个解码器对流式消息进行解码和包分隔&#xff0c;以防收到不正确的包。例如LineBasedFrameDecoder&#xff0c;LengthFieldBasedFrameDecoder&#xff0c;DelimiterBasedFrameDecoder等常用解…

第139期 做大还是做小-Oracle名称哪些事(20240125)

数据库管理139期 2024-01-25 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09;1 问题2 排查3 扩展总结 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle A…

SQL - 事务控制

SQL - 事务控制 文章目录 SQL - 事务控制TCL - 事务事务的边界事务的特性事务的应用 事务隔离等级MySQL支持四种隔离级别 TCL - 事务 **模拟场景&#xff1a;**生活当中转账是转账方账户扣钱&#xff0c;收账方账户加钱。用数据库操作来模拟现实转账。 数据库模拟&#xff1a…

CI/CD

介绍一下CI/CD CI/CD的出现改变了开发人员和测试人员发布软件的方式,从最初的瀑布模型,到最后的敏捷开发(Agile Development),再到今天的DevOps,这是现代开发人员构建出色产品的技术路线 随着DevOps的兴起,出现了持续集成,持续交付和持续部署的新方法,传统的软件开发和交付方…

软件设计师——软件工程(五)

&#x1f4d1;前言 本文主要是【软件工程】——软件设计师——软件工程的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

安全防御综合组网实验

题目 要求 生产区在工作时间可以访问服务器区&#xff0c;仅可以访问http服务器。办公区全天可以访问服务器区&#xff0c;其中10.0.2.20 可以访问FTP服务器和http服务器。10.0.2.10仅可以ping通10.0.3.10。办公区在访问服务器区时采用匿名认证的方式进行上网行为管理。办公区…

Vue内嵌套层级过深,el-input改变值视图无响应

出现场景 1.v-for内绑定复杂类型数据内部值&#xff0c;通过input更改其值时。 2.element表单或表格等组件内部&#xff0c;el-input绑定复杂类型数据内部值&#xff0c;通过input更改其值时。 解决思路 1.el-input加入 input“change($event)” … import { getCurrentInst…

【RabbitMQ】死信(延迟队列)的使用

目录 一、介绍 1、什么是死信队列(延迟队列) 2、应用场景 3、死信队列(延迟队列)的使用 4、死信消息来源 二、案例实践 1、案例一 2、案例二&#xff08;消息接收确认 &#xff09; 3、总结 一、介绍 1、什么是死信队列(延迟队列) 死信&#xff0c;在官网中对应的单词…

Unity学习之坦克游戏制作(2)游戏场景的制作

文章目录 1. 基础场景的搭建2. 游戏主面板2.1 拼出面板2.2 创建新面板2.3 设置面板复用2.4 退出界面 3. 坦克基类3.1 创建基类脚本3.1.1 基类基本属性3.1.2 抽象开火函数3.1.3 受伤虚函数3.1.4 死亡虚函数 4 玩家——基础移动旋转摄像机跟随4.1 玩家对象脚本4.2 控制坦克移动4.…

移动端打包成功后禁止生成 report.html 文件,并不自动打开该文件

目录 【问题】移动端 npm run build 打包后生成并打开 report.html 文件package.json 文件vue.config.js 代码 【解决】打包后去除 report.html 文件vue.config.js 代码 参考 【问题】移动端 npm run build 打包后生成并打开 report.html 文件 package.json 文件 {"name&…

蓝牙----蓝牙协议栈L2CAP

蓝牙协议栈----L2CAP L2CAP的功能术语介绍L2CAP信道L2CAP的工作模式经典蓝牙的分段和分解过程 L2CAP—逻辑链路控制和适配层协议 L2CAP的功能 经典蓝牙的L2CAP层实现了协议复用、数据分段与重组、封装调度等操作。BLE的L2CAP层是经典蓝牙L2CAP层的简化版本&#xff1a; 在基…

鸿蒙自定义组件内自定义构建函数

参数传递规则 自定义构建函数的参数传递有按值传递和按引用传递两种&#xff0c;均需遵守以下规则&#xff1a; 参数的类型必须与参数声明的类型一致&#xff0c;不允许undefined、null和返回undefined、null的表达式。在自定义构建函数内部&#xff0c;不允许改变参数值。如…

8-Docker网络命令之connect

1.connect介绍 Docker网络命令connect是用来将容器连接到网络。 2.connect用法 docker network connect [参数] NETWORK CONTAINER [root@centos79 ~]# docker network connect --helpUsage: docker network connect [OPTIONS] NETWORK CONTAINERConnect a container to a…

爬虫js逆向分析——x平台(实现)

爬虫js逆向分析——x平台&#xff08;实现&#xff09; &#xff08;仅供学习&#xff0c;本案例只是分析流程没有账号&#xff09;网址&#xff1a;https://xuexi.chinabett.com/ 1.分析请求包格式 打开控制台&#xff0c;并勾选保存日志&#xff0c;然后点击登录看发送了什…

ICSpector:一款功能强大的微软开源工业PLC安全取证框架

关于ICSpector ICSpector是一款功能强大的开源工业PLC安全取证框架&#xff0c;该工具由微软的研究人员负责开发和维护&#xff0c;可以帮助广大研究人员轻松分析工业PLC元数据和项目文件。 ICSpector提供了方便的方式来扫描PLC并识别ICS环境中的可疑痕迹&#xff0c;可以用于…

如何保证消息队列不丢失消息(以kafka为例)

目录 一、引言 二. 持久化存储 2.1持久化存储原理&#xff1a; 2.2使用示例&#xff1a; 1. 安装 Kafka&#xff1a; 2. 生产者代码&#xff1a; 3. 消费者代码&#xff1a; 三. 消息确认机制 3.1消息确认机制原理&#xff1a; 3.2使用示例&#xff1a; 1. 生产者代码…

Unity配置表xlsx/xls打包后读取错误问题

前言 代码如下&#xff1a; //文本解析private void ParseText(){//打开文本 读FileStream stream File.Open(Application.streamingAssetsPath excelname, FileMode.Open, FileAccess.Read, FileShare.Read);//读取文件流IExcelDataReader excelRead ExcelReaderFactory…