Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
Sql SSIS 2条件拆分未按预期工作_Sql_Ssis_Sql Server 2008 R2_Msbi - Fatal编程技术网

Sql SSIS 2条件拆分未按预期工作

Sql SSIS 2条件拆分未按预期工作,sql,ssis,sql-server-2008-r2,msbi,Sql,Ssis,Sql Server 2008 R2,Msbi,我是SSIS新手,正在经历一个用例,我想在不使用SCD组件(这是要求)的情况下实现SCD类型2,在这个用例中,我必须使用多个条件拆分和查找。现在,当我使用单个查找和单个传统拆分时,它就像一个符咒一样工作,但当我引入第二个条件拆分时,它无论哪种方式都不起作用。我已提供dataviwer查看数据,但它也不显示数据 你能帮我吗 我的数据流是这样的 仍然是第一个条件拆分,看起来一切正常,但插入第二个和第三个条件拆分后,它不起作用。记住。哪一种可能性更大,即开发的产品使用0到1个组件,但使用2个组件完全失

我是SSIS新手,正在经历一个用例,我想在不使用SCD组件(这是要求)的情况下实现SCD类型2,在这个用例中,我必须使用多个条件拆分和查找。现在,当我使用单个查找和单个传统拆分时,它就像一个符咒一样工作,但当我引入第二个条件拆分时,它无论哪种方式都不起作用。我已提供dataviwer查看数据,但它也不显示数据

你能帮我吗

我的数据流是这样的

仍然是第一个条件拆分,看起来一切正常,但插入第二个和第三个条件拆分后,它不起作用。

记住。哪一种可能性更大,即开发的产品使用0到1个组件,但使用2个组件完全失败,或者您的实现有缺陷

我发现以下情况最有可能违背我的预期,我将其翻译为“我没有阅读任何文档,正在摸索UI”。这不是一种侮辱,只是包括我在内的许多人采用的一种方法。当然,诀窍是,当出现与之相反的行为时,您可以查阅精细手册

高级设计问题 您的条件拆分没有考虑所有的可能性,因此您正在“丢失”数据。数据流缺少的是行计数。我从几行开始?有多少行到了不同的接收器/目的地?在一天/数据流结束时,您必须能够说明所有数据。如果没有,则说明出现了问题,数据加载无效

我也会批评你缺乏有用的组件名称和OLEDB命令对象,但这是可维护性和可伸缩性,当答案错误时,这是过早的优化

原因可能是什么 说到实质,我敢打赌,由于数据中的以下情况,您正在丢失数据

  • 空的
  • 区分大小写
从路径注释中,第二个
条件分割1
有2-3个输出<代码>男性,
女性
,并且假设您没有将默认输出重命名为男性或女性,
默认

您声明此拆分将丢失所有数据。很可能所有的内容都将进入默认输出。我希望你的条件拆分中有一个表达式,比如

Male := [GenderColumn] == "Male"
Female := [GenderColumn] == "Female"
但是,如果您的源数据包含男性、男性、女性、女性以及它们之间的所有排列,那么您只能根据严格区分大小写的匹配进行匹配,而您的任何数据都不匹配。要解决此问题,您需要比较一致的值

这里我任意地将所有内容转换为大写<代码>降低同样有效。重要的是,它们需要产生相同的值。我也很懒,因为我把一个函数应用于一个常数

Male := UPPER([GenderColumn]) == UPPER("Male")
Female := UPPER([GenderColumn]) == UPPER("Female")
但是等等,如果我有空值呢?问得好,怎么办?空值既不是男性也不是女性,该如何处理该数据?现在,它正在沿着默认的输出路径运行。也许它应该被视为男性,因为我们的产品存在性别偏见。您的业务用户可能知道应该如何处理未知值,因此您应该咨询他们。然后通过
| |
添加OR条件,并测试我们列的当前值是否为NULL

Male := UPPER([GenderColumn]) == UPPER("Male") || ISNULL([GenderColumn])
Female := UPPER([GenderColumn]) == UPPER("Female")
记住。哪一种可能性更大,即开发的产品使用0到1个组件,但使用2个组件完全失败,或者您的实现有缺陷

我发现以下情况最有可能违背我的预期,我将其翻译为“我没有阅读任何文档,正在摸索UI”。这不是一种侮辱,只是包括我在内的许多人采用的一种方法。当然,诀窍是,当出现与之相反的行为时,您可以查阅精细手册

高级设计问题 您的条件拆分没有考虑所有的可能性,因此您正在“丢失”数据。数据流缺少的是行计数。我从几行开始?有多少行到了不同的接收器/目的地?在一天/数据流结束时,您必须能够说明所有数据。如果没有,则说明出现了问题,数据加载无效

我也会批评你缺乏有用的组件名称和OLEDB命令对象,但这是可维护性和可伸缩性,当答案错误时,这是过早的优化

原因可能是什么 说到实质,我敢打赌,由于数据中的以下情况,您正在丢失数据

  • 空的
  • 区分大小写
从路径注释中,第二个
条件分割1
有2-3个输出<代码>男性,
女性
,并且假设您没有将默认输出重命名为男性或女性,
默认

您声明此拆分将丢失所有数据。很可能所有的内容都将进入默认输出。我希望你的条件拆分中有一个表达式,比如

Male := [GenderColumn] == "Male"
Female := [GenderColumn] == "Female"
但是,如果您的源数据包含男性、男性、女性、女性以及它们之间的所有排列,那么您只能根据严格区分大小写的匹配进行匹配,而您的任何数据都不匹配。要解决此问题,您需要比较一致的值

这里我任意地将所有内容转换为大写<代码>降低同样有效。重要的是,它们需要产生相同的值。我也很懒,因为我把一个函数应用于一个常数

Male := UPPER([GenderColumn]) == UPPER("Male")
Female := UPPER([GenderColumn]) == UPPER("Female")
但是等等,如果我有空值呢?问得好,怎么办?空值既不是男性也不是女性,该如何处理该数据?现在,它正在沿着默认的输出路径运行。也许它应该被视为男性,因为我们的产品存在性别偏见。你的生意对我们有利