Pentaho 将变量从修改后的 java 脚本值传递到 table 输入
Pentaho passing variable from modified java script value to table input
我需要从修改后的 java 脚本值传递变量并将其传递给 table 输入查询
这是我的
如果我点击预览输出
initator_reference | a | '' |
1 | a | null |
2 | a | null |
3 | a | null |
4 | a | null |
它不应该是空的,但是 "testing" 第三个字段上的字符串
不要问我为什么把那个变量放在 select 中,它只是为了在我把它放在 "where condition=variable"
之前进行测试
Table Input 支持使 SQL 动态化的两种不同方式:变量替换和从传入流中插入数据。
变量替换
这是您当前在 Table 输入中配置的内容:您将 ${variable} 放在某处,当步骤 初始化 时,该值被粘贴为文本进入SQL。
因为所有步骤在转换中同时初始化,所以您的 Javascript 步骤没有时间设置值。在 PDI 中,您不能在同一转换中设置和使用变量。
从步骤
插入数据
第二种方式是在 Table 输入的 "Insert data from step" 选项中 selecting 一个源步骤。在此模式下,Table 输入从 selected 步骤中获取一行,并在您插入的问号 (?) 处(按顺序)将字段插入到 SQL 中。通常它需要一行,但您可以选择对每一行执行。
这种方式应该适用于您的场景:
- 在开头放置生成行步骤并将其设置为生成 1 行。
- 将其连接到 Javascript 步骤。
- 在 Javascript 步骤中,将 return 变量指定为底部网格中的输出字段,它将被添加到流中。
- 在 Table 输入中,select Javascript 步骤位于 "Insert data from step"
- 在您的 SQL 中插入 ?在变量的位置。如果值是一个字符串,您可能需要在它周围加上单引号:WHERE column = '?'.
- 预览转换以查看结果,Table 输入的预览由于依赖性而被禁用。
备注:
- 步骤1和步骤2可能不需要,我不确定JS步骤是否会自己生成一行。我喜欢明确说明这一点,通常将“生成行”步骤命名为 "Generate 1 row".
- 如果您有一个现有流或多个要插入的字段,您可以使用 Select 值步骤将字段按照它们需要插入到 SQL 中的顺序排列。
好吧,我自己找到了解决方案
第一步修改java脚本值->设置变量
然后获取变量->table 输入(检查脚本中的替换变量),您只需要放置“?”到你的查询(这个“?”字符串是你的变量,我不知道是否有任何其他方式来调用变量)
提醒一下 javapentaho 上的脚本与真实的 javascript 有点不同
我需要从修改后的 java 脚本值传递变量并将其传递给 table 输入查询
这是我的
如果我点击预览输出
initator_reference | a | '' |
1 | a | null |
2 | a | null |
3 | a | null |
4 | a | null |
它不应该是空的,但是 "testing" 第三个字段上的字符串 不要问我为什么把那个变量放在 select 中,它只是为了在我把它放在 "where condition=variable"
之前进行测试Table Input 支持使 SQL 动态化的两种不同方式:变量替换和从传入流中插入数据。
变量替换
这是您当前在 Table 输入中配置的内容:您将 ${variable} 放在某处,当步骤 初始化 时,该值被粘贴为文本进入SQL。
因为所有步骤在转换中同时初始化,所以您的 Javascript 步骤没有时间设置值。在 PDI 中,您不能在同一转换中设置和使用变量。
从步骤
插入数据第二种方式是在 Table 输入的 "Insert data from step" 选项中 selecting 一个源步骤。在此模式下,Table 输入从 selected 步骤中获取一行,并在您插入的问号 (?) 处(按顺序)将字段插入到 SQL 中。通常它需要一行,但您可以选择对每一行执行。
这种方式应该适用于您的场景:
- 在开头放置生成行步骤并将其设置为生成 1 行。
- 将其连接到 Javascript 步骤。
- 在 Javascript 步骤中,将 return 变量指定为底部网格中的输出字段,它将被添加到流中。
- 在 Table 输入中,select Javascript 步骤位于 "Insert data from step"
- 在您的 SQL 中插入 ?在变量的位置。如果值是一个字符串,您可能需要在它周围加上单引号:WHERE column = '?'.
- 预览转换以查看结果,Table 输入的预览由于依赖性而被禁用。
备注:
- 步骤1和步骤2可能不需要,我不确定JS步骤是否会自己生成一行。我喜欢明确说明这一点,通常将“生成行”步骤命名为 "Generate 1 row".
- 如果您有一个现有流或多个要插入的字段,您可以使用 Select 值步骤将字段按照它们需要插入到 SQL 中的顺序排列。
好吧,我自己找到了解决方案
第一步修改java脚本值->设置变量
然后获取变量->table 输入(检查脚本中的替换变量),您只需要放置“?”到你的查询(这个“?”字符串是你的变量,我不知道是否有任何其他方式来调用变量)
提醒一下 javapentaho 上的脚本与真实的 javascript 有点不同