–建立表,並定義map型別
create
table employee(id string, perf map
)row format delimited
fields
terminated
by'\t'
collection items terminated
by','
--map形式key:value,key:value
map keys
terminated
by':'
;--map形式key:value,key:value
map中的方法:
size(map)函式:可得map的長度。返回值型別:int
map_keys(map)函式:可得map中所有的key; 返回值型別: array
map_values(map)函式:可得map中所有的value; 返回值型別: array
判斷map中是否包含某個key值:array_contains(map_keys(k_v),『a』)或者k_v[「a」] is not null
在k-v對中,若value有多個值的情況,如 ,如果要用 『k1』 中 '02』作為過濾條件,則語句如下:(這裡用到split來處理)select * from t where split(t.params['k1'],',')[1] ;
如果過濾條件為:k2的值必須為』45』開頭,則語句如下:
(這裡用到substr方法來處理,這裡註明一下,1和2分別表示起始位置和長度)
select
*from t where substr(t.params[
'k2'],
1,2)
='45'
;
案例:
–字串轉map型別
–1.判斷key是否在map中存在
select mm.
*, array_contains(map_keys(k_v)
,'a'
)from
(select t.w,str_to_map(concat_ws(
'&',collect_set(concat(m,
":",mc)))
,"&"
,":"
) k_v --1.拼接字串為 key:value&key:value;2.將拼接的字串轉成map型別
from
(select
1 w,
'a' m,
"中" mc
union
allselect
1 w,
'b' m,
"國" mc
union
allselect
2 w,
'c' m,
"好" mc
) t group
by t.w
) mm
;
–2.判斷key是否在map中存在
select mm.
*from
(select t.w,str_to_map(concat_ws(
'&',collect_set(concat(m,
":",mc)))
,"&"
,":"
) k_v
from
(select
1 w,
'a' m,
"中" mc
union
allselect
1 w,
'b' m,
"國" mc
union
allselect
2 w,
'c' m,
"好" mc
) t group
by t.w
) mm where k_v[
"a"]
isnot
null
;
–3.map的單行轉多行
select mm.
*, y.n_m,y.n_mc from
(select t.w,str_to_map(concat_ws(
'&',collect_set(concat(m,
":",mc)))
,"&"
,":"
) k_v
from
(select
1 w,
'a' m,
"中" mc
union
allselect
1 w,
'b' m,
"國" mc
union
allselect
2 w,
'c' m,
"好" mc
) t group
by t.w
) mm
lateral view explode(mm.k_v) y as n_m,n_mc
;
結果:
Hive表型別及其操作
create database demo use demo create table table 1 id int,name varchar 8 create external table table 2 id int,name varchar 8 row format delimited fiel...
Python中的集合型別及其操作
集合是乙個無序的 字典也是無序的 不重複的資料集合。其基本功能包括下面兩種 1.去重 把乙個還有重複元素的列表或元組等資料型別轉變成集合,其中的重複元素只出現一次。使用set 方法。2.進行關係測試 測試兩組資料之間的交集,差集,並集等資料關係。首先是乙個使用set 去重的例子 可見a,b分別為含有...
redis中string型別及其操作
新增乙個name guo的鍵值對 set name guo get name guo setnx name guo new integer 0 get name guo 原來的name有乙個對應的值,所以本次的修改不生效,返回0 設定key對應的value並且指定此鍵值的有效期 setex colo...