Freigeben über


.-Operator (Punktzeichen)

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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: Ein STRUCT-Ausdruck.
  • fieldIdentifier: Ein Bezeichner für ein Feld in structExpr.
  • mapExpr: Ein MAP-Ausdruck mit Schlüsseln des Typs STRING.
  • keyIdentifier: Ein Bezeichner, der einem Schlüsselwert in mapExpr 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