Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime
Olyan függvényt hív meg, amely egy relációt vagy sorkészletként ad vissza táblahivatkozásként .
A TVF lehet:
SQL felhasználó által definiált táblafüggvény.
A tartomány táblaértékű függvény
Bármilyen táblaértékű generátorfüggvény, például explode.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 12.2 LTS és újabb.Paraméteres metrikanézet.
A következőre vonatkozik:
Databricks SQL
Databricks Runtime 18.2 és újabb.Important
Ez a funkció nyilvános előzetes verzióban van.
Jegyzet
Hive UDTF nem hívhatók meg táblahivatkozásként, hanem a SELECT vagy a LATERAL VIEW záradékhasználatával kell meghívni.
Szintaxis
function_name ( [ expression [, ...] ] ) [ table_alias ]
Paraméterek
-
Táblaértékű függvény. Ha a függvény nem oldható fel táblaértékű függvényként, Azure Databricks UNRESOLVABLE_TABLE_VALUED_FUNCTION.
-
Egy vagy több érték, operátor és SQL-függvény kombinációja, amely értéket eredményez.
-
Nem kötelező címke a függvény eredményére és oszlopaira való hivatkozáshoz.
Gyakori hibafeltételek
- NUM_TABLE_VALUE_ALIASES_MISMATCH
- UNRESOLVABLE_TABLE_VALUED_FUNCTION
- WRONG_NUM_ARGS. WITHOUT_SUGGESTION
Példák
-- range call with end
> SELECT * FROM range(6 + cos(3));
0
1
2
3
4
-- range call with start and end
> SELECT * FROM range(5, 10);
5
6
7
8
9
-- range call with numPartitions
> SELECT * FROM range(0, 10, 2, 200);
0
2
4
6
8
-- range call with a table alias
> SELECT * FROM range(5, 8) AS test;
5
6
7
-- Create a SQL UDTF and invoke it
> CREATE OR REPLACE FUNCTION table_func(a INT) RETURNS TABLE
RETURN SELECT a * c1 AS res FROM VALUES(1), (2), (3), (4) AS T(c1)
> SELECT * FROM table_func(5);
5
10
15
20
-- Using lateral correlation
> SELECT table_func.res FROM VALUES(10), (20) AS S(c1), LATERAL table_func(c1);
10
20
20
40
30
60
40
80
-- Scalar functions are not allowed in the FROM clause
> SELECT * FROM trim('hello ');
Error: UNRESOLVABLE_TABLE_VALUED_FUNCTION
Databricks SQL és Databricks Runtime 12.2 LTS és újabb verziókon:
> SELECT * FROM explode(array(10, 20));
10
20
> SELECT * FROM inline(array(struct(1, 'a'), struct(2, 'b')));
col1 col2
---- ----
1 a
2 b
> SELECT * FROM posexplode(array(10,20));
pos col
--- ---
0 10
1 20
> SELECT * FROM stack(2, 1, 2, 3);
col0 col1
---- ----
1 2
3 null
> SELECT * FROM json_tuple('{"a":1, "b":2}', 'a', 'b');
c0 c1
--- ---
1 2
> SELECT * FROM parse_url('http://spark.apache.org/path?query=1', 'HOST');
spark.apache.org
> SELECT * FROM VALUES(1), (2) AS t1(c1), LATERAL explode (ARRAY(3,4)) AS t2(c2);
c1 c2
-- --
1 3
1 4
2 3
2 4
A Databricks SQL-en és a Databricks Runtime 18.2-s vagy újabb verziója esetén a paraméteres metrikanézetet táblaértékkel rendelkező függvényként hívhatja meg. Adja át az egyes paramétereket névvel ellátott argumentumként, vagy hagyja ki az argumentumokat az alapértelmezett értékek használatára, ha minden paraméter rendelkezik ilyen argumentumokkal. Paramétert definiáló discounted_sales_metrics metrikanézet discount esetén:
-- Pass a named argument
> SELECT order_priority, measure(discounted_revenue)
FROM discounted_sales_metrics(discount => 0.15)
GROUP BY ALL;
-- Omit the arguments to use the parameter defaults
> SELECT order_priority, measure(discounted_revenue)
FROM discounted_sales_metrics
GROUP BY ALL;