Udostępnij za pośrednictwem


. (znak kropkowy) — operator

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

fieldIdentifier Zwraca wartość w STRUCT wartości lub według keyIdentifier w obiekcie MAP.

Składnia

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Argumenty

  • structExprSTRUCT: wyrażenie.
  • fieldIdentifier: identyfikator pola w programie structExpr.
  • mapExprMAP: wyrażenie z kluczami typu STRING.
  • keyIdentifier: identyfikator pasujący do wartości klucza w obiekcie mapExpr.

Zwraca

Typ pasujący do fieldIdentifier typu lub typu mapExpr wartości.

Rozpoznawanie nazw ma pierwszeństwo przed rozpoznawaniem tego operatora. Oznacza to, że w przypadku serii identyfikatorów oddzielonych kropkami usługa Azure Databricks rozpozna najdłuższą możliwą kwalifikowaną nazwę. Jeśli rozpoznana nazwa to lub MAP STRUCT usługa Azure Databricks zinterpretuje pozostałe identyfikatory przy użyciu operatora znaku kropkowego.

W przypadku użycia z elementem STRUCTusługa Azure Databricks weryfikuje istnienie fieldIdentifier obiektu w strukturę, gdy instrukcja jest kompilowana.

W przypadku użycia z elementem i nie ma klucza zgodnego MAPkeyIdentifierz usługą , usługa Azure Databricks zwraca wartość null. Aby zamiast tego użyć NULL funkcji try_element_at.

Ostrzeżenie

Jeśli w środowisku Databricks Runtime spark.sql.ansi.enabled to false, wynikiem jest NULL to, czy nie znaleziono pasującego klucza dla elementu mapExpr.

Przykłady

-- 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