【发布时间】:2021-05-17 18:09:50
【问题描述】:
我们通过 Power Query 从 Web 加载 CSV。在其他列中,有三个数据类型为 DT_NTEXT 的货币列作为输出列。我已经尝试使用数据转换任务作为第一件事,将列转换为 DT_WSTR(4000),然后在下面的派生列任务中使用以下表达式将它们转换为 numeric(17,5):
TRIM(price_conv) == "" ? NULL(DT_NUMERIC,17,5) : ((DT_NUMERIC,17,5)TRIM(price_conv))
不幸的是,这仍然失败。
错误信息:
[派生列 [2]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “派生列”失败,因为发生错误代码 0xC0049063,并且“派生列.输出 [派生列的输出].列 [价格派生]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。处理输入“派生列的输入”(3) 时,组件“派生列”(2) 上的 ProcessInput 方法失败,错误代码为 0xC0209029。已识别的组件从 ProcessInput 方法返回错误。该错误是特定于组件的,但该错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
PS:错误消息部分翻译自德语。
我也尝试在 Power Query 源的高级编辑器中设置 DT_WSTR,但也失败了。
有人有想法吗?
【问题讨论】:
-
如果将几个派生列任务链接在一起会发生什么? DT_NTEXT 到 DT_WSTR(4000)。将 dt_wstr 转换为数字的派生列,但在 DT_WSTR 的输出之间和 DT_NUMERIC 之前添加数据查看器。数据在这里看起来合适吗?有空值吗?本地化怎么样 - 鉴于您的错误消息是从德语翻译的,我不知道转换是否会期望字符串为“123,45”或“123.45”,即使句点是 DE 的千位分隔符
-
谢谢。的提示。并且,分隔符是金色的。表达式:TRIM(origprice_conv) == "" ? NULL(DT_NUMERIC,17,5) : ((DT_NUMERIC,17,5)REPLACE(TRIM(origprice_conv),".",",")) origprice_conv 已经转换为 DT_WSTR。