.
Operatore (segno punto)
Si applica a: Databricks SQL Databricks Runtime
Restituisce un fieldIdentifier
valore in un STRUCT
oggetto o un valore di keyIdentifier
in un oggetto MAP
.
Sintassi
structExpr . fieldIdentifier
mapExpr . keyIdentifier
Argomenti
structExpr
STRUCT
: espressione .fieldIdentifier
: identificatore per il campo all'interno distructExpr
.mapExpr
MAP
: espressione con chiavi di tipoSTRING
.keyIdentifier
: identificatore che corrisponde a un valore dimapExpr
chiave in .
Valori restituiti
Tipo corrispondente a fieldIdentifier
quello del tipo o del tipo dei mapExpr
valori.
La risoluzione dei nomi ha la precedenza sulla risoluzione di questo operatore.
In altri casi, data una serie di identificatori separati da punti, Azure Databricks risolverà il nome completo più lungo possibile.
Se il nome risolto è o MAP
STRUCT
Azure Databricks interpreterà gli identificatori rimanenti usando l'operatore dot sign.
Se usato con , STRUCT
Azure Databricks verifica l'esistenza di fieldIdentifier
nello struct quando l'istruzione viene compilata.
Se usato con un MAP
e non esiste una chiave corrispondente keyIdentifier
a , Azure Databricks restituisce null.
Per restituire NULL
invece usare la funzione try_element_at.
Avviso
In Databricks Runtime, se spark.sql.ansi.enabled è false
, il risultato è NULL
se non viene trovata alcuna chiave corrispondente per .mapExpr
Esempi
-- 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