【问题标题】:Concat fields without fixed lenght in Pentaho Kettle?Pentaho Kettle中没有固定长度的Concat字段?
【发布时间】:2015-09-14 11:21:30
【问题描述】:

我有两个未指定长度的字符串字段,我们称它们为OneTwo。现在我想连接它们,这样如果One = "aaa"Two = "bbb" 结果变为"aaabbb"。对于如何执行此操作,使用Concat fields 步骤似乎是一个合理的初步猜测。

但是,如果我将“目标字段的长度”设置保留为标准值 0,则不会得到任何输出。如果我将它设置为较大的值,比如 100,我总是在最后得到额外的空格。我希望结果字段尽可能长以包含One + Two,而不是更长也不更短。无论如何可以使用此步骤或其他步骤来执行此操作吗?

我尝试使用trim 设置,但它会修剪输入而不是输出。单击“最小宽度”按钮完全没有任何作用。

这似乎应该是一个非常简单的标准任务。我在这里遗漏了什么吗?

编辑:我在这里的输入只是来自Data grid 步骤的几行,网格和连接之间没有任何内容。我尝试用Generate rows 步骤替换网格,但我得到了相同的结果(在生成的字段使用固定长度时,以及将长度字段留空时)。

我的 Kettle 版本是 5.4.0.1-130。我在 Windows 7 x64 平台上运行它。

【问题讨论】:

  • “如果我将“目标字段的长度”设置保留为标准值 0,我将没有输出” - 这很奇怪。它适用于我的测试字段(通过使用“生成行”-步骤)没有问题。也许您的传入字符串有问题?我也建议尝试使用生成行步骤。如果一切正常,我们可以专注于您的传入数据。
  • 如果我用除 NULL 以外的任何值指定两个字符串字段的长度,我只能重现该问题,但正如您所写:“两个未指定长度的字符串字段”,这不应该是问题...
  • @Seb 我用输入信息更新了我的问题。

标签: string pentaho string-concatenation kettle


【解决方案1】:

如图进行配置。它正确地给出了第二个数字的结果。

结果:

使用Data Grid 步骤获取数据。

【讨论】:

  • 感谢您的回复!我尝试了您显示的配置,但它对我不起作用。列表中没有类型“None”,但我尝试将其留空并手动写入“None”(以及使用字符串)。
  • 检查你的输入数据末尾是否已经有空格。如果是这样,您需要修剪它们。
  • 可以分享一下ktr文件吗?我去看看
  • 我发现了问题,会写一个单独的答案,同时尝试为您修复文件。然而,是你的洞察力把我带到了那里,所以你得到了神奇的互联网点。
【解决方案2】:

Marlon Abeykoon 建议的配置有效。它也适用于类型“String”而不是“None”。

我的问题不在于 Concat fields 步骤,而是我用来将结果写入文件的 Text file output 步骤。它从 Concat 字段 步骤中获取有关字段的元数据,并继承字段的零长度,因此将零字符打印到文本文件。

解决方案是转到输出步骤的“字段”选项卡,然后按“获取字段”。这将所有字段及其元数据显式添加到列表中,因此您可以将 concat 步骤中输出字段的长度字段更改为空而不是 0。

【讨论】:

  • 我个人更喜欢使用计算器步骤,因为它的“A+B”函数在逻辑上看起来是正确的,而“Concat String”更像是连接字符串。我也遇到了额外空间的问题,而且更多的问题也给字符串中的换行带来了问题。
猜你喜欢
  • 2020-04-20
  • 1970-01-01
  • 2022-12-23
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多