hive自定义函数说明

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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>');

相关文档
最新文档