Heim >Datenbank >MySQL-Tutorial >检查处理kettle数据流中的空行

检查处理kettle数据流中的空行

WBOY
WBOYOriginal
2016-06-07 16:01:332905Durchsuche

检查处理kettle数据流中的空行 ETL处理过程中,有时需要生成数据,但是却没有输入数据,这可能有一些问题,所以通常需要ETL数据流产生一个空行数据;有时处理中需要一些聚集功能,则意味着当没有输入数据时,生成值为0;本文说明怎样检测并处理空行数据流。

检查处理kettle数据流中的空行

ETL处理过程中,有时需要生成数据,但是却没有输入数据,这可能有一些问题,所以通常需要ETL数据流产生一个空行数据;有时处理中需要一些聚集功能,则意味着当没有输入数据时,生成值为0;本文说明怎样检测并处理空行数据流。

示例场景

假设有需求需要读取输入数据代表销售(有三个字段:product产品名称、items_sold销售量、turnover销售金额).ETL处理流程需要计算产品的销售总量及销售总额;这里的处理大概是:从输入文件中读取多行数据,然后使用聚集功能,产生期望的结果。

\

这种方法有缺陷,因为当没有输入数据时,不产生任何输出数据,在这个示例中,可以切换两个输入的连接线,测试结果。

第一种解决方案:使用group by步骤

如果使用group by步骤实现聚集,你能设置总返回结果行,即使没有输入,启用“Alwaysgive back a result row”选项。如下图所示:

\

第二种解决方案:使用Detect empty stream步骤(检测空数据流)

如果这个场景更复杂,字段更多,我们就需要有一般性的解决方案检测空数据流,我们使用“detect empty stream”步骤。连接输入源(源有可能为空)到空步骤,从空步骤拷贝数据到两个分支,其中“detect empty stream”步骤不处理有数据流的行情况,但是没有任何输入行数据时,则创建一行数据且所有字段值为空,该行表示没有数据。

示例中,可以切换输入连接失效,则没有数据行输入,然后通过javascript步骤手工修改product=“none”,item_sold=0,turnover=0.0;如下图所示,当输入数据确实为空时,“detect empty stream”步骤产生一空行,然后被更新为期望的输出。代码下载。

\

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn