地震会商技术系统地震数据专家[DataEQ]

DatistEQ之拆分仪器状态数据

2021-01-31  本文已影响0人  了无_数据科学

在前文《DatistEQ之批量抽取仪器状态数据》中,介绍了如何从Excel的多个表单中批量提取仪器的状态数据。本文在此基础上,讲述拆分每一台仪器状态数据的方法。

原始数据Excel文件,由多个表单构成,表单以天为单位保存了全省所有台站的仪器状态数据。

原始数据表

流程目标是将每台仪器的状态数据,以单个文件保存。

输出结果

难点:
1、批量数据抽取,从多个表单中提取数据;
2、构造多个变量组合循环体,涉及流程变量定义,ForEach、文件收集器节点应用等。
3、按行保存文件流数据,需指定每个数据体的文件名称及路径。

一、编制流程

流程由读取数据、数据准备、构造循环和保存数据共四步构成。
读取数据,使用Excel智能解析节点,抽取所有多个表单页中的数据,具体操作见前文,这里不再赘述。
数据准备,创建Cid字段,为循环体构造循环数据;
构造循环,通过ForEach循环,将数据分拆成以仪器为单位的数据,并生成Excel文件;
保存数据,使用按行保存节点,批量将仪器运行状态Excel文件保存到磁盘中。

数据流程

二、数据准备

数据准备,创建Cid字段,由台站、仪器、型号和分量共同构成,全省每一台的仪器的唯一编号。这里使用到了F函数,一个常用的字符串合并函数。与||连接符相比,F函数,通过{}引字段名称,可大幅度减少表达式中的代码工作量。

##创建仪器的唯一编号
F("{台站名称}_{仪器名称}_{仪器型号}_{测项分量代码}")
创建Cid字段 运行结果

三、构造循环

数据流中循环体构成,由ForEach节点和文件收集器节点共同完成,ForEach为循环的开始,指定循环变量及循环的内容;文件收集器表示循环体的结束,需在运行方式页中定义循环开始ForEach节点(若不指定,ForEach将无法构成循环,可参考《DatistEQ之数据流向解析》)。

循环体

ForEach节点编辑器中,意为:ForEach item In Cid,即从CId中取每个分组数据,分别运行循环体,运行结果由文件收集器节点合并后向后流转。

定义变量

在文件收集器的规则页中,定义生成的文件流Name字段的内容,这里以$Item与ForEach节点相互呼应。运行时ForEach节点,取一个仪器的编号,赋值给Item流程变量,文件收集器读取Item变量值,给文件数据体命名,如此重复...


输出名称

四、按行保存

按行保存节点可将文件流保存为本地文件。需要注意的是存储路径栏,需要指定保存文件名称。可以使用公式编辑器右键菜单中的保存文件路径功能,快速创建路径字符串。

创建路径

该功能在创建文件路径过程中,会根据流程运行转义参数设置,自动生成不同的路径字符串。

image.png

文件流中有多个数据项,因而我们需要借助于F函数,创建每个保存文件的路径。


按行保存

运行流程,自动创建省内所有仪器的状态文件,单个文件运行状态见下图。


仪器状态

换一角度重新组织数据,在日常的研究过程中,最为常见。本文,以全省的仪器运行状态数据为例,给大家介绍的数据重新组织的数据读取、预处理、循环与保存的基本步骤,你Get到了嘛?

上一篇下一篇

猜你喜欢

热点阅读