1

我已加载数据并完成了对数据的各种转换,问题是数据中管理着父/子关系 - 最好通过示例来解释

每行都有(列名组成)

row_key    parent_row_key   row_name    parent_row_name

一些行有 row_key == parent_row_key (他们自己的父) 一些行与另一行相关(例如,第 25 行是第 44 行的父行)。

在这种情况下,第 25 行是第 44 行的父行。我需要将第 25 行的 row_name 放在第 44 行的 parent_row_name 中。如何查询管道中的数据以获取值?

4

4 回答 4

3

您不能只使用多播拆分数据,然后对其自身进行合并连接吗?

于 2008-10-08T14:47:13.637 回答
0

听起来像 Macola(Exact Software)处理交易的方式。在他们的情况下,将一笔交易添加到表中,并在行中包含对原始交易的引用 - 例如,如果原始交易是 1 月的购买,而 2 月有付款,则 2 月的付款将包括1 月付款中的交易编号,列中引用父项。由于没有外键关系,因此每个初始交易都会被赋予一个可以在整个系统的分类帐之间移动的 guid。

于 2008-11-13T13:26:17.840 回答
0

您可以将数据写入数据库中的临时表、原始文件目标或记录集目标(取决于数据集的大小)。然后你可以再次遍历你的数据并查询你的临时数据并找到正确的父级。

于 2008-10-24T13:07:46.813 回答
0

正如你所说

我已加载数据并完成了对数据的各种转换

然后我可以假设您已经在临时表或临时表中拥有所有可用数据吗?如果是这样,只需对字段进行更新就可以解决我猜的问题吗?假设暂存表中并非所有信息都可用,您可以先对暂存表中的值进行级联搜索,如果未找到任何信息,则从实际表中进行搜索。在一次更新中执行此操作很容易胜过逐行执行。(特别是如果您有适当的索引可用)

UPDATE staging_table
   SET parent_row_name = COALESCE(new.row_name, old.row_name, '#N/A#')
  FROM staging_table upd
  LEFT OUTER JOIN staging_table new
               ON new.row_key = upd.parent_row_key
  LEFT OUTER JOIN destination_table old
               ON old.row_key = upd.parent_row_key
于 2011-12-15T13:22:31.637 回答