首页 文章

如何拆分源表记录是SSIS

提问于
浏览
0

下面给出了具有数据的源表和目标表结构 . 源表有事务类型列,基于此列的目标表行将被定义 . 假设:源表数据是
enter image description here

在第一行SalesTranId = 1和TranType =每月,因为这是一个月度事务目标表将填充30行,值为500/30 = 16.6,如下所示

enter image description here

Source TranType = Yearly时,目标表必须具有基于源表行的365行 . 如何在SSIS包中做到这一点 .

Source Table:

enter image description here

Target table:

enter image description here

SSIS package:

enter image description here

2 回答

  • 1

    我同意Tab和Nick的观点,但你坚持在SSIS中这样做 .

    你必须做一些假设才能让我的逻辑工作:

    每月翻译为30,每季度翻译为90,每年翻译为365 .

    • 导入您的来源 .

    • 添加脚本组件并创建目标的第二个输出 .

    • 添加以下代码:

    //确定除数
    int DIV = 0;

    开关(Row.TranType.ToLower())
    {
    案例“每月”:
    DIV = 30;
    打破;
    案例“季刊”:
    DIV = 90;
    打破;
    案例“年度”:
    DIV = 365;
    打破;
    }

    for(int i = 1; i <= DIV; i)
    {
    destBuffer.AddRow();
    destBuffer.SalesTranID = Row.SalesTransID;
    destBuffer.TranType = Row.TranType;
    destBuffer.TranAmt = Row.TranAmt / DIV;
    }

  • 2

    如果必须在数据流中执行此操作,则需要使用脚本组件 .

    我个人会按原样将数据发送到临时表,并在将存储过程从登台表移动到最终目标表时进行拆分 . 它会表现得更快 .

相关问题