SSIS-在不丢失行顺序的情况下使用条件拆分

SSIS-在不丢失行顺序的情况下使用条件拆分,ssis,Ssis,我正在SSIS中处理具有以下可能记录结构的平面文件: ACTION_TYPE PERSON_ID TIME_STAMP ----------- --------- --------------- 1 / 2 (9 digits) (up to millis) 逻辑表明,在执行操作2之前,我必须为每个人执行操作1。 此外,“动作”可以在文件中显示,没有任何限制:每个人有1对和2对,只有1对,只有2对,等等 现在,流程是:

我正在SSIS中处理具有以下可能记录结构的平面文件:

ACTION_TYPE   PERSON_ID     TIME_STAMP
-----------   ---------     ---------------
  1 / 2       (9 digits)    (up to millis) 
逻辑表明,在执行操作2之前,我必须为每个人执行操作1。 此外,“动作”可以在文件中显示,没有任何限制:每个人有1对和2对,只有1对,只有2对,等等

现在,流程是:

                                                      __(1)___> PERFORM 1 ON PERSON (DB)
SOURCE --> SORT BY OPERATION --> CONDITIONAL-SPLIT --|
                                                     |__(2)___> PERFORM 2 ON PERSON (DB)
一切正常,直到我注意到从条件拆分出来的记录顺序没有被保留——即,当同一个人的1行和2行的“两行”进入拆分时,它可能同时并行执行——导致竞争条件,甚至在我的DB中违反约束(因为该表建立在1总是在2之前执行的假设之上)

使用时间戳对数据进行排序非常有用,但是拆分会再次扰乱顺序,就像我在这里所做的排序一样

你知道如何“顺序化”con分割的otuput吗?如果是完全顺序模式,我能执行流程吗

谢谢,
Harel

您可以将任务分为两个数据流任务。嘿,考虑过这个选项-但它不好,因为正如我上面提到的-每个type-1操作都必须在同一个人的type-2操作之后执行-因此我可以“在单独的数据流中执行所有type-1操作,并将type-2操作留给另一个数据流…好吧,如果您没有如果要使用第一次拆分的数据,您可能需要考虑缓存结果,但在不知道具体要执行什么的情况下,这是一个猜测。您还可以考虑一些临时表,因此在执行第一次操作后,您会删除人员,然后继续执行。