嗨,我要通过SSAS将数据从平面文件加载到我的表中,我想派生一个条件列,以在长度小于5时在邮政编码列中的数字数据后面附加零。 我正在使用派生列表达式:(CustomerZipCode!=“ [A-Za-z]”)&&(LEN(CustomerZipCode)<5)? RIGHT((“”“” + CustomerZipCode),5):CustomerZipCode
ForExample 上面的表达式不起作用,请指导我
谢谢。
答案 0 :(得分:0)
这是SSIS吗?我的最后一个答案认为这是SSAS列,因为使用了SSAS标签。如果这是通过SSIS加载的日期,则可以使用脚本组件来执行此操作,而不要使用“派生列”。下面的示例使用C#,并且需要在“输入列”窗格中使用ReadWrite
用法类型添加CustomerZipCode列。 TryParse
方法检查列是否为数字,如果列包含任何文本,则返回false。 String构造函数用于创建zeroesToAppend
字符串,该字符串设置为小于0的零数(该长度等于该列的长度),然后将其添加到该列的开头。这将进入Input0_ProcessInputRow
方法,该方法对输入的每一行执行一次。
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
int i;
if (int.TryParse(Row.CustomerZipCode, out i) && Row.CustomerZipCode.Length < 5)
{
string zeroesToAppend = new String('0', 5 - Row.CustomerZipCode.Length);
Row.name = String.Concat(zeroesToAppend, Row.CustomerZipCode);
}
}