数仓的常用函数

发布时间 2023-12-27 18:33:32作者: 太白之魔童降世

数仓的常用函数


### 当前日期
select current_date()

###  当前时间
select current_timestamp()

###  日期增加函数
select date_add(current_date(),3) from  dws_study.user_video_log_new_daily limit 10

###  日期减少函数
select date_sub(current_date(),10) from  dws_study.user_video_log_new_daily limit 10

###  字符串解析成日期函数
select date_format(current_timestamp(),'yyyy--MM-dd HH:mm:ss') from  dws_study.user_video_log_new_daily limit 10

###  if函数
select if(1=1,100,200) from dws_study.user_video_log_new_daily limit 1   -----100   T返回100 F返回200

###  非空函数coalesce  返回第一个非空值,若都为null,则返回null
select coalesce(null,1,2) from dws_study.user_video_log_new_daily limit 1

###  条件判断case
### 1 如果a等于b 返回c ;如果a等于d,返回e,否则返回f
### 2 如果a为T返回b ;如果c为T返回d 否则返回e
select 
case 100
when 50 then 'c' 
when 100 then 'e' 
else' f' end 
from dws_study.user_video_log_new_daily limit 1

select
case when 1=2 then '0'
when 2=2 then 'I'
else 'U' end 
from dws_study.user_video_log_new_daily limit 1

###  正则表达替换函数 regexp_replace

select 
    regexp_replace('foobar','oo|ar','')
    from 
    dws_study.user_video_log_new_daily limit 1

###  正则表达解析函数哇
##### 将字符串分为几部分 按照下表分段取值
select 
  regexp_extract('abcddefg..0','abc(.*?)(..0)',1)
  from 
  dws_study.user_video_log_new_daily limit 1
    
### split()分割函数
select 
    split('asffghjfg','f')
    from 
    dws_study.user_video_log_new_daily limit 1
    
    
### cast() 类型转化函数
select 
    cast('001' as bigint)
    from 
    dws_study.user_video_log_new_daily limit 1
    
### get_json_object() 解析函数
SELECT 
        get_json_object("{'name': 'xiaowang', 'age': 18}", '$.name') AS name,  
       get_json_object("{'name': 'xiaowang', 'age': 18}", '$.age') AS age  
FROM dws_study.user_video_log_new_daily  
LIMIT 1;