Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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
C# 加入和';合称';在事件发生后有条件地操纵非规范化的一对多拆分_C#_Sql_Ssis - Fatal编程技术网

C# 加入和';合称';在事件发生后有条件地操纵非规范化的一对多拆分

C# 加入和';合称';在事件发生后有条件地操纵非规范化的一对多拆分,c#,sql,ssis,C#,Sql,Ssis,准确地命名和解释棘手的事情-如果有任何不清楚的地方,请告诉我 我有一个非标准化的数据流,请考虑: Input one: ID Value FKID Input two: FKID DiffValue CheckValue 输入一可以有多个输入两行,显然与FKID有关 现在,在加入之后,我可能会有这样的想法: [ID] - [Value] - [DiffValue] - [CheckValue] 1 - A - D1 - C1 1 - A - D2 - C1 1 - A - D3 - C2

准确地命名和解释棘手的事情-如果有任何不清楚的地方,请告诉我

我有一个非标准化的数据流,请考虑:

Input one:

ID
Value
FKID

Input two:
FKID
DiffValue
CheckValue
输入一可以有多个输入两行,显然与FKID有关

现在,在加入之后,我可能会有这样的想法:

[ID] - [Value] - [DiffValue] - [CheckValue]
1 - A - D1 - C1
1 - A - D2 - C1
1 - A - D3 - C2
然后,我根据CheckValue进行条件拆分-搜索值:C2。如果是C2,则将值更改为DiffValue。留给我的是:

第一部分:

1 - A - D1 - C1
1 - A - D2 - C1
一分为二:

1 - D3 - D3 - C2
现在我想确保我所有的行都有D3值。这里的问题是,拆分可能永远不会变为真,在这种情况下,我需要继续,保持原始的A值,但是如果只有一行满足checkvalue条件,那么所有的行都需要DiffValue

脚本转换组件无法工作,因为它基于缓冲区,并且我无法缓存所有行,在将行发送到输出之前,一次对整个行集合执行代码。我甚至不能简单地将ID保存到temp SQL,然后根据ID进行查找,因为在条件拆分之后,它是两个并行的异步路径,所以在填充temp SQL表之前,我不能停止第一次拆分

我可以做一个脚本目的地,缓存所有的行,在缓存了每一行之后执行我的操作,然后使用相关的列进行自定义输出,但是,还有更多的列(这是一个简化的示例),并且必须处理该自定义输出的维护工作非常繁重


我该怎么做呢?

我解决了这个问题,在拆分之前添加了一个额外的列,名为HasNeededValue(为了简单起见进行了解释)。然后我删除了拆分,替换为单个脚本转换

在流程行中,我检查了我需要满足的值(在示例中为CheckValue=C2),如果它满足我的条件,我将HasNeededValue设置为1。然后,我在HasNeedValue(desc)上的脚本之后添加了一个排序,将其全部导入到一个新的脚本转换中,其中包含一个[ID]的列表

在进程行上,我检查HasNeededValue是否为1,如果为1,则将DiffValue复制到Value,并将ID插入列表中。如果它不=1,那么我检查列表是否包含ID,并将DiffValue复制到Value


这确保了可能具有在所有行上设置值所需的值的一行始终是第一行,并且我知道对于不具备必要条件的行,它是哪个ID。

也许我还没有喝足够的茶,但在条件拆分之后,您失去了我。如果CheckValue为C2,则这些行需要将S1.Value替换为S2.DiffValue。如果是这样,那么就不需要有条件的拆分。相反,只需使用三元运算符导出一个派生列即可。我认为情况并非如此,但我并不完全理解您的所有行/无行文本。也许更多的数据和/或解释?我从一开始就知道很难为我做出正确的解释。无论如何,我找到了一个解决办法。检查答案-感谢您的关注