Sql server SSIS-并行执行同一个包

Sql server SSIS-并行执行同一个包,sql-server,ssis,parallel-processing,Sql Server,Ssis,Parallel Processing,我试图通过并行运行同一个包来加快ETL时间,但在找到将数据保存到目标的好方法时遇到了问题 设置: OLTP中的订单表 按月份划分的事实表 需要邮寄日期(订单付款时间)和发货日期 订单可在下个月发货 因为这是一个新的数据仓库,所以我尝试每月并行地构建历史数据 使用SSIS 2014 目标: 对于从订单表中提取的每个月的数据,并行运行的ETL过程 到目前为止我所做的: 创建了一个每月循环的存储过程 SP使用唯一的名称动态创建该期间的暂存表。 分期表uuu‘月’ 然后,它创建并执行我的ETL流程的S

我试图通过并行运行同一个包来加快ETL时间,但在找到将数据保存到目标的好方法时遇到了问题

设置:

  • OLTP中的订单表
  • 按月份划分的事实表
  • 需要邮寄日期(订单付款时间)和发货日期
  • 订单可在下个月发货
  • 因为这是一个新的数据仓库,所以我尝试每月并行地构建历史数据
  • 使用SSIS 2014
  • 目标:

  • 对于从订单表中提取的每个月的数据,并行运行的ETL过程
  • 到目前为止我所做的:

  • 创建了一个每月循环的存储过程
  • SP使用唯一的名称动态创建该期间的暂存表。 分期表uuu‘月’

  • 然后,它创建并执行我的ETL流程的SSIS包实例
  • 在这个包中,我试图将数据保存到正确的staging表中,但我找不到一种动态保存数据的方法
  • 其想法是能够并行地创建每个月,然后一次性切换每个分区。而不是因为内存容量大而成堆地做


    有人有什么想法吗?

    在容器中创建一个用户变量来存储目标表名,然后在目标中使用一个表达式来使用此变量,而不是表名本身。

    在尝试优化数据之前,您是否尝试过加载数据?这听起来相当复杂。如果我不并行地进行ETL,那么很容易做到。然后我就可以用数据块加载数据了。我已经让它工作了。我只是想将性能从几个小时(从2003年提取数据)提高到一个小时以下。另外,我很好奇这是否有效,因为它也可以在其他地方使用。批量加载的瓶颈是什么?您认为在源表上并行执行多个select语句会提高性能吗?我将如何在目标任务中使用该变量?据我所知,OLEDB目的地不接受参数,使用OLEDB命令将通过执行RBAR抵消并行工作流带来的性能提升。你有一个例子吗?两个包裹。一个主循环-每个月一个子循环。将月份传递到子级上的包参数中,然后在该月份之外创建一个变量来表示表名。在OLE目标中,指定目标来自变量,并将刚创建的变量指定给它。由于包是异步启动的,每个月都将并行加载。谢谢Rachel!出于某种原因,我关注的是SQL命令而不是Table变量。