【问题标题】:Pentaho PDI unable to use parameter in transformationPentaho PDI 无法在转换中使用参数
【发布时间】:2020-02-06 10:42:22
【问题描述】:

使用 Pentaho PDI 8.3.0

我无法在转换中的 REST 调用中使用参数。我所做的是:

  • 创建一个转换并给它一个名为 PAGE_NR 的参数,默认值为 1
  • 创建工作
  • 使用参数 PAGE_NR = 1 调用转换
  • 在转换中,设置对 REST API 的 GET 请求。
  • 在 URL 字段中,设置调用,如 http://myurl.com/foo/bar?page=${PAGE_NR}

当我从 SoapUI 或浏览器调用它时,它可以工作,但在运行作业时它总是会中断。它似乎没有将此参数转换为值,而是完全像上面提到的那样传递它。

我需要这个参数,因为调用相同的 URL 但结果不同。我不知道前面的页面数量,但稍后在所述转换中处理该逻辑。

顺便说一句,在 Linux 上工作。我尝试了调用参数的不同变体,但似乎没有任何效果。

【问题讨论】:

  • 如果您在 Spoon 中运行转换并在配置屏幕上手动填写参数值,会发生什么情况?仍然有文字 ${PAGE_NR} 通常意味着没有使用该名称定义的变量/参数。
  • 这正是我所做的。我在 Spoon 中运行转换并确保提供默认值。
  • 从帖子中,听起来您是从父作业运行它,而不是直接运行转换,这就是我问的原因。我会尝试在行中的字段中获取 URL,并在 REST 步骤中使用它。这样更容易验证您的字段是否正确。
  • 啊,现在我明白了。好吧,我已经运行了这两种情况,但我目前正在谈论转换,因为我独立运行它(这里没有工作)。我使用“生成行”来设置 REST 调用的 URL,并在其中设置如上所述的字符串。如果我将 ${PAGE_NR} 替换为硬编码值 1,则流程可以完美运行。我尝试了各种我能找到的版本(如 $.PAGE_NR 或 ${"PAGE_NR"} ),但似乎没有一个有效。我验证了我给参数一个默认值(CTRL-T 和“参数”选项卡)。
  • 您提到这将是一个变异参数,您将需要从 KJB 调用此 KTR,并通过另一个 KTR 将变量传递给父 Job。我不知道这是否发生在 Linux 中,但在 Windows 中,仅数字变量被解释为数字而不是字符串是很常见的,所以有时变量中的数字会显示为“1”而不是“1”,注意数字前的空格。

标签: pentaho pdi


【解决方案1】:

根据 cmets 中给出的信息,我愿意做出有根据的猜测:

如果 URL 来自流中的字段,则 REST 客户端步骤不会对 URL 执行变量替换。您可以做的是在 REST 步骤之前插入一个计算器步骤,操作“字符串 A 上的变量替换”,您的 URL 字段为字段 A。

这应该会为您提供带有页码的所需 URL。

【讨论】:

  • 您做出了有根据的猜测并且是正确的!显然,该领域确实不能代替它的价值。像你提到的那样添加一个计算步骤就可以了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多