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

如何在Apache Druid中将字符串类型Amount列保留两位小数?

Apache Druid中字符串类型Amount列的四舍五入处理(保留两位小数)

要处理字符串类型的Amount列,实现四舍五入并保留两位小数的需求,需要结合Druid的类型转换、数值计算和格式化函数完成,以下是具体方案:

查询阶段处理

直接在SQL查询中通过函数组合实现转换:

SELECT
  FORMAT_NUMBER(ROUND(TRY_CAST(Amount AS DOUBLE), 2), '0.00') AS formatted_amount
FROM your_table_name

函数说明

  • TRY_CAST(Amount AS DOUBLE):将字符串类型的Amount转换为双精度数值,TRY_前缀确保转换失败时返回NULL而非直接抛出错误,提升查询稳定性。
  • ROUND(..., 2):对转换后的数值执行四舍五入操作,保留两位小数。
  • FORMAT_NUMBER(..., '0.00'):将四舍五入后的数值格式化为固定两位小数的字符串,确保像0.0、3.0这类数值会输出为0.00、3.00,完全匹配需求。

示例验证

  • 输入0.0 → 转换后0.0 → 四舍五入后0.0 → 格式化输出0.00
  • 输入3.0 → 转换后3.0 → 四舍五入后3.0 → 格式化输出3.00
  • 输入5.6666 → 转换后5.6666 → 四舍五入后5.67 → 格式化输出5.67

摄取阶段预处理

如果需要在数据摄取时就完成转换,可在Druid的摄取规范(ingestion spec)的transformSpec中配置转换逻辑:

"transformSpec": {
  "transforms": [
    {
      "type": "expression",
      "name": "formatted_amount",
      "expression": "FORMAT_NUMBER(ROUND(TRY_CAST(Amount AS DOUBLE), 2), '0.00')"
    }
  ]
}

这样摄取后的数据中会直接生成处理好的formatted_amount列,后续查询无需重复计算。

内容的提问来源于stack exchange,提问作者Surabhi Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:36:54