Pentaho PDI/Kettle-将数据从上一个跃点传递到数据库查询
我对PDI和Ketter还不熟悉,我以为是一个简单的实验来教自己一些基础知识,结果却变成了很多挫折 我想检查数据库以查看是否存在特定记录(即供应商)。我想通过读取平面文件(.CSV)获取供应商的名称 我的第一个障碍是仅从CSV中的8个字段中选择供应商名称 第二个障碍是如何在数据库查询中使用该供应商名称作为变量 我的第三个问题是数据库查找要使用哪种类型的步骤 我尝试了动态SQL查询,但无法确定如何使用变量构建查询,以及如何将所需的值传递给变量 数据库表(VendorRatings)有30个字段,其中一个是vendor。CSV还有8个字段,其中一个字段也是供应商字段 我最大的努力是使用以下动态查询: 从VENDORRATINGS中选择*其中VENDORRATINGS=Pentaho PDI/Kettle-将数据从上一个跃点传递到数据库查询,pentaho,kettle,Pentaho,Kettle,我对PDI和Ketter还不熟悉,我以为是一个简单的实验来教自己一些基础知识,结果却变成了很多挫折 我想检查数据库以查看是否存在特定记录(即供应商)。我想通过读取平面文件(.CSV)获取供应商的名称 我的第一个障碍是仅从CSV中的8个字段中选择供应商名称 第二个障碍是如何在数据库查询中使用该供应商名称作为变量 我的第三个问题是数据库查找要使用哪种类型的步骤 我尝试了动态SQL查询,但无法确定如何使用变量构建查询,以及如何将所需的值传递给变量 数据库表(VendorRatings)有30个字段,其
如何以编程方式将所需值分配给查询中的“”?具体来说,如何将特定字段的输出从文本文件输入链接到“vendor=?”SQL查询?最佳做法是流查找。对于主流程(VendorRating)中的每个记录,根据其标识符(可能是其编号或名称或firstname+lastname)在参考文件(CSV)中查找供应商详细信息(查找字段) 第一个“障碍”:一旦定义了csv文件的路径,请按
Get field
按钮
它将第一行作为标题,以了解字段名称,并探索第一个100(可自定义)记录以确定字段类型
如果名称不在第一行,请取消选中显示的标题行
,按获取字段
按钮,然后更改面板上的名称
如果有多个标题行或其他复杂性,请使用文本文件输入
这同样适用于
查找步骤
:使用获取查找字段
按钮并删除不需要的字段 最佳实践是流查找
。对于主流程(VendorRating)中的每个记录,根据其标识符(可能是其编号或名称或firstname+lastname)在参考文件(CSV)中查找供应商详细信息(查找字段)
第一个“障碍”:一旦定义了csv文件的路径,请按Get field
按钮
它将第一行作为标题,以了解字段名称,并探索第一个100(可自定义)记录以确定字段类型
如果名称不在第一行,请取消选中显示的标题行
,按获取字段
按钮,然后更改面板上的名称
如果有多个标题行或其他复杂性,请使用文本文件输入
这同样适用于
查找步骤
:使用获取查找字段
按钮并删除不需要的字段 由于
然后,在不匹配的情况下,过滤器将流重定向到替代操作(此处:插入SQL表)。然后两股水流汇入下游水流。由于
然后,在不匹配的情况下,过滤器将流重定向到替代操作(此处:插入SQL表)。然后这两个流合并到下游流中。每个供应商有多少供应商?只有一个还是多个?当/如果供应商没有VendorRating时会发生什么?您将哪一步称为“动态查询”。对于
动态SQL行
,您需要在字段中构建SELECT…WHERE Vendor=”“。对于输入表
,您将丢失表中不存在的所有字段。@a表明表中每个供应商只有一个VENDORRATING。如果CSV文件中没有给定供应商的评级,则应导致新的跃点,CSV中的所有8个字段将作为新行插入VENDORRATING中。@AlainD yes,我指的是动态SQL行。根据一些研究,它似乎是一个动态查询的选项。看起来这是一条糟糕的道路(没有双关语)。动态SQL行可能是一个答案。例如,如果您需要选择SUM(field)
,但一般来说,构建包含查询的字符串需要一些工作。每个供应商有多少个VendorRating?只有一个还是多个?当/如果供应商没有VendorRating时会发生什么?您将哪一步称为“动态查询”。对于动态SQL行
,您需要在字段中构建SELECT…WHERE Vendor=”“。对于输入表
,您将丢失表中不存在的所有字段。@a表明表中每个供应商只有一个VENDORRATING。如果CSV文件中没有给定供应商的评级,则应导致新的跃点,CSV中的所有8个字段将作为新行插入VENDORRATING中。@AlainD yes,我指的是动态SQL行。根据一些研究,它似乎是一个动态查询的选项。看起来这是一条糟糕的道路(没有双关语)。动态SQL行可能是一个答案。例如,如果您需要选择SUM(f