.
(tečka) – operátor
Platí pro: Databricks SQL Databricks Runtime
fieldIdentifier
Vrátí hodnotu v hodnotě STRUCT
nebo hodnotu v keyIdentifier
objektu MAP
.
Syntaxe
structExpr . fieldIdentifier
mapExpr . keyIdentifier
Argumenty
structExpr
: VýrazSTRUCT
.fieldIdentifier
: Identifikátor pole uvnitřstructExpr
.mapExpr
MAP
: Výraz s klíči typuSTRING
.keyIdentifier
: Identifikátor odpovídající hodnotě klíče v objektumapExpr
.
Návraty
Typ odpovídající fieldIdentifier
typu nebo typu mapExpr
hodnot.
Rozlišení názvů má přednost před překladem tohoto operátoru.
To znamená, že vzhledem k řadě identifikátorů oddělených tečkami azure Databricks přeloží nejdelší možný kvalifikovaný název.
Pokud je přeložený název nebo MAP
STRUCT
Azure Databricks interpretuje zbývající identifikátory pomocí operátoru tečky.
Při použití se službou STRUCT
Azure Databricks ověřuje existenci fieldIdentifier
struktury při kompilaci příkazu.
Při použití s MAP
a neexistuje žádný klíč, který odpovídá keyIdentifier
, Azure Databricks vrátí hodnotu null.
NULL
Místo toho použijte funkci try_element_at.
Upozorňující
Pokud je ve službě Databricks Runtime spark.sql.ansi.enabled false
, výsledek je NULL
v případě, že pro objekt není mapExpr
nalezen žádný odpovídající klíč.
Příklady
-- 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