• 使用SQL语句处理csv数据


    目录

    1. CsvQuery插件安装

    2. CsvQuery简单说明

    2.1 以表格的形式展示数据

    2.2 执行SQL查询语句

    2.3 将查询结果保存为新文件

    2.4 数据处理


    EXCEL打开csv文件日期、文本形式的大数会被自动转换成科学计数,用编辑器打开csv文件可以避免这种情况,但是没有EXCEL的表格形式易于阅读。一些编辑器插件可解决这个问题 ,例如:

    NotePad++ 的插件 CsvQuery

    1. CsvQuery插件安装

    Plugins -> CsvQuery (如果没有,选择Plugins Admin...)

    搜索要安装的插件,然后安装

    2. CsvQuery简单说明

    2.1 以表格的形式展示数据

    可以以表格的形式打开csv文件,并指定分隔符

    打开一个文件,CsvQuery -> Toggle CSV Query window

    一般以逗号分隔,读文件可以指定分隔符、指定第一行是否为标题

    2.2 执行SQL查询语句

    读文件默认语句 SELECT * FROM THIS,切换文件浏览点击右侧 ReadFile 刷新读取

     

    点击列标题可以按列正序、倒序排序

    也可以执行其它SQL语句,在查询框中输入语句然后点击右侧 Execute 执行语句

    2.3 将查询结果保存为新文件

    可以通过创建新的csv替换分隔符;

    可以将查询结果保存为新的csv文件

    在CSV Query区域右键,选择 Create new CSV...

    指定分隔符

    然后会在新的标签创建新的文件

     

    2.4 数据处理

    现在考虑一个系统分为采集、计算、上报几个环境,每个步骤均为多线程。

    采集、计算、上报会记录每个周期每个任务的开始和结束时间,通过找到每个周期中最早的任务采集开始时间和最晚的任务结束时间,可以得到每个周期的采集任务总时长;同理,可以得出每个周期计算任务总时长和上报任务总时长;求出每个周期上报任务最晚的结束时间和采集任务最早的开始时间,就可以得到每个周期端到端的总时长。

    (1)以采集任务三分钟统计文件为例,时间单位ms

    1. ROP|taskName|taskType|beginTime|endTime|TimeCost
    2. 202211291300|A1_01_X|AAA|2022-11-29T13:02:18.080589970|2022-11-29T13:02:18.175409973|95
    3. 202211291300|B_Y|BBB|2022-11-29T13:02:19.163168962|2022-11-29T13:02:19.416363723|253
    4. 202211291300|S01_X|SSS|2022-11-29T13:02:19.115749209|2022-11-29T13:02:19.423688042|308
    5. 202211291300|S01_X|SSS|2022-11-29T13:02:19.105705009|2022-11-29T13:02:19.455668083|350
    6. 202211291300|C02_X|CCC|2022-11-29T13:02:19.096654522|2022-11-29T13:02:19.455876528|359
    7. 202211291300|D01_X|DDD|2022-11-29T13:02:19.156505467|2022-11-29T13:02:19.481252537|325
    8. 202211291300|E_X_01|EEE|2022-11-29T13:02:19.178462737|2022-11-29T13:02:19.574561026|396
    9. 202211291300|A1_01_X|AAA|2022-11-29T13:02:19.185465245|2022-11-29T13:02:20.112988507|927
    10. 202211291300|F1_5_X01|FFF|2022-11-29T13:02:19.154959630|2022-11-29T13:02:20.176828913|1022
    11. 202211291300|A1_01_X|AAA|2022-11-29T13:02:20.153075264|2022-11-29T13:02:20.244616179|91
    12. 202211291300|F1_5_X|FFF|2022-11-29T13:02:19.178406279|2022-11-29T13:02:20.253262559|1075
    13. 202211291300|A1_02_X|AAA|2022-11-29T13:02:19.134695120|2022-11-29T13:02:20.294381598|1160
    14. 202211291300|A1_02_X|AAA|2022-11-29T13:02:21.096833045|2022-11-29T13:02:21.193210667|97
    15. 202211291300|A1_02_X|AAA|2022-11-29T13:02:21.197498279|2022-11-29T13:02:21.222431679|25
    16. 202211291300|C01_X|CCC|2022-11-29T13:02:22.107281135|2022-11-29T13:02:22.297591093|190
    17. 202211291300|D02_X|DDD|2022-11-29T13:02:22.174635657|2022-11-29T13:02:22.399685452|225
    18. 202211291301|A1_01_X|AAA|2022-11-29T13:03:18.077610859|2022-11-29T13:03:18.153296340|76
    19. 202211291301|S01_X|SSS|2022-11-29T13:03:19.092131589|2022-11-29T13:03:19.201854998|109
    20. 202211291301|B_Y|BBB|2022-11-29T13:03:19.397562746|2022-11-29T13:03:19.564471078|167
    21. 202211291301|S01_X|SSS|2022-11-29T13:03:19.092241364|2022-11-29T13:03:19.571959100|479
    22. 202211291301|E_X_01|EEE|2022-11-29T13:03:19.387991214|2022-11-29T13:03:19.888696985|501
    23. 202211291301|D01_X|DDD|2022-11-29T13:03:19.373646090|2022-11-29T13:03:19.934510826|561
    24. 202211291301|D02_X|DDD|2022-11-29T13:03:19.332637631|2022-11-29T13:03:19.935258716|603
    25. 202211291301|F1_5_X|FFF|2022-11-29T13:03:19.347815301|2022-11-29T13:03:20.606118364|1259
    26. 202211291301|F1_5_X01|FFF|2022-11-29T13:03:19.351736174|2022-11-29T13:03:20.628395471|1277
    27. 202211291301|A1_02_X|AAA|2022-11-29T13:03:19.356609165|2022-11-29T13:03:20.726106890|1370
    28. 202211291301|A1_02_X|AAA|2022-11-29T13:03:21.079486996|2022-11-29T13:03:21.165205265|86
    29. 202211291301|A1_02_X|AAA|2022-11-29T13:03:21.170371449|2022-11-29T13:03:21.201199252|31
    30. 202211291301|C01_X|CCC|2022-11-29T13:03:22.078229314|2022-11-29T13:03:22.184879813|106
    31. 202211291301|C02_X|CCC|2022-11-29T13:03:22.237895028|2022-11-29T13:03:22.337285245|100
    32. 202211291301|A1_01_X|AAA|2022-11-29T13:03:22.180763634|2022-11-29T13:03:22.788876818|608
    33. 202211291301|A1_01_X|AAA|2022-11-29T13:03:22.793635126|2022-11-29T13:03:22.943617381|150
    34. 202211291302|A1_01_X|AAA|2022-11-29T13:04:18.094686569|2022-11-29T13:04:18.155230980|61
    35. 202211291302|B_Y|BBB|2022-11-29T13:04:19.107167256|2022-11-29T13:04:19.507106671|400
    36. 202211291302|S01_X|SSS|2022-11-29T13:04:19.151995631|2022-11-29T13:04:19.519249983|368
    37. 202211291302|S01_X|SSS|2022-11-29T13:04:19.147699283|2022-11-29T13:04:19.523258834|376
    38. 202211291302|C02_X|CCC|2022-11-29T13:04:19.088292866|2022-11-29T13:04:19.611661623|523
    39. 202211291302|D01_X|DDD|2022-11-29T13:04:19.202207162|2022-11-29T13:04:19.689606897|487
    40. 202211291302|F1_5_X|FFF|2022-11-29T13:04:19.185080296|2022-11-29T13:04:20.376610959|1191
    41. 202211291302|F1_5_X01|FFF|2022-11-29T13:04:19.088443175|2022-11-29T13:04:20.481511203|1393
    42. 202211291302|A1_02_X|AAA|2022-11-29T13:04:19.098590610|2022-11-29T13:04:20.603674023|1505
    43. 202211291302|A1_01_X|AAA|2022-11-29T13:04:19.233066201|2022-11-29T13:04:20.760700439|1527
    44. 202211291302|A1_01_X|AAA|2022-11-29T13:04:20.771279639|2022-11-29T13:04:20.821185559|50
    45. 202211291302|A1_02_X|AAA|2022-11-29T13:04:21.079337796|2022-11-29T13:04:21.193282303|114
    46. 202211291302|A1_02_X|AAA|2022-11-29T13:04:21.199200417|2022-11-29T13:04:21.240825008|41
    47. 202211291302|C01_X|CCC|2022-11-29T13:04:22.095528016|2022-11-29T13:04:22.341042711|246
    48. 202211291302|D02_X|DDD|2022-11-29T13:04:22.189471553|2022-11-29T13:04:22.503535188|314
    49. 202211291302|E_X_01|EEE|2022-11-29T13:04:22.201339281|2022-11-29T13:04:22.514851204|313

    首先读取文件,点击ReadFile

    注:使用SQLite的语法,Plugins -> About

    执行 SELECT ROP,MIN(beginTime), MAX(endTime),strftime('%f',MAX(endTime))-strftime('%f',MIN(beginTime)) AS totalCollectTimeCost FROM THIS GROUP BY ROP

    按周期(每分钟)即ROP字段分组,MAX(endTime) 找出任务最晚完成时间,MIN(beginTime) 找出任务最早开始时间,二者的差(totalCollectTimeCost )即每分钟执行全部任务花费的总时长

    (2)将每周期采集统计结果的MIN(beginTime) 记为collectBeginTime, 每周期上报统计结果的MAX(endTime) 记为 repEndTime,其差值即每周期全部任务的端到端处理时长

    执行 SELECT ROP,collectBeginTime,repEndTime,strftime('%f',repEndTime)-strftime('%f',collectBeginTime) AS totalE2ETimeCost FROM THIS GROUP BY ROP 

  • 相关阅读:
    个人编程笔记 - 子类和父类有同名的成员?
    【VSCode】快捷键+配置代码片段
    threejs三维地图大屏项目分享
    Java程序员薪资大比拼,网友:竟然达标了?
    go实现命令行的工具cli
    Windows 安装 MariaDB 数据库
    集群中增加数据节点与退役数据节点
    java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
    Linux 之 journalctl 查看系统与 kernel 日志
    C++ | Leetcode C++题解之第35题搜索插入位置
  • 原文地址:https://blog.csdn.net/wy_hhxx/article/details/128104103