例一:行轉列
資料:ab1
ac2ab3
cd4cd5
cd6轉化為:
ab1,2,3
cd4,5,6
創表hive>createtabletest1(col1string,col2string,col3string)rowformatdelimitedfieldsterminatedby'';
載入資料:
hive>loaddatalocalinpath'/home/huangwei/test.txt'intotabletest1;
使用的函式說明:
concat_wa(stringsep,stringarray)函式返回字串連線後的結果,sep表示各個字串直接的分割符
collect_set(col)函式 將col欄位進行去重,並合併成乙個陣列
實現方式:
hive>selectcol1,col2,concat_ws(',',collect_set(col3))fromtest1groupbycol1,col2;
列轉行資料:ab1,2,3
cd4,5,6
轉化為:
ab1ac2
ab3cd4
cd5cd6
使用到的函式
函式split(stringstr,stringpat)將字串按照pat分割
函式explode(array)將陣列中的元素拆分為多行顯示
selectcol1,col2,test.col4fromtest1lateralviewexplode(split(col3,','))testascol4;
例二行轉列
資料:張三,語文,80
李四,語文,89
王五,語文,75
張三,數學,90
李四,數學,88
王五,數學,79
張三,英語,93
李四,英語,87
王五,英語,85
轉換為:
張三,80,90,93
李四,89,88,87
王五,75,79,85
創表:createtabletest2(namestring,projectstring,scoreint)rowformatdelimitedfieldsterminatedby',';
載入資料:
loaddatalocalinpath'/home/huangwei/test.txt'intotabletest1;
函式:casewhenathenbelsecend如果a為true返回b如果a為false返回c
max()去最大值
處理:selectname,max(casewhensubject='chinese'thenscoreelse0end)aschinese,max(casewhensubject='math'thenscoreelse0end)asmath,max(casewhensubject='english'thenscoreelse0end)asenglishfromtest2groupbyname;
sql執行過程
看第一行80是由casewhensubject='語文'thenscoreelse0end得出,其他的0分別是由casewhensubject='數學'thenscoreelse0end、casewhensubject='英語'thenscoreelse0end、casewhensubject='生物'thenscoreelse0end得出,一次類推,得到的結果集為:
張三 80 0 0
李四 89 0 0
王五 75 0 0
張三 0 90 0
李四 0 88 0
王五 0 79 0
張三 0 0 93
李四 0 0 87
王五 0 0 85
下一步,聚合分組,最終完成任務。
列轉行:
資料:
張三,80,90,93
李四,89,88,87
王五,75,79,85
實現方式:
selectname,』chinese』assubject,』chinese』asscorefromtest3
union
selectname,』math』assubject,』math』asscorefromtest3
union
selectname,』english』assubject,』math』asscorefromtest3;
簡單易懂的講解深度學習(入門系列之一)
摘要 當你和女朋友在路邊手拉手一起約會的時候,你可曾想,你們之間早已碰撞出了一種神秘的智慧型 深度學習。戀愛容易,相處不易,不斷磨合,打造你們的默契,最終才能決定你們是否在一起。深度學習也一樣,輸入各種不同的引數,進行訓練擬合,最後輸出擬合結果。戀愛又不易,且學且珍惜!導言 目前人工智慧非常火爆,而...
Python練習 乙個簡單易懂的迭代器,了解一下
今天我們學習了迭代器,其實可以理解為是乙個元素容器被遍歷的方式,不難理解,看看下面的小例子 1 2 乙個簡單的迭代器 3 l 1,2,3,4,5,6,7 建立乙個列表l 4 ite l.iter iter 代表l是乙個可迭代的物件 5print ite.next 使用iterator.next 方法...
對JS閉包的簡單理解,一學就會,一敲就廢
閉包的定義 閉包是指有權訪問另乙個函式作用域中的變數的函式。閉包的特點 1.函式中巢狀函式 2.函式內部可以引用函式外部的變數和引數 閉包的缺點 閉包比普通函式占用的記憶體更大,所以在不用的時候要關掉 常見的閉包函式 for var i 0 i 5 i 1000 列印結果是 5個5 其實這就是比較典...