Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS包-控制流中记录集的条件分发_Ssis - Fatal编程技术网

SSIS包-控制流中记录集的条件分发

SSIS包-控制流中记录集的条件分发,ssis,Ssis,我一直致力于满足以下要求: 通过执行SQL任务从OLEDB源获取记录集 然后将这些记录集格式化为固定宽度,并在另一个执行SQL任务的帮助下合并为一列 然后将格式化数据导出为平面文件 现在,要求已更改为根据包变量的值将记录集(最初来自OLEDB源)导出到三个单独的平面文件(每个平面文件具有不同的数据集) e、 g如果(USER::讲师='DEV'),那么5个字段将被提取到一个平面文件中 e、 g如果(USER::讲师='Jerry'),那么7个字段将被提取到另一个平面文件中。等等 我目前面临的

我一直致力于满足以下要求:

  • 通过执行SQL任务从OLEDB源获取记录集
  • 然后将这些记录集格式化为固定宽度,并在另一个执行SQL任务的帮助下合并为一列
  • 然后将格式化数据导出为平面文件
现在,要求已更改为根据包变量的值将记录集(最初来自OLEDB源)导出到三个单独的平面文件(每个平面文件具有不同的数据集)

e、 g如果(USER::讲师='DEV'),那么5个字段将被提取到一个平面文件中

e、 g如果(USER::讲师='Jerry'),那么7个字段将被提取到另一个平面文件中。等等


我目前面临的挑战是,我必须在不使用优先约束中的表达式的情况下提取不同的数据集。

对于要导出的文件格式,您将需要不同的数据流任务。因此,5字段导出的任务与7字段导出的任务不同

在控制流中,您可以根据包变量的值选择执行哪些数据流任务


例如,如果将5字段数据流任务的Disabled属性设置为表达式@[USER::讲师]!='DEV',则当讲师不是DEV时,它将被禁用,而当讲师是DEV时,它将被启用。

对于要导出的文件格式,您将需要一个不同的数据流任务。因此,5字段导出的任务与7字段导出的任务不同

在控制流中,您可以根据包变量的值选择执行哪些数据流任务


例如,如果将5字段数据流任务的Disabled属性设置为表达式@[USER::讲师]!='DEV',则在讲师不是DEV时禁用,在讲师是DEV时启用。

虽然这是一个不错的选择,但是否可以在数据流之前在执行SQL任务中实现字段的条件选择,在数据流中对字段进行格式化!不使用多个数据流任务的要求有点特殊。您可以在oleDb源上设置表达式以选择不同的字段,但它无法与下游组件一起工作。每个数据流任务都应该针对具有特定字段集的特定数据流进行设置,而不是在运行时更改字段集。获得所需结果的更简单方法是编写一个存储过程,该过程采用参数@讲师,并返回要写入平面文件的组合单个字段。然后ssis包只执行存储的过程,因为输出中有相同的一个字段,所以可以对所有讲师使用相同的数据流任务。或者,您可以让SQL commandtext在实际SQL查询中将这些字段合并为一个字段,然后,您可以从几个不同的sql查询中进行选择,这些查询都会根据讲师的值生成相同的字段。我只是认为,与将该逻辑放入存储过程相比,这将是相当混乱的。编写接受参数@讲师的存储过程似乎是满足需要的合适选项。虽然这是一个很好的选择,但在数据流之前,是否可以在执行SQL任务中实现字段的条件选择,在数据流中对字段进行格式化!不使用多个数据流任务的要求有点特殊。您可以在oleDb源上设置表达式以选择不同的字段,但它无法与下游组件一起工作。每个数据流任务都应该针对具有特定字段集的特定数据流进行设置,而不是在运行时更改字段集。获得所需结果的更简单方法是编写一个存储过程,该过程采用参数@讲师,并返回要写入平面文件的组合单个字段。然后ssis包只执行存储的过程,因为输出中有相同的一个字段,所以可以对所有讲师使用相同的数据流任务。或者,您可以让SQL commandtext在实际SQL查询中将这些字段合并为一个字段,然后,您可以从几个不同的sql查询中进行选择,这些查询都会根据讲师的值生成相同的字段。我只是认为,与将该逻辑放入存储过程相比,这将是相当混乱的。编写接受参数@讲师的存储过程似乎是满足需要的合适选项。我一定会试试的。。