暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[Hive系列07] 条件函数

数据分析师的FIRE人生 2021-06-20
1373

点击上方「数据分析师的FIRE人生」→

点击右上角「...」→设为星标


大家好,我是风影楼,一名互联网公司的数据分析师。之前我曾在CSDN编写了Hive系列的付费博客专栏,目前收获了25W次的访问,不过由于CSDN的付费设置无法取消,所以我决定在公众号重新免费分享一遍。这一篇主要介绍Hive中的条件函数。


1、 空值判断函数


1)nvl(T value, T default_value)


功能:如果value的值为NULL就返回default_value,如果不为null就返回value本身。value和default_value可以是任何数据类型的值,可以是多层其他函数嵌套的返回结果。(常用)


举例:

    第一个参数为NULL就返回第二个参数
    hive (app)> select nvl (null,'hzy');
    hzy


    第一个参数不为NULL就返回第一个参数本身
    hive (app)> select nvl ('ytr','hzy');
    ytr


    2)isnull( a )


    功能:a可以为任意数据类型的值,如果a为null就返回true,否则返回false。(不常用)


    举例:

      hive (app)> select isnull(null);
      true


      hive (app)> select isnull(1);
      false


      3)isnotnull ( a )


      功能:功能与isnull相反,a可以为任意数据类型的值,如果a不为null就返回true,否则返回false。(不常用)


      举例:

        hive (app)> select isnotnull (null);
        false


        hive (app)> select isnotnull (1);
        true

         

        4)coalesce(T v1, T v2, ...)


        功能:返回参数中第一个不是null的值,如果全部都为NULL就返回NULL,可以传任意个参数。(不常用)


        举例:

          hive (app)> select coalesce(NULL,44,55);
          44


          hive (app)> select coalesce(NULL,NULL,55);
          55


          2、 条件判断函数


          1)IF(boolean testCondition, T valueTrue, T valueFalseOrNull)


          功能:if(条件表达式,结果1,结果2),类似java中的三目运算符。如果条件表达式testCondition 为true,就返回结果1 valueTrue,否则返回结果2 valueFalseOrNull。(valueTrue,valueFalseOrNull可以是任意类型的返回值)


          举例:

            hive (app)> select if(1=1,'hzy','ytr');
            hzy


            hive (app)> select if(1=2,'hzy','ytr');
            ytr


            2)CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END (不常用)


            功能:如果a等于b,那么返回c;如果a等于d,那么返回e;后面还可以有无数个[WHEN d THEN e],最后else可以省略,加else会将剩余结果归到这一类, 不加else如果有剩余结果未被归类会返回NULL。


            其中的a、b、c、d、e、f等既可以是一个表字段,也可以是自己自定义的内容。


            这个函数因为限定了只能是等于的关系,且可以被下面的case函数替代,所以使用较少。


            举例:

              hive (app)> select case 1 when 1 then 'hzy' else 'ytr' end;
              hzy


              hive (app)> select case 1 when 2 then 'hzy' else 'ytr' end;
              ytr



              3)CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END (常用)


              功能:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e。


              这里所有WHEN与THEN之间的都必须是条件表达式,只能是TRUE或者FALSE的结果,否则会报错。其余THEN后的返回项既可以是一个表字段,也可以是自己自定义的内容。


              举例:

                hive (app)> select case when 1=1 then 'hzy' else 'ytr' end;
                hzy


                hive (app)> select case when 1=2 then 'hzy' else 'ytr' end;
                ytr


                3、条件函数的使用

                所有的条件函数在使用时,均可与其他任何函数进行嵌套使用,最常用的是和COUNT函数结合使用:


                • COUNT(CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END) 

                • COUNT(IF(boolean testCondition, T valueTrue, T valueFalseOrNull)) 




                点个在看你最好看


                文章转载自数据分析师的FIRE人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论