SQL和HIVE tableau中的時間函式處理

2021-07-24 16:46:55 字數 4368 閱讀 8428

sql和hive、tableau中的時間函式處理小技巧

全是工作中遇到的問題,分享給大家是想大家少走彎路、提高工作效率!

1.tableau :

按月的業績指標

sum(ifdatetrunc('month',[v_date])=datetrunc('month',[統計年月]) then [業績指標] else 0 end)

環比sum(ifdatetrunc('month',[v_date])=datetrunc('month',[統計年月]) then [業績指標] else 0 end)/sum(ifdatetrunc('month',[v_date])=dateadd('month',-1,datetrunc('month',[統計年月])) then [業績指標] else 0 end)-1

sum(ifdatetrunc('month',[日期])=datetrunc('month',[統計日期]) then [業績指標] else 0 end)/sum(if datetrunc('month',[日期])=dateadd('month',-1,datetrunc('month',[統計日期])) then [業績指標] else 0 end)-1

同比sum(ifdatetrunc('month',[v_date])=datetrunc('month',[統計年月]) then [業績指標] else 0 end)/sum(ifdatetrunc('month',[v_date])=dateadd('month',-12,datetrunc('month',[統計年月])) then [業績指標] else 0 end)-1

(ifdatetrunc('month',[日期])=datetrunc('month',[統計日期]) then [人效] else 0 end)/(if datetrunc('month',[日期])=dateadd('month',-1,datetrunc('month',[統計日期])) then [人效] else 0 end)-1

if[部門型別]='ka' then 0 else [加權人數] end) else 0 end )

[日期]=makedate(year([日期]),month([日期]),01) 當月第一天

if  [日期]= makedate(year([日期]),month([日期]),day(dateadd('day',-1,makedate(year(dateadd('month',1,[日期])),month(dateadd('month',1,[日期])),01))))then [待攤銷金額]

else null

end按月的業績指標

sum(ifdatetrunc('month',[v_date])=datetrunc('month',[統計年月]) then [業績指標] else 0 end)

環比sum(ifdatetrunc('month',[v_date])=datetrunc('month',[統計年月]) then [業績指標] else 0 end)/sum(ifdatetrunc('month',[v_date])=dateadd('month',-1,datetrunc('month',[統計年月])) then [業績指標] else 0 end)-1

sum(if [日期]>=datetrunc('month',dateadd('month',0,[統計日期])) and [日期]else 0 end )/(

[日期]=makedate(year([日期]),month([日期]),01) 當月第一天

if  [日期]= makedate(year([日期]),month([日期]),day(dateadd('day',-1,makedate(year(dateadd('month',1,[日期])),month(dateadd('month',1,[日期])),01))))then [待攤銷金額]

else null

endif[部門型別]='ka' then 0 else [加權人數] end) else 0 end )

[日期]=makedate(year([日期]),month([日期]),01) 當月第一天

if  [日期]= makedate(year([日期]),month([日期]),day(dateadd('day',-1,makedate(year(dateadd('month',1,[日期])),month(dateadd('month',1,[日期])),01))))then [待攤銷金額]

else null

endcontains(str([產品id]),'820201') ##如果 [產品id] 含有'820201'則為true。

2.sql(hive):

##hive

v_month>=date(concat(

(case whenint(from_unixtime(unix_timestamp(),'mm'))<2 thenint(from_unixtime(unix_timestamp(),'yyyy'))-2 elseint(from_unixtime(unix_timestamp(),'yyyy'))-1 end),'-',

(case whenint(from_unixtime(unix_timestamp(),'mm'))<2 thenint(from_unixtime(unix_timestamp(),'mm'))+11 elseint(from_unixtime(unix_timestamp(),'mm'))-1 end),'-01'))

where  v_month>=date(concat(substr(add_months(from_unixtime(unix_timestamp(),'yyyy-mm-dd'),-13),1,7),'-01')) #前13個月yyyy-mm-dd

regexp_replace(

substr(add_months(from_unixtime(unix_timestamp(),'yyyy-mm-dd'),-24),1,10),'-','') ## 前13個月yyyymmdd

#mysql:

date(concat(substr(date_add(sysdate(),interval-13 month),1,7),'-01')) ##增加月份

檢視分割槽: show partitions +表名

date_add(date,days)##增加天數

current_date() #當前時間

select  v_date  from  ods_ba.o_m_user_account_remain_daily

where(concat(substr(v_date,1,4),'-',substr(v_date,5,2),'-',substr(v_date,7,2)))=last_day((concat(substr(v_date,1,4),'-',substr(v_date,5,2),'-',substr(v_date,7,2))))

group by  v_date ###取每月最後一天

許可權表:

增加人員

update`t_hr_authorization`

setuser_list=concat(user_list,'junfan,') where business='name'

and company in('name1','name2')

##刪除人員

update`t_hr_authorization` 

set  user_list=replace(user_list,'junfan,','')where business='name'

and company in('name1','name2')

特別注意相關的資料格式的匹配,在相關資料處理工具中資料格式相容性會影響

etl.

對於許可權的檢視,賦予不同的資料許可權需要各種資料維表來控制資料許可權。

3.r:

資料處理包dplyr,查詢最大值的id:

library(dplyr)

order <-read.csv("order.csv")## 也可以是不同的資料來源:mysql,oracle,sqlite,hadoop,

class(order)##檢視order的類別

subset.data.frame(order,

totalprice >=max(totalprice), ##選出最大**

select = c(orderid,customerid, totalprice)) ##選出最大**中的orderid, customerid

subset(airquality,temp > 80, select = c(ozone, temp)) 

SQL 資料和表

1 mysql服務的啟動 net start mysql 2 登陸mysql 鍵入命令mysql u root p,回車提示你輸入password,鍵入12345,回車即可進入到mysql,mysql的提示符是 mysql 3 建立資料庫 create database database name ...

動態sql和分頁

1.mybatis動態sql 1.1 if 1.2 trim 1.3 foreach 1.4 其他 choose set where2.模糊查詢 3種方式 2.1 引數中直接加入 2.2 使用 代替 不建議使用該方式,有sql注入風險 關鍵 與 區別?引數型別為字串,會在前後加單引號 則直接插入值 ...

關係模型和SQL

為了介紹關係模型,以mysql資料庫為例.安裝mariadb sql是結構化查詢語言structured query language.1987年被iso組織標準化.所有主流的關係型資料庫都支援sql,nosql也有很大一部分支援sql.sql語句分為 語言規範 sql語句大小寫不敏感 sql語句末...