Azure Data Factory数据流中如何按条件计算填充new price列?
解决ADF数据流派生列类型不匹配问题
第一步:确认并转换price列的数据类型
CSV文件导入ADF时,price列可能被默认识别为字符串类型,这是触发类型不匹配错误的核心原因。在数据流的源转换中查看投影面板:- 如果price列类型为
string,先通过派生列或转换列将其转为数值类型,示例:
若需要更高精度,可使用:toDouble(price)toDecimal(price, 10, 2) - 建议将转换后的列命名为
price_num,避免与原列混淆。
- 如果price列类型为
第二步:编写符合ADF语法的派生列表达式
ADF数据流使用iif()函数而非Excel的if(),嵌套逻辑保持一致。基于转换后的数值列,正确表达式如下:iif(price_num > 1000, price_num * 1.3, iif(price_num < 100, price_num * 1.1, price_num * 1.2))若直接处理原字符串列(不提前转换),表达式需包含类型转换:
iif(toDouble(price) > 1000, toDouble(price) * 1.3, iif(toDouble(price) < 100, toDouble(price) * 1.1, toDouble(price) * 1.2))第三步:处理异常值(可选)
若price列存在空值或非数值内容,需先做判断避免报错,示例:iif(isNumeric(price), iif(toDouble(price) > 1000, toDouble(price)*1.3, iif(toDouble(price)<100, toDouble(price)*1.1, toDouble(price)*1.2)), null)第四步:匹配派生列的数据类型
在派生列设置面板中,将new price列的数据类型设为double或decimal(与计算结果类型一致),避免因类型不匹配触发错误。
内容的提问来源于stack exchange,提问作者Michael Graber - NOAA Affiliat
相关产品推荐
相关产品推荐

