我有以下 一个 数据集,为便于阅读未提及其他列,
Address1_PostCode Address2_PostCode
Address1_Line1 Address2_Line1
Address1_Line2 Address2_Line2
Address1_Country Address2_Country
所需的输出是
Address2_PostCode
Address2_Line1
Address2_Line2
Address2_Country
这就是我想要做的,
如果Address1字段中的任何一个有数据,则覆盖Address2字段,例如如果地址1仅包含邮政编码,地址2仅包含国家/地区,则最终结果将仅包含邮政编码,国家/地区将为空或为空
如果Address1的所有字段为空,则什么也不做
我已经自己搜索过,可以看到有诸如replace列之类的功能可以添加新功能和replacenull函数,但是我对它们的理解不足以实现我的目标
答案 0 :(得分:2)
添加具有 new column 表达式的 Derived Column 转换,该表达式具有布尔结果,该布尔结果将检查所有Address1字段是否为空/空。
添加另一个 派生列转换,然后转换一次(除非您要在每列上重复验证表达式),以检查该布尔结果并从中重新分配适当的字段您需要在每个字段上输入Address1或Address2。
在最后一步,您可以将新列添加到流中或覆盖现有的列,只需确保您正在使用被检查的列即可。
答案 1 :(得分:1)
我建议您使用备用数据模型,以使您的原始数据保持完整。
添加此简单代码。
AddressOutputBuffer.AddRow();
AddressOutputBuffer.PersonKey = Row.PersonKey;
AddressOutputBuffer.AddressType = "Address1";
AddressOutputBuffer.AddressLine1 = Row.Address1_Line1;
... (Add the rest in here)
AddressOutputBuffer.AddRow();
AddressOutputBuffer.PersonKey = Row.PersonKey;
AddressOutputBuffer.AddressType = "Address2";
AddressOutputBuffer.AddressLine1 = Row.Address2_Line1;
... (Add the rest in here)
将此新的“人员地址”信息写入到新表中(您可以为编写的查询构建所需的逻辑,也可以创建视图以处理特定的逻辑。)
注意:您可能需要对上面的代码进行空处理 例如:
AddressOutputBuffer.AddressLine1 = !Row.Address1_Line1_IsNull?Row.Address1_Line1:"";