表值函數(TVF)
適用於:磚的SQL磚運行時
一個函數,返回一個或一組行關係。有兩種類型的時變濾波:
在一個指定的
從
條款,例如,範圍
。中指定的
選擇
和橫向視圖
條款,例如,爆炸
。
支持表值函數
可以指定的時變濾波從
條款
函數 |
參數類型(年代) |
描述 |
---|---|---|
範圍(結束) |
長 |
創建一個表和一個名為id的LongType列,包含行範圍從0到結束(獨家)值1步。 |
範圍(開始、結束) |
很久很久 |
創建一個表和一個名為id的LongType列,包含行範圍從開始到結束(獨家)值1步。 |
範圍(開始、結束步驟) |
長,長,長 |
創建一個表和一個名為id的LongType列,包含行範圍從開始到結束(獨家)值。 |
範圍(開始、結束步驟,numPartitions) |
長,長,長,Int |
創建一個表和一個名為id的LongType列,包含行範圍從開始到結束(獨家)值,步與分區號numPartitions指定。 |
可以指定的時變濾波選擇
和橫向視圖
條款
函數 |
參數類型(年代) |
描述 |
---|---|---|
爆炸(expr) |
數組/地圖 |
分離的元素數組expr為多個行,或expr映射到多個行和列的元素。除非特別說明,使用默認的列名坳數組的元素或元素的鍵和值的映射。 |
explode_outer (expr) |
數組/地圖 |
分離的元素數組expr為多個行,或expr映射到多個行和列的元素。除非特別說明,使用默認的列名坳數組的元素或元素的鍵和值的映射。 |
內聯(expr) |
表達式 |
爆炸的數組結構表。使用列名col1、col2等默認情況下,除非另有指定。 |
inline_outer (expr) |
表達式 |
爆炸的數組結構表。使用列名col1、col2等默認情況下,除非另有指定。 |
posexplode (expr) |
數組/地圖 |
分離的元素數組expr為多個行位置,或元素expr映射到多個行和列的位置。除非特別說明,使用列名pos位置,col元素數組或鍵和值的元素的映射。 |
posexplode_outer (expr) |
數組/地圖 |
分離的元素數組expr為多個行位置,或元素expr映射到多個行和列的位置。除非特別說明,使用列名pos位置,col元素數組或鍵和值的元素的映射。 |
棧(exprk n expr1…) |
Seq(表達) |
分離expr1…, exprk n行。使用列名col0、col1等默認情況下,除非另有指定。 |
json_tuple (jsonStr, p1, p2,…, pn) |
Seq(表達) |
get_json_object返回一個元組的功能,但這需要多個名字。所有的輸入參數和輸出列類型字符串。 |
parse_url (url, partToExtract [,]) |
Seq(表達) |
提取從一個URL的一部分。 |
例子
——電話結束>選擇*從範圍(6+因為(3));01234——電話範圍的開始和結束>選擇*從範圍(5,10);56789——範圍與numPartitions的電話>選擇*從範圍(0,10,2,200年);02468——範圍與一個表別名的電話>選擇*從範圍(5,8)作為測試;567>選擇爆炸(數組(10,20.));1020.>選擇內聯(數組(結構體(1,“一個”),結構體(2,“b”)));col1col2- - - - - - - - - -1一個2b>選擇posexplode(數組(10,20.));pos上校推薦- - - - - - - - - - - -010120.>選擇堆棧(2,1,2,3);col0col1- - - - - - - - - -123零>選擇json_tuple(”{“a”: 1、“b”: 2}”,“一個”,“b”);c0c1推薦- - - - - - - - - - - -12>選擇parse_url(“http://spark.apache.org/path?query=1”,“主機”);火花。apache。org——在側麵圖使用爆炸條款>創建表測試(c1INT);>插入成測試值(1);>插入成測試值(2);>選擇*從測試橫向視圖爆炸(數組(3,4))作為c2;c1c2- - - - -13142324