表值函數(TVF)

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

一個函數,返回一個或一組行關係。有兩種類型的時變濾波:

  • 在一個指定的條款,例如,範圍

  • 中指定的選擇橫向視圖條款,例如,爆炸

語法

function_name(表達式(,…])(table_alias]

參數

  • 表達式

    結合一個或多個值,操作符和SQL函數,結果在一個值。

  • table_alias

    一個可選的標簽參考函數的結果和其列。

支持表值函數

可以指定的時變濾波條款

函數

參數類型(年代)

描述

範圍(結束)

創建一個表和一個名為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”,“主機”);火花apacheorg——在側麵圖使用爆炸條款>創建測試(c1INT);>插入測試(1);>插入測試(2);>選擇*測試橫向視圖爆炸(數組(3,4))作為c2;c1c2- - - - -13142324