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

Cloudera中变量值转换与属性重命名技术咨询

在Cloudera中实现需求的两种方案

针对你要把call_15_second的Null转0、1转15(数值型)或'15secs'(字符型)的需求,在Cloudera常用的Hive SQL环境里,可以这样实现:

方案1:转换为数值型15(便于后续计算)

这种场景适合需要基于转换后的值做求和、统计等数值计算的情况,我们可以结合CASE WHEN或IF函数,同时处理Null和1的转换:

写法一:使用CASE WHEN(可读性更强)

SELECT
    sum(
        CASE
            WHEN call_15_second IS NULL THEN 0  -- 把Null转为0
            WHEN call_15_second = 1 THEN 15     -- 把1转为15
            ELSE call_15_second                 -- 保留原来的0值
        END
    ) AS call_15_second
FROM your_table_name;

写法二:使用IF函数(更简洁)

利用COALESCE先把Null转为0,再用IF判断是否为1来替换:

SELECT
    sum(IF(COALESCE(call_15_second, 0) = 1, 15, COALESCE(call_15_second, 0))) AS call_15_second
FROM your_table_name;

方案2:转换为字符型'15secs'(用于展示场景)

如果是需要将单条记录的1转为'15secs',注意字符型无法直接做sum运算,所以分两种情况:

情况一:单条记录转换(不做求和)

SELECT
    CASE
        WHEN call_15_second IS NULL THEN '0'
        WHEN call_15_second = 1 THEN '15secs'
        ELSE CAST(call_15_second AS STRING)  -- 把原0值转为字符串'0'
    END AS call_15_second_display
FROM your_table_name;

情况二:先求和再转字符展示

如果需要先基于数值15完成求和计算,再转为带单位的字符:

SELECT
    CONCAT(
        CAST(
            sum(
                CASE
                    WHEN call_15_second IS NULL THEN 0
                    WHEN call_15_second = 1 THEN 15
                    ELSE call_15_second
                END
            ) AS STRING
        ), 'secs'
    ) AS call_15_second_total
FROM your_table_name;

替换上述代码中的your_table_name为你的实际表名即可,这些写法在Cloudera的Hive环境中都是完全兼容的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:11:14