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

Spark中拼接a、b、c字段总长度不足10时仅给c补前导零的实现问题

错误原因

现有代码将c字段单独补前导零到长度为10,最终拼接后总长度为len(a) + len(b) + 10,不符合总长度为10的要求。

解决方案

核心逻辑为:先计算a、b两个属性拼接后的总长度,当三者原始拼接结果长度小于10时,仅将c补前导零到「10减去a、b总长度」的长度,即可保证三者拼接后总长度刚好为10。
正确代码如下:

// 计算a、b拼接后的总长度
val abTotalLength = length(concat($"a", $"b"))
val x = when(length(concat($"a", $"b", $"c")) < 10,
    concat($"a", $"b", lpad($"c", 10 - abTotalLength, "0"))
).otherwise(concat($"a", $"b", $"c"))

边界说明

如果a、b拼接后的长度已经≥10,那么三者原始拼接结果长度必然≥10,此时会直接走otherwise分支返回原始拼接结果,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:48:01