【发布时间】: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”,注意数字前的空格。