2008-10-08 22 views
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中。如何查询管道中的数据以获取该值?

回答

3

你不仅可以使用多播分割数据,然后对自己进行合并连接吗?

+0

肯定是一个值得尝试的途径 - 产品最难的部分是学习如何使用它来解决问题。 – WIDBA 2008-10-08 14:55:09

0

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

0

听起来像Macola(Exact Software)处理交易的方式。在他们的情况下,一笔交易被添加到一个表格中,并且它包含了对该行中原始交易的引用 - 例如,如果原始交易是一月份的购买并且有付款,则二月付款将包括来自一月份支付的交易号码指的是家长。由于没有外键关系,每个初始交易都有一个guid,可以在整个系统中的分类账之间移动。

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 
相关问题