代码之家  ›  专栏  ›  技术社区  ›  Mark Canlas

如何使用ETL管理身份?

  •  1
  • Mark Canlas  · 技术社区  · 15 年前

    我需要帮助确定一个工作流程,我不知道该如何进行…假设我正在转型(ETL?)从表A到表B的数据。表A有一个复合主键A.A+A.B+A.C,而表B只有一个自动填充的标识列。如何将组合键从A映射回插入B时创建的标识?

    最好不要在表B中有任何与A的复合键相关的列,因为有许多其他表需要执行相同的操作,但没有相同的复合键结构。

    2 回复  |  直到 15 年前
        1
  •  1
  •   John Saunders    15 年前

    问问自己,你到底需要什么样的钥匙。答案可能因源系统而异。这可能会导致您维护一个“源系统”列和一个“原始源键”列。后者可能需要原始键的逗号分隔列表。

    或者,你可能会发现你实际上不需要地图,所以不需要保留任何东西。

        2
  •  3
  •   Jeremy Bourque    15 年前

    如果我理解正确,那么在转换之后就不能将表B中的记录与表A中的记录关联起来,除非您在转换期间以某种方式捕获了A的复合键和B的标识符之间的映射。

    您可以向a添加一列,并预先计算插入b时要使用的标识符。然后您将得到一个映射。如果不想向中添加列,也可以使用单独的映射表来完成此操作。

    如果不想覆盖标识符的默认分配,那么必须在加载期间捕获它们。Oracle提供了 returning 条款 insert 在pl/sql中。我不确定SQL Server。也可以通过使用B上的触发器将其插入到单独的映射表中或更新A中的列来实现这一点。尽管这可能会大大降低加载速度。

    如果没有其他内容,您可以在B中创建额外的列,以便在加载期间保存A的键,然后查询映射到单独的表中,然后除去额外的列。

    希望有帮助。