<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評論-209  文章-0  trackbacks-0

    原文見:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

    1.內(nèi)置運算符
    1.1關(guān)系運算符

    運算符類型說明
    A = B所有原始類型如果A與B相等,返回TRUE,否則返回FALSE
    A == B失敗,因為無效的語法。 SQL使用”=”,不使用”==”。
    A <> B所有原始類型如果A不等于B返回TRUE,否則返回FALSE。如果A或B值為”NULL”,結(jié)果返回”NULL”。
    A < B所有原始類型如果A小于B返回TRUE,否則返回FALSE。如果A或B值為”NULL”,結(jié)果返回”NULL”。
    A <= B所有原始類型如果A小于等于B返回TRUE,否則返回FALSE。如果A或B值為”NULL”,結(jié)果返回”NULL”。
    A > B所有原始類型如果A大于B返回TRUE,否則返回FALSE。如果A或B值為”NULL”,結(jié)果返回”NULL”。
    A >= B所有原始類型如果A大于等于B返回TRUE,否則返回FALSE。如果A或B值為”NULL”,結(jié)果返回”NULL”。
    A IS NULL所有類型如果A值為”NULL”,返回TRUE,否則返回FALSE
    A IS NOT NULL所有類型如果A值不為”NULL”,返回TRUE,否則返回FALSE
    A LIKE B字符串如果A或B值為”NULL”,結(jié)果返回”NULL”。字符串A與B通過sql進(jìn)行匹配,如果相符返回TRUE,不符返回FALSE。B字符串中 的”_”代表任一字符,”%”則代表多個任意字符。例如: (‘foobar’ like ‘foo’)返回FALSE,( ‘foobar’ like ‘foo_ _ _’或者 ‘foobar’ like ‘foo%’)則返回TURE
    A RLIKE B字符串如果A或B值為”NULL”,結(jié)果返回”NULL”。字符串A與B通過java進(jìn)行匹配,如果相符返回TRUE,不符返回FALSE。例如:( ‘foobar’ rlike ‘foo’)返回FALSE,(’foobar’ rlike ‘^f.*r$’ )返回TRUE。
    A REGEXP B字符串與RLIKE相同。

    1.2算術(shù)運算符

    運算符類型說明
    A + B所有數(shù)字類型A和B相加。結(jié)果的與操作數(shù)值有共同類型。例如每一個整數(shù)是一個浮點數(shù),浮點數(shù)包含整數(shù)。所以,一個浮點數(shù)和一個整數(shù)相加結(jié)果也是一個浮點數(shù)。
    A – B所有數(shù)字類型A和B相減。結(jié)果的與操作數(shù)值有共同類型。
    A * B所有數(shù)字類型A和B相乘,結(jié)果的與操作數(shù)值有共同類型。需要說明的是,如果乘法造成溢出,將選擇更高的類型。
    A / B所有數(shù)字類型A和B相除,結(jié)果是一個double(雙精度)類型的結(jié)果。
    A % B所有數(shù)字類型A除以B余數(shù)與操作數(shù)值有共同類型。
    A & B所有數(shù)字類型運算符查看兩個參數(shù)的二進(jìn)制表示法的值,并執(zhí)行按位”與”操作。兩個表達(dá)式的一位均為1時,則結(jié)果的該位為 1。否則,結(jié)果的該位為 0。
    A|B所有數(shù)字類型 運算符查看兩個參數(shù)的二進(jìn)制表示法的值,并執(zhí)行按位”或”操作。只要任一表達(dá)式的一位為 1,則結(jié)果的該位為 1。否則,結(jié)果的該位為 0。 
    A ^ B所有數(shù)字類型運算符查看兩個參數(shù)的二進(jìn)制表示法的值,并執(zhí)行按位”異或”操作。當(dāng)且僅當(dāng)只有一個表達(dá)式的某位上為 1 時,結(jié)果的該位才為 1。否則結(jié)果的該位為 0。
    ~A所有數(shù)字類型對一個表達(dá)式執(zhí)行按位”非”(取反)。

    1.3邏輯運算符

    運算符類型說明
    A AND B布爾值A和B同時正確時,返回TRUE,否則FALSE。如果A或B值為NULL,返回NULL。
    A && B布爾值與”A AND B”相同
    A OR B布爾值A或B正確,或兩者同時正確返返回TRUE,否則FALSE。如果A和B值同時為NULL,返回NULL。
    A | B布爾值與”A OR B”相同
    NOT A布爾值如果A為NULL或錯誤的時候返回TURE,否則返回FALSE。
    ! A布爾值與”NOT A”相同

    1.4復(fù)雜類型函數(shù)

    函數(shù)類型說明
    map(key1, value1, key2, value2, …)通過指定的鍵/值對,創(chuàng)建一個map。
    struct(val1, val2, val3, …)通過指定的字段值,創(chuàng)建一個結(jié)構(gòu)。結(jié)構(gòu)字段名稱將COL1,COL2,…
    array(val1, val2, …)通過指定的元素,創(chuàng)建一個數(shù)組。

    1.5對復(fù)雜類型函數(shù)操作

    函數(shù)類型說明
    A[n]A是一個數(shù)組,n為int型返回數(shù)組A的第n個元素,第一個元素的索引為0。如果A數(shù)組為['foo','bar'],則A[0]返回’foo’和A[1]返回”bar”。
    M[key]M是Map<K, V>,關(guān)鍵K型返回關(guān)鍵值對應(yīng)的值,例如mapM為 \{‘f’ -> ‘foo’, ‘b’ -> ‘bar’, ‘all’ -> ‘foobar’\},則M['all'] 返回’foobar’。
    S.xS為struct返回結(jié)構(gòu)x字符串在結(jié)構(gòu)S中的存儲位置。如 foobar \{int foo, int bar\} foobar.foo的領(lǐng)域中存儲的整數(shù)。

    2.內(nèi)置函數(shù)
    2.1數(shù)學(xué)函數(shù)

    返回類型函數(shù)說明
    BIGINTround(double a)四舍五入
    DOUBLEround(double a, int d)小數(shù)部分d位之后數(shù)字四舍五入,例如round(21.263,2),返回21.26
    BIGINTfloor(double a)對給定數(shù)據(jù)進(jìn)行向下舍入最接近的整數(shù)。例如floor(21.2),返回21。
    BIGINTceil(double a), ceiling(double a)將參數(shù)向上舍入為最接近的整數(shù)。例如ceil(21.2),返回23.
    doublerand(), rand(int seed)返回大于或等于0且小于1的平均分布隨機(jī)數(shù)(依重新計算而變)
    doubleexp(double a)返回e的n次方
    doubleln(double a)返回給定數(shù)值的自然對數(shù)
    doublelog10(double a)返回給定數(shù)值的以10為底自然對數(shù)
    doublelog2(double a)返回給定數(shù)值的以2為底自然對數(shù)
    doublelog(double base, double a)返回給定底數(shù)及指數(shù)返回自然對數(shù)
    doublepow(double a, double p) power(double a, double p)返回某數(shù)的乘冪
    doublesqrt(double a)返回數(shù)值的平方根
    stringbin(BIGINT a)返回二進(jìn)制格式,參考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex
    stringhex(BIGINT a) hex(string a)將整數(shù)或字符轉(zhuǎn)換為十六進(jìn)制格式。參考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex
    stringunhex(string a)十六進(jìn)制字符轉(zhuǎn)換由數(shù)字表示的字符。
    stringconv(BIGINT num, int from_base, int to_base)將指定數(shù)值,由原來的度量體系轉(zhuǎn)換為指定的試題體系。例如CONV(‘a’,16,2),返回。參考:’1010′ http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_conv
    doubleabs(double a)取絕對值
    int doublepmod(int a, int b) pmod(double a, double b)返回a除b的余數(shù)的絕對值
    doublesin(double a)返回給定角度的正弦值
    doubleasin(double a)返回x的反正弦,即是X。如果X是在-1到1的正弦值,返回NULL。
    doublecos(double a)返回余弦
    doubleacos(double a)返回X的反余弦,即余弦是X,,如果-1<= A <= 1,否則返回null.
    int doublepositive(int a) positive(double a)返回A的值,例如positive(2),返回2。
    int doublenegative(int a) negative(double a)返回A的相反數(shù),例如negative(2),返回-2。

    2.2收集函數(shù)

    返回類型函數(shù)說明
    intsize(Map<K.V>)返回的map類型的元素的數(shù)量
    intsize(Array<T>)返回數(shù)組類型的元素數(shù)量

    2.3類型轉(zhuǎn)換函數(shù)

    返回類型函數(shù)說明
    指定 “type”cast(expr as <type>)類型轉(zhuǎn)換。例如將字符”1″轉(zhuǎn)換為整數(shù):cast(’1′ as bigint),如果轉(zhuǎn)換失敗返回NULL。

    2.4日期函數(shù)

    返回類型函數(shù)說明
    stringfrom_unixtime(bigint unixtime[, string format])UNIX_TIMESTAMP參數(shù)表示返回一個值’YYYY- MM – DD HH:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式,這取決于是否是在一個字符串或數(shù)字語境中使用的功能。該值表示在當(dāng)前的時區(qū)。
    bigintunix_timestamp()如果不帶參數(shù)的調(diào)用,返回一個Unix時間戳(從’1970- 01 – 0100:00:00′到現(xiàn)在的UTC秒數(shù))為無符號整數(shù)。
    bigintunix_timestamp(string date)指定日期參數(shù)調(diào)用UNIX_TIMESTAMP(),它返回參數(shù)值’1970- 01 – 0100:00:00′到指定日期的秒數(shù)。
    bigintunix_timestamp(string date, string pattern)指定時間輸入格式,返回到1970年秒數(shù):unix_timestamp(’2009-03-20′, ‘yyyy-MM-dd’) = 1237532400 參考:http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
    stringto_date(string timestamp)返回時間中的年月日: to_date(“1970-01-01 00:00:00″) = “1970-01-01″
    stringto_dates(string date)給定一個日期date,返回一個天數(shù)(0年以來的天數(shù))
    intyear(string date)返回指定時間的年份,范圍在1000到9999,或為”零”日期的0。
    intmonth(string date)返回指定時間的月份,范圍為1至12月,或0一個月的一部分,如’0000-00-00′或’2008-00-00′的日期。
    intday(string date) dayofmonth(date)返回指定時間的日期
    inthour(string date)返回指定時間的小時,范圍為0到23。
    intminute(string date)返回指定時間的分鐘,范圍為0到59。
    intsecond(string date)返回指定時間的秒,范圍為0到59。
    intweekofyear(string date)返回指定日期所在一年中的星期號,范圍為0到53。
    intdatediff(string enddate, string startdate)兩個時間參數(shù)的日期之差。
    intdate_add(string startdate, int days)給定時間,在此基礎(chǔ)上加上指定的時間段。
    intdate_sub(string startdate, int days)給定時間,在此基礎(chǔ)上減去指定的時間段。

    2.5條件函數(shù)

    返回類型函數(shù)說明
    Tif(boolean testCondition, T valueTrue, T valueFalseOrNull)判斷是否滿足條件,如果滿足返回一個值,如果不滿足則返回另一個值。
    TCOALESCE(T v1, T v2, …)返回一組數(shù)據(jù)中,第一個不為NULL的值,如果均為NULL,返回NULL。
    TCASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END當(dāng)a=b時,返回c;當(dāng)a=d時,返回e,否則返回f。
    TCASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END當(dāng)值為a時返回b,當(dāng)值為c時返回d。否則返回e。

    2.6字符函數(shù)

    返回類型函數(shù)說明
    intlength(string A)返回字符串的長度
    stringreverse(string A)返回倒序字符串
    stringconcat(string A, string B…)連接多個字符串,合并為一個字符串,可以接受任意數(shù)量的輸入字符串
    stringconcat_ws(string SEP, string A, string B…)鏈接多個字符串,字符串之間以指定的分隔符分開。
    stringsubstr(string A, int start) substring(string A, int start)從文本字符串中指定的起始位置后的字符。
    stringsubstr(string A, int start, int len) substring(string A, int start, int len)從文本字符串中指定的位置指定長度的字符。
    stringupper(string A) ucase(string A)將文本字符串轉(zhuǎn)換成字母全部大寫形式
    stringlower(string A) lcase(string A)將文本字符串轉(zhuǎn)換成字母全部小寫形式
    stringtrim(string A)刪除字符串兩端的空格,字符之間的空格保留
    stringltrim(string A)刪除字符串左邊的空格,其他的空格保留
    stringrtrim(string A)刪除字符串右邊的空格,其他的空格保留
    stringregexp_replace(string A, string B, string C)字符串A中的B字符被C字符替代
    stringregexp_extract(string subject, string pattern, int index)通過下標(biāo)返回正則表達(dá)式指定的部分。regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) returns ‘bar.’
    stringparse_url(string urlString, string partToExtract [, string keyToExtract])返回URL指定的部分。parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1′, ‘HOST’) 返回:’facebook.com’
    stringget_json_object(string json_string, string path)select a.timestamp, get_json_object(a.appevents, ‘$.eventid’), get_json_object(a.appenvets, ‘$.eventname’) from log a;
    stringspace(int n)返回指定數(shù)量的空格
    stringrepeat(string str, int n)重復(fù)N次字符串
    intascii(string str)返回字符串中首字符的數(shù)字值
    stringlpad(string str, int len, string pad)返回指定長度的字符串,給定字符串長度小于指定長度時,由指定字符從左側(cè)填補(bǔ)。
    stringrpad(string str, int len, string pad)返回指定長度的字符串,給定字符串長度小于指定長度時,由指定字符從右側(cè)填補(bǔ)。
    arraysplit(string str, string pat)將字符串轉(zhuǎn)換為數(shù)組。
    intfind_in_set(string str, string strList)返回字符串str第一次在strlist出現(xiàn)的位置。如果任一參數(shù)為NULL,返回NULL;如果第一個參數(shù)包含逗號,返回0。
    array<array<string>>sentences(string str, string lang, string locale)將字符串中內(nèi)容按語句分組,每個單詞間以逗號分隔,最后返回數(shù)組。 例如sentences(‘Hello there! How are you?’) 返回:( (“Hello”, “there”), (“How”, “are”, “you”) )
    array<struct<string,double>>ngrams(array<array<string>>, int N, int K, int pf)SELECT ngrams(sentences(lower(tweet)), 2, 100 [, 1000]) FROM twitter;
    array<struct<string,double>>context_ngrams(array<array<string>>, array<string>, int K, int pf)SELECT context_ngrams(sentences(lower(tweet)), array(null,null), 100, [, 1000]) FROM twitter;

    3.內(nèi)置的聚合函數(shù)(UDAF)

    返回類型函數(shù)說明
    bigintcount(*) , count(expr), count(DISTINCT expr[, expr_., expr_.])返回記錄條數(shù)。
    doublesum(col), sum(DISTINCT col)求和
    doubleavg(col), avg(DISTINCT col)求平均值
    doublemin(col)返回指定列中最小值
    doublemax(col)返回指定列中最大值
    doublevar_pop(col)返回指定列的方差
    doublevar_samp(col)返回指定列的樣本方差
    doublestddev_pop(col)返回指定列的偏差
    doublestddev_samp(col)返回指定列的樣本偏差
    doublecovar_pop(col1, col2)兩列數(shù)值協(xié)方差
    doublecovar_samp(col1, col2)兩列數(shù)值樣本協(xié)方差
    doublecorr(col1, col2)返回兩列數(shù)值的相關(guān)系數(shù)
    doublepercentile(col, p)返回數(shù)值區(qū)域的百分比數(shù)值點。0<=P<=1,否則返回NULL,不支持浮點型數(shù)值。
    array<double>percentile(col, array(p~1,,\ [, p,,2,,]…))返回數(shù)值區(qū)域的一組百分比值分別對應(yīng)的數(shù)值點。0<=P<=1,否則返回NULL,不支持浮點型數(shù)值。
    doublepercentile_approx(col, p[, B])Returns an approximate p^th^ percentile of a numeric column (including floating point types) in the group. The B parameter controls approximation accuracy at the cost of memory. Higher values yield better approximations, and the default is 10,000. When the number of distinct values in col is smaller than B, this gives an exact percentile value.
    array<double>percentile_approx(col, array(p~1,, [, p,,2_]…) [, B])Same as above, but accepts and returns an array of percentile values instead of a single one.
    array<struct\{‘x’,'y’\}>histogram_numeric(col, b)Computes a histogram of a numeric column in the group using b non-uniformly spaced bins. The output is an array of size b of double-valued (x,y) coordinates that represent the bin centers and heights
    arraycollect_set(col)返回?zé)o重復(fù)記錄

    4.內(nèi)置表生成函數(shù)(UDTF)

    返回類型函數(shù)說明
    數(shù)組explode(array<TYPE> a)數(shù)組一條記錄中有多個參數(shù),將參數(shù)拆分,每個參數(shù)生成一列。
     json_tupleget_json_object語句:select a.timestamp, get_json_object(a.appevents, ‘$.eventid’), get_json_object(a.appenvets, ‘$.eventname’) from log a; json_tuple語句: select a.timestamp, b.* from log a lateral view json_tuple(a.appevent, ‘eventid’, ‘eventname’) b as f1, f2

    explode示例:

    數(shù)組SQL返回
    myCol 
    [1,2] 
    [3,4]
    SELECT explode(myCol) AS myNewCol FROM myTablemyNewCol



    4
    posted on 2015-01-06 17:01 xzc 閱讀(434) 評論(0)  編輯  收藏 所屬分類: hadoop
    主站蜘蛛池模板: 国产精品午夜免费观看网站 | 亚洲国产精品成人网址天堂| 亚洲国产成人久久精品99 | 亚洲AV午夜福利精品一区二区| 国产精品无码免费专区午夜| 国产成人亚洲影院在线观看| 一级做a爰片久久毛片免费看| 亚洲精品动漫人成3d在线| 一级做a爱片特黄在线观看免费看| 亚洲麻豆精品国偷自产在线91| 草久免费在线观看网站| 久久精品国产亚洲Aⅴ蜜臀色欲| 一级毛片**免费看试看20分钟| 亚洲伊人成无码综合网| 久久国产精品免费一区| 亚洲老妈激情一区二区三区| 日本免费中文字幕| 亚洲午夜精品久久久久久人妖| 久久久久av无码免费网| 亚洲乱码一二三四区乱码| 夭天干天天做天天免费看| 国产AV无码专区亚洲AV蜜芽| 一区二区三区亚洲视频| 国产免费黄色无码视频| 久久亚洲国产午夜精品理论片| 日本xxxx色视频在线观看免费| 亚洲国产精品午夜电影| 大地资源免费更新在线播放| 色窝窝亚洲AV网在线观看| 亚洲精品麻豆av| 国产午夜免费高清久久影院| 亚洲精品91在线| 成人免费777777| 日本高清免费中文在线看| 亚洲中文字幕第一页在线| 无码人妻久久一区二区三区免费 | 亚洲av永久无码精品网站| 3344免费播放观看视频| 国产精品亚洲综合久久 | 一个人看的在线免费视频| 久久综合日韩亚洲精品色|