【问题标题】:CASE WHEN conditional in HiveQLCASE WHEN 在 HiveQL 中的条件
【发布时间】:2021-08-23 13:40:42
【问题描述】:

我无法将案例带入 HiveQL。

我有一列包含数据: 如果列是 NULL = FALSE 如果该列是 PEOPLE = TRUE。它将所有结果返回为 TRUE。

我的角色有什么问题?

SELECT 
    id,
    datetime,
    CASE 
        WHEN tb_people !="" THEN 'TRUE'
        ELSE 'FALSE'
    END
 FROM <BD>.<TABLE>

【问题讨论】:

  • 如果所有结果都是TRUE,这意味着你的列中没有空字符串或NULL,因为NULL会触发ELSE部分,以及空字符串

标签: hadoop hive conditional-statements hiveql


【解决方案1】:

!="" 仅检查空白字符串。 ""NULL 是两个不同的东西。因此,您正在寻找的是:

SELECT 
    id,
    datetime,
    CASE 
        WHEN tb_people IS NOT NULL THEN 'TRUE'
        ELSE 'FALSE'
    END
 FROM <BD>.<TABLE>

我还建议使用布尔值 truefalse 而不是字符串文字。这可以让你用ifnotnull(tb_people)https://hive.apache.org/javadocs/r3.0.0/api/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.html替换你的整个case语句。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2019-02-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2021-08-04
    • 2021-11-04
    • 1970-01-01
    • 2022-08-17
    相关资源
    最近更新 更多