Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 基于单个记录中的字段将多个记录插入事实表_Postgresql_Loops_Pentaho_Fact - Fatal编程技术网

Postgresql 基于单个记录中的字段将多个记录插入事实表

Postgresql 基于单个记录中的字段将多个记录插入事实表,postgresql,loops,pentaho,fact,Postgresql,Loops,Pentaho,Fact,我在Pentaho 4.4.1-GA水壶/PDI工作。数据库是Postgres 我需要能够根据来自单个记录的字段将多个记录插入事实表。单个记录包含以下字段: productcode1, price1 productcode2, price2 productcode3, price3 ... productcode10,price10 因此,如果10个productcode/prices中的每一个都有一个值,那么我需要在事实表中插入总共10条记录。如果有4个组合的值,那么我需要在事实表中插入4条

我在Pentaho 4.4.1-GA水壶/PDI工作。数据库是Postgres

我需要能够根据来自单个记录的字段将多个记录插入事实表。单个记录包含以下字段:

productcode1, price1
productcode2, price2
productcode3, price3
...
productcode10,price10
因此,如果10个productcode/prices中的每一个都有一个值,那么我需要在事实表中插入总共10条记录。如果有4个组合的值,那么我需要在事实表中插入4条记录,等等。除了序列、产品代码和价格生成的PK之外,事实记录的所有字段值都是相同的

我想我需要某种类型的循环构造,它可以让我检查每个productx字段是否存在值,如果存在,则使用所需的字段值在事实表上执行插入/更新步骤。我只是不知道如何在Pentaho做到这一点

有什么想法吗?欢迎提出以下建议:

谢谢,


Rakesh

您能为您的场景提供一个输入和输出示例吗

从您的示例数据中,我可以推断,如果有10个不同的产品代码和4个产品价格,您希望在表中插入4条记录。是这样吗


首先,您可以通过过滤NOTNULL将常量值1添加到这些记录中,然后使用Group by Step来计算1的数量。这会给你计数。顺便说一句,如果您能提供更多关于要加载哪些列的详细信息,这将非常有用,因为有多种方法可以使PDI转换多次执行

单个记录包含字段-这些字段是多行多列-而不仅仅是一行记录。该单记录行来自何处?该单记录是在表输入步骤中使用SQL select语句从表中的XML列派生的。XML为每个productCode/productPrice组合都有元素,我在查询单个记录时为每个组合创建了一个字段。