hive自定义函数说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hive自定义函数说明函数清单:
用法:
getID
通过UUID来生成每一行的唯一ID:
select getid() ;
oracle_concat
hive的concat函数遇到空值的情况下会直接返回空,而在oracle中对于字符串类型空字符串与null是等价对待的
select default.oracle_concat('ff-',null,'','--cc');
Select concat('ff-',null,'','--cc');
getBirthDay
从身份证号码中截取生日信息,返回日期格式为’yyyy-MM-dd’
getGoodsInfo
self_date_format
为格式化来自oracle的时间格式,将格式为’yyyy/MM/dd’和’yyyy/MM/dd HH:mm:ss’的日期格式转换为’yyyy-MM-dd’
Select default. self_date_format(‘2012-12-12’);
Select default. self_date_format(‘20121212’,’yyyyMMdd’);
oracle_months_between
由于当前版本hive不带months_between函数,所以添加
oracle_decode
hive中的decode函数为字符编码函数和encode对应。Oracle中decode函数类似case when 函数,添加oracle_decode函数减少sql的改写。与为与oracle功能同步,本函数将null和字符串’’等价对待。
select default.oracle_decode('',null,1,2) r1,
default.oracle_decode(null,'',1,2) r2,
default.oracle_decode('aaa','','Nnull','aaa','is a*3','aaa') r3,
default.oracle_decode('ccc','', 'Nnull','aaa','is a*3','aaa') r4,
default.oracle_decode('','', 'Nnull','aaa','is a*3','aaa') r5;
BinomialTest
_FUNC_(expr1, expr2, p_value, alternativeHypothesis)
alternativeHypothesis:
接受指定值的字符串
取值:TWO_SIDED , GREATER_THAN , LESS_THAN
二项分布检测函数。实现oracle中的二项分布检测功能。
计算expr1 等于exper2 的值占数据总数的二项分布检测结果,类型依据alternativeHypothesis 确定
days_between_360
实现execl中的day360功能getbirthday
select default. getbirthday(身份证号码);
f_get_interest_effect
f_get_monthpay_bsm
f_get_monthpay_int
f_get_work_days
f_paymentschedule
SELECT
SRC.SERIALNO
,SRC.ACCT_LOAN_NO
,PDATE AS PAYDATE--SRC.PAYDATE ,SRC.PERIODS
,SRC.BUSINESSSUM
,SRC.BIR
,SRC.EIR
,SID--,SRC.SEQID
,PRINCIPAL-- SRC.PAYBUSINESSSUM ,INTEREST -- SRC.PAYINTEREST
,SRC.PAYCUSTOMERSERVICEFEE
,SRC.PAYACCOUNTMANAGEFEE
,SRC.PAYINSURANCEFEE
,SRC.PAYBUGPAYFEE
,TYPE
,CURRENT_DATE AS ETL_IN_DT
,src.CANCELEDDATE
FROM
FINANCE.FIN_ACCT_PAYMENT_SCHEDULE_FIX SRC
LATERAL VIEW
DEFAULT.F_PAYMENTSCHEDULE(SRC.PAYDATE,SRC.BIR/1200,SRC.PERIODS,SRC.BU SINESSSUM)
MYTABLE AS PRINCIPAL, INTEREST, PDATE,SID
WHERE SRC.P_DAY='2017-02-14'limit10
udf_dictionary
字典表: default.dictionary
字段: p_name 分区, key1 string, key2 string, value string
使用:
1.字典表插入数据
2.用udf_dictionary函数从字典表提取数据, 该函数接收3个参数, 第一、第二参数必须为
常量。三个参数分别对应字典表的p_name,key1,key2。
注意:字典表数据需要扫描和加载至内存,注意大小。加载至内存数据对应于通过p_name,key1过滤;字典表内数据可以反复使用;存储过程中setp1放置DataHome/DICTIONARY下,包含DICTIONARY时自动依赖
Step 1:
INSERT OVERWRITE TABLE default.dictionary
PARTITION(p_name='s3.CODE_LIBRARY_ITEMNAME')
SELECT
a.codeno
a.ITEMNO,
a.ITEMNAME
FROM s3.CODE_LIBRARY a;
Step 2:
Select DEFAULT.udf_dictionary('s3.CODE_LIBRARY_ITEMNAME ','Occupation',6);
default.ExtractCoordinates
单一参数入参:
select default.ExtractCoordinates('<126.542076,44.82494>');