3

我正在尝试处理一些数据并将其存储在数据仓库中。为此,我想将维度存储在一个转换中,而事实(只有一个)存储在另一个转换中。所以我可以使用一个作业来执行第一个,copy rows to result然后让它们进入第二个转换。

在第一次转换中,我读取了一些 Excel 文件并将这些数据分成一些流。这是来自洗礼的数据,所以我有一个人流,另一个流给父母,另一个流给赞助商,依此类推......在每个流结束时,我将数据插入数据库并返回自动生成的 PK(它是一个 id 自动增量)。

在第二个中,我只有Get rows from result并且想要将它们设置为一个 txt 文件(只是为了看看它是否正确完成)。问题是文件已创建但它是空的。我想如果我让字段为Get rows from result空,它会获取所有字段。

我究竟做错了什么?

最后,我想要的是Copy rows to result在第一个转换中的每个流的末尾都有一个,并在第二个转换中获取所有这些数据。

在此处输入图像描述

在“Insert Pare Padrina”中,我返回自动生成的 id_pare_padrina,与“Insert Mare Padrina”相同(我有更多流,我还必须将它们包含在结果中)。这种转换不是每行执行的,因为我需要其他行的值。

谢谢!

4

1 回答 1

2

为了将数据从第一个转换传递到第二个转换,您需要设置某些参数,例如:

1.首先,在第二个转换的转换设置中(在工作级别),检查项目如下图:

在此处输入图像描述

将先前的结果复制到参数将确保“将行复制到结果”步骤中的所有结果/数据正确传递到下一个级别。

为每个输入行执行:将为第一个转换文件中的每一行执行第二个转换。根据您的要求,这是可选的。

2.在相同的转换设置中,在“参数”选项卡中定义“参数”。检查下图:

在此处输入图像描述

在这里,NAME 是我定义的参数。因此,当您使用“从结果中获取行”时,您可以定义这些参数名称。

3.您可以交替使用“获取变量”步骤来获取来自上一步的所有变量,而不是使用“从结果中获取行”。您需要做的就是在 ktr 文件 (CTRL + T) 中定义参数名称。(实际上我已经以这种方式实现了它,它对我有用。)

4.由于“将行复制到结果”步骤使用堆内存,定义此步骤的多个实例可能会很快耗尽内存空间,您的代码可能会遇到麻烦。理想情况下使用此步骤的单个实例。

但是,如果您的数据交互只有一行,最好的选择是使用“设置变量”步骤。

我想你可能错过了工作中的一些部分。

您可以在此处阅读有关复制行的更多信息。

希望能帮助到你 :)

于 2015-04-14T18:00:14.680 回答