【问题标题】:Find a word inside text file using Pentaho Kettle/Spoon/PDI使用 Pentaho Kettle/Spoon/PDI 在文本文件中查找单词
【发布时间】:2015-05-22 12:46:51
【问题描述】:

我正在使用 SQL 和 Spoon PDI 创建数据比较/验证脚本。我们在两台服务器之间移动数据,并确保我们获得了所有数据,我们的 SQL 查询显示了日期和传输的行数。

示例:
服务1:20150522 | 100
服务2:20150522 | 100

然后脚本将尝试合并这些值,如果失败,我们将收到一封失败电子邮件。但是,我们希望更改此设置以将结果写入文本文件,并根据该文本文件发送通过或失败的电子邮件。

这背后的想法是我们要比较多个表,因此我们希望将每次比较的所有结果(八个)写入一个文本文件,并根据最终的文本文件发送结果 - 而不是发送垃圾邮件如果多个步骤失败,我们的电子邮件收件箱。

我们希望文本文件的格式是匹配 -> 发送电子邮件或不匹配 [步骤名称] [日期] -> 发送电子邮件。

如果我没有先尝试任何东西,通常我不会问任何问题,但我在 Google 上到处搜索,尝试了我目前拥有的知识,但没有任何事情能如我所愿。我相信这是由于我使用的逻辑。

我不是要求解决这个问题,也不是要求有人为我做这件事。我只是在寻求正确路径的指导。

【问题讨论】:

  • 您说您使用的逻辑导致了问题 - 您可以编辑问题以解释该逻辑是什么吗?另外,Pentaho Kettle/Spoon 中的逻辑是这样的吗?你的问题不太清楚。
  • 我需要将八个比较结果写入文本文件。一旦所有工作都完成并将其结果写入文本文件,然后我需要在文本文件中搜索关键字“不匹配”。如果 Spoon 找不到“不匹配”,则应发送通过电子邮件。如果它可以找到“不匹配”,则应发送失败电子邮件。
  • 您能否提供文本文件的示例输出格式,包括匹配或不匹配的内容。
  • 文本文件的输出当前为: StepName Match StepName2 Match StepName3 MisMatch 20150529 我需要搜索文本文件并找到“MisMatch”。如果未找到“不匹配”,请发送通过电子邮件。如果存在“不匹配”,则发送失败电子邮件。我已经使用在 Spoon 作业之后通过批处理文件运行的 C# 应用程序来完成这项工作,但是我需要一个仅使用 Spoon PDI 的解决方案。

标签: tsql pentaho etl kettle pdi


【解决方案1】:

我会在转换中执行此操作,其中每个联合都有步骤,其中每个步骤的结果是 comparison_name 和 result。这将导致最后的数据集看起来像这样:

比较名称 |结果


联合 A |真的

联合 B |假的

联合 C |真的


然后,您可以在另一个步骤中将这些结果输出到文本文件,以发送您的结果文件,无论作业是否通过。

最后,您将遍历流中的 result 行,如果全部为真,您可以执行电子邮件步骤以发送“通过”电子邮件,如果为假,则发送发出“失败”的电子邮件。

编辑:

要获取通过或失败的日期,您可以通过将每个联合查询结果添加到查询中来获取日期,如下所示:

SELECT CURRENT_DATE

或者您可以使用spoon 中的Get System Info 步骤,该步骤有多种将当前日期注入数据流的方法。 (系统日期固定,转换的开始日期范围,今天00:00:00等)

【讨论】:

  • 此解决方案可行,但我需要数据验证失败的日期。我从过去 7 天中提取数据,并每天将其与数量进行比较。在我上面的评论中,您可以看到更深入的解释。
  • 我编辑了答案以包含一些添加失败日期的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多