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

Cloudera SQL中重命名属性并存入新变量的语法问题咨询

在Cloudera SQL中生成新变量的正确方式

首先来说你的代码里AS utterance_2不生效的原因——核心是CASE语句语法不完整,还有个小细节拖了后腿:

  • 你的CASE只写了WHEN条件和对应结果,但没加闭合的END关键字,SQL解析器没法识别这是一个完整的表达式,自然不会生成你想要的utterance_2字段;
  • 你写的return_call’用了中文单引号,这会被SQL判定为语法错误,得改成英文单引号'return_call'。

接下来针对你的需求:保留原utterance字段完全不变,同时生成utterance_2字段——满足条件时用修改后的值,不满足时和原utterance内容一致。正确写法需要补全ELSE和END,同时明确选中原utterance字段:

CREATE TABLE new STORED AS PARQUET AS
SELECT 
  zone_name, 
  queue_name, 
  utterance, -- 保留原字段,完全不做修改
  CASE 
    WHEN TRIM(LOWER(utterance)) LIKE '%call%me%' THEN 'return_call' -- 满足条件时替换为目标值
    ELSE utterance -- 不满足条件时,和原utterance内容保持一致
  END AS utterance_2, -- 给CASE表达式的结果命名为utterance_2
  wrap_code 
FROM old;

关键逻辑拆解:

  • 单独选中utterance字段,确保原始数据完整保留;
  • CASE表达式里:
    • WHEN子句精准匹配你指定的条件(转小写、去首尾空格后包含"call"和"me");
    • ELSE子句指定不满足条件时的默认值——这里直接复用原utterance,就能实现「未修改的属性同时出现在两个字段」的需求;
    • 必须用END闭合CASE表达式,再通过AS utterance_2给新字段命名,这才是完整的SQL语法。

如果你的需求是不满足条件时utterance_2为空,只需要把ELSE utterance改成ELSE NULL即可,不过根据你的描述,应该是前者的需求更贴合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:26:35