.
(znak kropkowy) — operator
Dotyczy: Databricks SQL Databricks Runtime
fieldIdentifier
Zwraca wartość w STRUCT
wartości lub według keyIdentifier
w obiekcie MAP
.
Składnia
structExpr . fieldIdentifier
mapExpr . keyIdentifier
Argumenty
structExpr
STRUCT
: wyrażenie.fieldIdentifier
: identyfikator pola w programiestructExpr
.mapExpr
MAP
: wyrażenie z kluczami typuSTRING
.keyIdentifier
: identyfikator pasujący do wartości klucza w obiekciemapExpr
.
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 STRUCT
usługa Azure Databricks weryfikuje istnienie fieldIdentifier
obiektu w strukturę, gdy instrukcja jest kompilowana.
W przypadku użycia z elementem i nie ma klucza zgodnego MAP
keyIdentifier
z 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