处理数据流任务中派生列中的截断错误
Handling truncation error in derived column in data flow task
我有一个包含派生列的数据流任务。派生列将 CSV 文件列(假设为订单号 A)转换为长度为 10 的数据类型 char。
当文本文件列等于或小于 10 个字符时,这非常有效。当然,当 A 列订单号超过 10 个字符时,它会抛出错误。
A列(容易出错)
12PR567890
254W895X98
ABC 56987K5239
485P971259 SPTGER
459745WERT
我想抓取容易出错的记录,只提取订单号。
我已经可以配置派生列的错误输出。但是,这只是忽略错误记录并处理其他记录。
预期输出将 ABC 56987K5239
、485P971259 SPTGER
订单号分别处理为 56987K5239
、485P971259
。去除意外字符的过程并不重要,重要的是如何在派生列的 运行 时间内实现这一点(在出错的情况下剥离和处理数据)。
如果有效的订单号总是以数字开头,并且其长度等于 10。您可以使用 Script Component
(转换)和 Regular Expression
一起转换源数据。
- 将
Script Component
拖放为 Transformation
- 将源连接到
Script Component
- 来自
Script Component Edit
window,检查来自Input columns
的Order
,并将其设为Read and Write
- 在脚本中,添加:
using System.Text.RegularExpressions;
完整代码需要在Input process method中添加:
string pattern = "[0-9].{9}";
Row.Order = Regex.Match(Row.Order, pattern).Groups[1].ToString();
到目的地的输出应该是匹配的以数字开头的10个字符。
我有一个包含派生列的数据流任务。派生列将 CSV 文件列(假设为订单号 A)转换为长度为 10 的数据类型 char。
当文本文件列等于或小于 10 个字符时,这非常有效。当然,当 A 列订单号超过 10 个字符时,它会抛出错误。
A列(容易出错)
12PR567890
254W895X98
ABC 56987K5239
485P971259 SPTGER
459745WERT
我想抓取容易出错的记录,只提取订单号。
我已经可以配置派生列的错误输出。但是,这只是忽略错误记录并处理其他记录。
预期输出将 ABC 56987K5239
、485P971259 SPTGER
订单号分别处理为 56987K5239
、485P971259
。去除意外字符的过程并不重要,重要的是如何在派生列的 运行 时间内实现这一点(在出错的情况下剥离和处理数据)。
如果有效的订单号总是以数字开头,并且其长度等于 10。您可以使用 Script Component
(转换)和 Regular Expression
一起转换源数据。
- 将
Script Component
拖放为Transformation
- 将源连接到
Script Component
- 来自
Script Component Edit
window,检查来自Input columns
的Order
,并将其设为Read and Write
- 在脚本中,添加:
using System.Text.RegularExpressions;
完整代码需要在Input process method中添加:
string pattern = "[0-9].{9}"; Row.Order = Regex.Match(Row.Order, pattern).Groups[1].ToString();
到目的地的输出应该是匹配的以数字开头的10个字符。