Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Ruft eine Funktion auf, die eine Beziehung oder eine Gruppe von Zeilen als Tabellenverweis zurückgibt.
Eine TVF kann folgendes sein:
Benutzerdefinierte SQL-Tabellenfunktion.
Der Bereich einer Tabellenwertfunktion.
Jede Generatorfunktion für Tabellenwerte, z. B. explode.
Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher.Eine parametrisierte Metrikansicht.
Gilt für:
Databricks SQL
Databricks Runtime 18.2 and above.Wichtig
Dieses Feature befindet sich in der Public Preview.
Anmerkung
Hive UDTF kann nicht als Tabellenverweis aufgerufen werden, sondern muss über SELECT oder mithilfe der LATERAL VIEW-Klausel aufgerufen werden.
Syntax
function_name ( [ expression [, ...] ] ) [ table_alias ]
Parameter
-
Eine Tabellenwertfunktion. Wenn die Funktion nicht als Tabellenwertfunktion aufgelöst werden kann, löst Azure Databricks UNRESOLVABLE_TABLE_VALUED_FUNCTION aus.
-
Eine Kombination eines oder mehrerer Werte, Operatoren und SQL-Funktionen, die in einem Wert resultiert.
-
Eine optionale Bezeichnung, die auf das Funktionsergebnis und seine Spalten verweist.
Häufige Fehlerbedingungen
- NUM_TABLE_VALUE_ALIASES_MISMATCH
- UNRESOLVABLE_TABLE_VALUED_FUNCTION
- WRONG_NUM_ARGS. WITHOUT_SUGGESTION
Beispiele
-- 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
In Databricks SQL und Databricks Runtime 12.2 LTS und höher:
> 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
In Databricks SQL und Databricks Runtime 18.2 und höher können Sie eine parametrisierte Metrikansicht als Tabellenwertfunktion aufrufen. Übergeben Sie jeden Parameter als benanntes Argument, oder lassen Sie die Argumente aus, um die Standardwerte zu verwenden, wenn jeder Parameter einen hat. Für eine Metrikansicht mit dem Namen discounted_sales_metrics , die einen discount Parameter definiert:
-- 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;