.
-Operator (Punktzeichen)
Gilt für: Databricks SQL Databricks Runtime
Gibt einen fieldIdentifier
-Wert in einem STRUCT
oder einen Wert von keyIdentifier
in einem MAP
zurück.
Syntax
structExpr . fieldIdentifier
mapExpr . keyIdentifier
Argumente
structExpr
: EinSTRUCT
-Ausdruck.fieldIdentifier
: Ein Bezeichner für ein Feld instructExpr
.mapExpr
: EinMAP
-Ausdruck mit Schlüsseln des TypsSTRING
.keyIdentifier
: Ein Bezeichner, der einem Schlüsselwert inmapExpr
entspricht.
Gibt zurück
Ein Typ, der dem Typ von fieldIdentifier
oder dem Typ der mapExpr
-Werte entspricht.
Die Auflösung von Namen hat Vorrang vor der Auflösung dieses Operators.
Das heißt, angesichts einer Reihe von Bezeichnern, die durch Punkte getrennt sind, wird Azure Databricks den längsten möglichen qualifizierten Namen auflösen.
Wenn der aufgelöste Name ein MAP
oder STRUCT
ist, interpretiert Azure Databricks die verbleibenden Bezeichner mithilfe des Punktzeichenoperators.
Bei Verwendung mit STRUCT
überprüft Azure Databricks das Vorhandensein von fieldIdentifier
in der Struktur, wenn die Anweisung kompiliert wird.
Bei Verwendung mit MAP
und wenn kein Schlüssel vorhanden ist, der mit keyIdentifier
übereinstimmt, gibt Azure Databricks NULL zurück.
Damit stattdessen NULL
zurückgegeben wird, verwenden Sie die Funktion try_element_at.
Warnung
In Databricks Runtime ist das Ergebnis NULL
, wenn kein übereinstimmender Schlüssel für mapExpr
gefunden wird, wenn spark.sql.ansi.enabled auf false
festgelegt ist.
Beispiele
-- Names take precedence over the dot sign operator
> CREATE SCHEMA a;
> CREATE TABLE a.a(a struct<a INT, b STRING>);
> INSERT INTO a.a VALUES (named_struct('a', 5, 'b', 'Spark'));
-- Column `a` in table `a`
> SELECT a.a FROM a.a;
{"a":5,"b":"Spark"}
-- Field `b` in column `a`
> SELECT a.b FROM a.a;
Spark
-- Column `a` in table `a.a`
> SELECT a.a.a FROM a.a;
{"a":5,"b":"Spark"}
-- Field `a` in column `a` in table `a.a`
> SELECT a.a.a.a FROM a.a;
5
-- Resolving a map value:
> SELECT map('three', 3).three;
3
-- Resolving a map value using the [ ] notation:
> SELECT map('three', 3)['three']
3
-- Resolving a map value using back quotes:
> SELECT map('서울시', 'Seoul').`서울시`;
Seoul
-- Cannot resolve a non existing key
> SELECT map('three', 3).four;
NULL