【问题标题】:Insert multiple records into fact table based on fields in single record根据单条记录中的字段将多条记录插入事实表
【发布时间】:2015-03-05 03:21:19
【问题描述】:

我正在使用 Pentaho 4.4.1-GA (Kettle / PDI)。数据库是 Postgres。

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

productcode1, price1
productcode2, price2
productcode3, price3
...
productcode10,price10

因此,如果 10 个产品代码/价格中的每一个都有一个值,那么我需要在事实表中插入总共 10 条记录。如果有 4 个组合的值,那么我需要将 4 条记录插入到事实表中,等等。对于 PK(由序列生成)、产品代码和价格,事实记录的所有字段值都将是相同的

我认为我需要某种类型的循环构造,它可以让我检查每个 productx 字段是否存在值,如果存在,则使用所需的字段值在事实表上执行插入/更新步骤。我只是不确定如何在 Pentaho 中执行此操作。

有什么想法吗?欢迎所有建议:)

谢谢,

拉克什

【问题讨论】:

  • "单个记录包含字段" - 这些是具有多列的多个 - 而不仅仅是一行(“记录”)。那条“单条记录”(行)是从哪里来的?
  • 在表输入步骤中使用 SQL 选择语句从表中的 XML 列派生单个记录。 XML 包含每个 productCode / productPrice 组合的元素,我在查询时为每个组合创建一个字段(这构成了单个记录)。

标签: postgresql loops pentaho fact


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多