Pentaho在sql where子句中插入列表
我是Pentaho的新手,我正在运行一个转换,首先查询一个数据库以获得ID列表,然后使用查询另一个数据库的sql语句where子句中的列表。i、 e 其中,{list}中的order_id 如何指定变量(ID列表),然后将它们添加到penthao中表input中的查询语句中Pentaho在sql where子句中插入列表,pentaho,where-clause,Pentaho,Where Clause,我是Pentaho的新手,我正在运行一个转换,首先查询一个数据库以获得ID列表,然后使用查询另一个数据库的sql语句where子句中的列表。i、 e 其中,{list}中的order_id 如何指定变量(ID列表),然后将它们添加到penthao中表input中的查询语句中 谢谢,有一些方法可以做到这一点,但它们不是很有效。除非您的查询非常大,否则我认为您最好在运行它时不使用{list}过滤器中的where order\u id,并使用流查找步骤来获取所需的字段。您可以通过选中“在脚本中替换变量
谢谢,有一些方法可以做到这一点,但它们不是很有效。除非您的查询非常大,否则我认为您最好在运行它时不使用{list}过滤器中的where order\u id,并使用流查找步骤来获取所需的字段。您可以通过选中“在脚本中替换变量”并指定(${list})中的
where order\u id,在表输入中展开变量)
<>但是,如果值列表长,我会考虑使用<代码>流查找< /代码>步骤。流查找步骤在转换运行开始时将值从一个源读取到缓存中,然后在常规运行期间对流经缓存的每一行执行查找
它看起来像这样:
SELECT * FROM table_name WHERE 1=0
首先读取“数据网格”中的值,然后将其用作“表输入”步骤中所有值的查找缓存。然后,您可以添加一个筛选行
步骤,以排除查找失败的任何内容。使用动态SQL连接:
您可以使用表输入->分组依据->修改的Java脚本值->动态SQL联接的组合
表格输入将根据需要选择ID列表
在“分组依据”中,可以将ID列表聚合为一个逗号分隔的字符串(
)
在Modified Java Script Value中,您可以定义一个包含SQL查询的XML文本(如果您不介意将查询保留在一行中,可以使用字符串替换{list})
您不需要转义字符,但您需要在以后自己替换list
:sqlQuery=sqlQuery.toString().replace(“{list}”,list,“g”)
最后,您必须在JS步骤的“Fields”表中指定sqlQuery变量,以便将其作为新字段添加到每一行
然后在动态SQL连接中需要在SQL字段名中指定sqlQuery字段
。在模板SQL
中,您必须放置与生成的查询具有相同数据类型的任何查询,例如:
SELECT * FROM table_name WHERE 1=0
var sqlQuery = <>
<![CDATA[
SELECT
*
FROM table_name
WHERE
order_id IN ( {list} )
]]>
</>
SELECT * FROM table_name WHERE 1=0