国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Hive之Map常用方法

這篇具有很好參考價值的文章主要介紹了Hive之Map常用方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

實際工作中,有時會出現(xiàn)map復(fù)雜數(shù)據(jù)類型,字段field1形式如:{‘k0’:‘a(chǎn)bc’,‘k1’:‘01,02,03’,‘k2’:‘456’},如果是string形式,我們可以適用get_json_object 函數(shù),取出對應(yīng)的value值,具體如:get_json_object(field,‘$.k0’),即可取出值abc,如果是map數(shù)據(jù)類型,這個值該怎么取呢?
可以適用field[‘k0’]這種形式取出abc,順便把map數(shù)據(jù)類型的常用方法做個總結(jié);

Map常用方法

params為字段名,數(shù)據(jù)類型為MAP類型;

  1. size(Map)函數(shù):可得map的長度。返回值類型:int
select size(t.params);
>> 3
  1. map_keys(Map)函數(shù):可得map中所有的key; 返回值類型: array
select map_keys(t.params);
>> ["k0","k1","k2"]

3.map_values(Map)函數(shù):可得map中所有的value; 返回值類型: array

select map_value(t.params);
>> ["abc","01,02,03","456"]

4.判斷map中是否包含某個key值:這種情況較為常見,多用于一些復(fù)雜邏輯判斷中;

select array_contains(map_keys(t.params),'k0');
>> true
  1. 在k-v對中,若value有多個值的情況,如 {‘k1’:‘01,02,03’} ,如果要用 ‘k1’ 中 '02’作為過濾條件,則語句如下:

    (這里用到split來處理)

select * 
from t 
where split(t.params['k1'],',')[1]
>> 02

6.如果過濾條件為:k2的值必須為’45’開頭,則語句如下:

(這里用到substr方法來處理,這里注明一下,1和2分別表示起始位置和長度)

select * 
from t 
where substr(t.params['k2'],1,2) = '45'

Map數(shù)據(jù)類型轉(zhuǎn)String類型

with test_map_1 as (
select 1 as uid, map("key1", "value1","key2", "value2") as map1 union all 
select 2 as uid, map("key3", "value3","key4", "value4") as map1
)
--hive> select * from test_map_1;
--OK
--test_map_1.uid	test_map_1.map1
--1	{"key1":"value1","key2":"value2"}
--2	{"key3":"value3","key4":"value4"}

select 
    uid,
    concat('{"', regexp_replace(concat_ws(',', collect_list(concat_ws('":"', k,v) ) ),'\\,','\\"\\,\\"'), '"}') as string1
from test_map_1
lateral view outer explode(map1) kv as k,v
group by uid
;
 select * from test_map_1_to_string;
OK
test_map_1_to_string.uid	test_map_1_to_string.string1
1	{"key1":"value1","key2":"value2"}
2	{"key3":"value3","key4":"value4"}
--如果大括號不需要,可以去掉最外層concat()函數(shù);
--如果不需要雙引號"",則可以將concat_ws('":"', k,v)改為concat_ws(':', k,v)

實戰(zhàn)

有時一段復(fù)雜的sql,不僅會用到field[‘k0’]形式,還會用到get_json_object(field,‘ . k 0 ′ ),甚至?xí)玫? g e t j s o n o b j e c t ( f i e l d [ ′ k 0 ′ ] , ′ .k0'),甚至?xí)玫?get_json_object(field['k0'],' .k0),甚至?xí)玫?/span>getj?sono?bjectfield[k0],.kk’),待補充;文章來源地址http://www.zghlxwxcb.cn/news/detail-423124.html

到了這里,關(guān)于Hive之Map常用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 常用的map轉(zhuǎn)bean互轉(zhuǎn)方法

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 這個很常用,還支持將蛇形轉(zhuǎn)成駝,如:apply_time 會賦值到applyTime上 這個也很常用,也支持將蛇型轉(zhuǎn)成駝峰, 如: apply_time 會賦值到 applyTime 上 嵌套型map,轉(zhuǎn)換會有問題,且 不支持蛇型轉(zhuǎn)成駝峰 這個也

    2024年02月16日
    瀏覽(18)
  • Flutter中Map、List數(shù)組的常用方法

    Dart語言是Flutter開發(fā)的必備語言,官方地址如下:Dart:https://dart.cn/ 使用dart工具來運行這些常用的方法,工具:https://dartpad.cn 在Dart中,Map用來存儲對像類型的數(shù)據(jù),List與Set用來存儲數(shù)組類型的數(shù)據(jù)。 Map的創(chuàng)建實例如下: 創(chuàng)建有一個有初始值的Map,代碼如下: 根據(jù)List數(shù)據(jù)來

    2024年02月08日
    瀏覽(26)
  • JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()

    JavaScript 之 常用迭代方法forEach、filter()、map()、reduce()

    代碼如下: 如下: 代碼簡潔很多,如下: 簡介 : filter() 方法創(chuàng)建給定數(shù)組一部分的淺拷貝,其包含通過所提供函數(shù)實現(xiàn)的測試的所有元素。 語法 : 參數(shù)、返回值 描述 參考官網(wǎng): 官網(wǎng)——Array.prototype.filter(). 代碼如下: 代碼如下: 下例使用 filter() 根據(jù)搜索條件來過濾數(shù)

    2024年02月09日
    瀏覽(17)
  • 進(jìn)階JAVA篇- Map 系列集合的遍歷方法與常用API

    進(jìn)階JAVA篇- Map 系列集合的遍歷方法與常用API

    目錄 ? ? ? ? 1.0 Map 集合的說明 ? ? ? ? 1.1 Map 集合的常用方法 ? ? ? ? 1.2?Map 系列集合的特點 ? ? ? ? 2.0?Map 系列集合的遍歷方法(三種方法) ???????? 2.1 使用 keySet() 方法遍歷 ????????2.2 使用 entrySet() 方法遍歷 ????????2.3 使用 forEach() 方法遍歷(Java 8+) ?

    2024年02月08日
    瀏覽(29)
  • Python 自動化指南(繁瑣工作自動化)第二版:零、前言

    Python 自動化指南(繁瑣工作自動化)第二版:零、前言

    Al Sweigart 是一名軟件開發(fā)人員和技術(shù)書籍作者。Python 是他最喜歡的編程語言,他是該語言的幾個開源模塊的開發(fā)者。他的其他書籍可以在他的網(wǎng)站上根據(jù)知識共享許可免費獲得。他的貓現(xiàn)在重 11 磅。 Philip James 從事 Python 工作已經(jīng)超過十年,是 Python 社區(qū)的???。他的演講主

    2023年04月08日
    瀏覽(101)
  • Hive中生成自增序列的常用方法

    在日常業(yè)務(wù)開發(fā)過程中,通常遇到需要hive數(shù)據(jù)表中生成一列唯一ID,當(dāng)然連續(xù)遞增的更好。 最近在結(jié)算業(yè)務(wù)中,需要在hive表中生成一列連續(xù)且唯一的賬單ID,于是就了解生成唯一ID的方法 語法:row_number() over(order by step)+start_num step表示每次遞增多少 start_num表示從哪個值開始遞

    2024年02月08日
    瀏覽(25)
  • vue3【偵測|過濾|數(shù)組方法】數(shù)據(jù)變化偵測&&信息篩選過濾&&常用數(shù)組方法.filter() .map() .forEach(). find()

    內(nèi)容回顧 點擊快速復(fù)習(xí)v-for??????。本期內(nèi)容主要是 數(shù)據(jù)變化的檢測 和 信息的過濾篩選 以及 常用的數(shù)組方法 ?? ( .filter() 、 .map() 、 .forEach() 、 .find() 、 .findIndex() 、 .some() 、 .every() 、 .fill() )。 延展一下 :?????? 關(guān)于數(shù)據(jù)的變化——比如,對表格數(shù)據(jù)進(jìn)行的搜索,

    2024年02月10日
    瀏覽(37)
  • ChatGPT 實際上是如何工作的?

    ChatGPT 實際上是如何工作的?

    添加圖片注釋,不超過 140 字(可選) ChatGPT 操作的兩個主要階段 我們再用谷歌來打個比方。當(dāng)你要求谷歌查找某些內(nèi)容時,你可能知道它不會——在你提出要求的那一刻——出去搜索整個網(wǎng)絡(luò)來尋找答案。相反,谷歌會在其數(shù)據(jù)庫中搜索與該請求匹配的頁面。Google 實際上有

    2024年02月05日
    瀏覽(18)
  • 深入解析SDRAM:從工作原理到實際應(yīng)用

    深入解析SDRAM:從工作原理到實際應(yīng)用

    在眾多內(nèi)存技術(shù)中,同步動態(tài)隨機訪問存儲器(SDRAM)因其出色的性能和廣泛的應(yīng)用而備受關(guān)注。本文將從SDRAM的工作原理入手,探討其性能優(yōu)化策略和在現(xiàn)代電子設(shè)備中的應(yīng)用。 SDRAM利用同步技術(shù)提高數(shù)據(jù)處理效率,其獨特之處在于能夠與系統(tǒng)的時鐘信號同步,從而優(yōu)化數(shù)據(jù)

    2024年02月22日
    瀏覽(26)
  • 【git】實際應(yīng)用中可能會出現(xiàn)的問題

    問題: 方法一:git stash命令暫存。 git stash命令,先將本地的所有修改就都被暫時存儲起來,其中stash@{0}就是剛才保存的標(biāo)記。后續(xù)可以通過此標(biāo)記訪問。 git pull命令,拉取代碼 git stash pop stash@{0},還原暫存內(nèi)容。從Git棧中讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容。

    2024年02月11日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包