如果乙個hive 表的乙個字段 a 是array型別,裡面存在多個值,如果要對其中的某個值進行過濾,那麼可以用lateral view 結合udtf (user-defined table-generating functions) 來進行過濾
lateral view語法
lateralview: lateral view udtf(expression) tablealias as columnalias (',' columnalias)* fromclause: from basetable (lateralview)*
例如:real_id是乙個arr型別
select
count(1) from 表名 lateral view explode(real_id) rtable as realid where realid ='7057'
and statdate ='2015080221'
二、 udtf介紹
udtf(user-defined table-generating functions) 用來解決 輸入一行輸出多行(on-to-many maping) 的需求。
udtf 使用
udtf有兩種使用方法,一種直接放到select後面,一種和lateral view一起使用。
1:直接select中使用:select explode_map(properties) as (col1,col2) from src;
不可以新增其他字段使用:select a, explode_map(properties) as (col1,col2) from src
不可以巢狀呼叫:select explode_map(explode_map(properties)) from src
不可以和group
by/cluster by/distribute by/sort by一起使用:select explode_map(properties) as (col1,col2) from src group
by col1, col2
2:和lateral view一起使用:select src.id, mytable.col1, mytable.col2 from src lateral view explode_map(properties) mytable as col1, col2;
此方法更為方便日常使用。執行過程相當於單獨執行了兩次抽取,然後union到乙個表裡。
參考: BOS查詢過濾總集
驗證客戶名稱是否唯一 throws bo ception throws sqlexception private void isuniquename throws bo ception,sqlexception if prmtcustomernumber.getvalue null if custo...
C Linq 查詢過濾 where()
參考部落格。要點 where 有兩個原型。把滑鼠點到where,按下f12就可以轉到原型處 1 public static ienumerablewhere this ienumerablesource,funcpredicate 2 public static ienumerablewhere t...
ElasticSearch 常用的查詢過濾語句
query 和 filter 的區別請看 term主要用於精確匹配哪些值,比如數字,日期,布林值或 not analyzed 的字串 未經分析的文字資料型別 完整的例子,hostname 字段完全匹配成 saaap.wangpos.com 的資料 terms 跟 term 有點類似,但 terms ...