码迷,mamicode.com
首页 > 其他好文 > 详细

应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(四、每日指标的计算中)

时间:2016-09-24 19:02:42      阅读:436      评论:0      收藏:0      [点我收藏+]

标签:

3)日指标计算——瞬时数据的计算:

瞬时数据的计算主要包含三相最高最低电压以及时间计算、三相电流最大值和时间计算、三相不平衡率计算、台区负载率以及负载情况的计算几大方面,是本计算脚本中最复杂的部分,如下图所示:

 技术分享

瞬时数据示意图:

 技术分享

三相最高最低电压以及发生时间计算(新增数据过滤、行转列、分组统计控件的使用):

台区首端最高电压

取电量监测自动化系统中,台区对应测量点的A、B、C相中最高的电压。


单月:取一个自然月内,30天或31天中的最大值。

台区首端最高电压出现时间

取首端最高电压出现的时间

 

台区首端最低电压

取电量监测自动化系统中,台区对应测量点的A、B、C相中最低的电压。
需过滤去除低于100V的电压值。


单月:取一个自然月内,30天或31天中的最小值。

台区首端最低电压出现时间

取首端最低电压出现的时间

 

 

计算首端ABC三相最大电压可以有2种思路,一种是先在每个记录点下的(每15分钟)UA\UB\UC先自行对比好形成一个新的每个点最大电压字段,再进行这个字段的在每个台区下的分组统计(GROUP BY)得出;第2种思路是先将UA\UB\UC 三个字段进行行转列合并成一个字段后再进行这个字段的在每个台区下的分组统计(GROUP BY)得出。但是结合首端ABC相最低电压的算法来看(需要排除低于100V的),最适合的是采用第2种方法。

 技术分享

在如果三相数据同行,过滤掉某项的话会把整行数据过滤掉,通过列转行控件,可以把3字段数据合并到一个新的字段(UV)中,并新建一个标识列以标注字段(key字段)其原来属于哪一字段,这样,每个台区的数据会从96行增长到288行,数据源的其他字段会自行根据转换前复制填充好,不必担心增长的行会影响结果,待最后分组统计时,采用聚合函数即可合并成一个结果从而得到正确的值,在完成行转列后,复制成2份分别开展最高、最低电压的计算,详细如下方所示:

计算最低电压时,需要先将小于100V的电压过滤掉

 技术分享

然后分组聚合之前,先对要进行分组统计的字段进行一次排序(取最高采用降序、取最低采用升序)。

 技术分享

 

最后通过分组控件进行聚合,这里为了同时取到最高/低电压时间的发生时间以及聚合后的台区编号,所以采用排序后直接取第一个值的聚合方式得到最终计算结果。

 技术分享

最后计算完成后通过对结果以台区编号排序后,左连接到总结果上面:

 技术分享

 

每个点(15分钟)三相电流平均值以及负载率的计算(新增计算器控件的使用):

采用计算器控件,可以进行基本的计算常量字段定义,以及字段间的加减乘除运算,结果会保存到一个新的字段中,根据需求中定义的算法即可,如下图所示。

 技术分享

在本脚本中,该控件的计算结果将会被复制成三份输入到平均最大相电流、三相不平衡、负载情况的计算流程中。

最大三相电流平均值以及发生时间计算(新增公式控件的使用):

二次侧最大三相电流平均值(A)

先计算每个点的三相电流的平均值,再找出所有平均值中的最大值*倍率。
计算时,需考虑负数的情况。

 

最大三相电流平均值计算流程与最大电压计算流程相似,不再阐述,详见下图:

 技术分享

在完成最大三相电流平均值的计算后,还要计算平均值最大时刻的最大相电流,这时需要引入公式控件,并使用其MAX函数完成最大电流的比较输出以及与倍率的相乘,通过这个控件可以使用比计算器更多种方式对字段进行计算,甚至是进行逻辑判断,详见下图:

 技术分享

技术分享
三相不平衡度计算(新增脚本控件的使用):

台区三相负荷不平衡度(%)

计算公式(取绝对值):
(|最大相电流|-|最小相电流|)÷|最大相电流|×100%
先计算16:00--20:00之间17个测量点中的最大三相电流平均值。如果有重复,旧取第一个。取这个测量点来计算。
时间段范围:16:00--20:00可以在计算参数设置中修改。

 

台区三相不平衡度的计算过程如下:

 技术分享

台区三相不平衡度需要先过滤掉一个时间段之外的数据(可配置),我们在瞬时数据表输入时,已经将时间段的参数已经输入到数据流中,如下图所示:

 技术分享

过滤控件设置如下:

 技术分享

在完成数据过滤后,再针对时间段内数据求出最大三相电流平均值,过程与上述几个指标类似,最后进行绝对值的运算,以及百分率的运算。

 技术分享

最后的结果需要处理非法的数据结果,采用javascript代码脚本可以对数据流中的字段间进行计算,这里出现的变量都是以字段为单位的,在执行的时候数据流中的每行数据都会经过这个脚本的处理。(另一种方法:要执行类似的判断,公式控件一样可以处理)

 技术分享

应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(四、每日指标的计算中)

标签:

原文地址:http://www.cnblogs.com/wheel/p/5903664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!