You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse Dataflow:按Name列条件转换Price为绝对值的方法

Azure Synapse Dataflow 实现指定行的Price绝对值转换

适用的转换类型

应该使用**Derived Column(派生列)**转换,而非Alter Row转换——Alter Row主要用于定义行级的插入、更新、删除操作,修改列值是Derived Column的典型应用场景。

具体表达式

根据Price列的存储类型,分两种场景编写表达式:

场景1:Price为字符串类型(带逗号作为小数点分隔符)

如果Price是以字符串形式存储(如示例中的-21354,45),需要先转换为数值计算绝对值,再转回原格式:

iif(
    startsWith(Name, 'F-'),
    replace(toString(abs(toDecimal(replace(Price, ',', '.')))), '.', ','),
    Price
)

表达式拆解:

  • startsWith(Name, 'F-'):判断当前行Name是否以F-开头
  • replace(Price, ',', '.'):将字符串中的逗号替换为小数点,适配数值类型格式
  • toDecimal(...):将处理后的字符串转为Decimal数值
  • abs(...):计算数值的绝对值
  • toString(...):将数值转回字符串
  • replace(..., '.', ','):把小数点替换回逗号,保持原格式

场景2:Price已为数值类型(Decimal/Float等)

如果Price已经是数值类型(已完成逗号转小数点的格式处理),表达式可简化为:

iif(startsWith(Name, 'F-'), abs(Price), Price)

操作步骤

  1. 在数据流中添加Derived Column转换节点
  2. 在派生列设置面板中,选择Replace existing column,并选中Price列
  3. 输入对应场景的表达式
  4. 运行数据流验证结果

示例验证

处理后数据与预期一致:

NamePrice
P-12344-21354,45
S-1233512543,45
F-1356454,45
F-1123441254,45

内容的提问来源于stack exchange,提问作者Frank Lohfeld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:35:25