Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
opérateur
S’applique à : Databricks SQL
Databricks Runtime
Retourne une valeur fieldIdentifier
dans STRUCT
ou une valeur keyIdentifier
dans MAP
.
Syntaxe
structExpr . fieldIdentifier
mapExpr . keyIdentifier
Arguments
structExpr
: une expressionSTRUCT
.fieldIdentifier
: identificateur du champ dansstructExpr
.mapExpr
: une expressionMAP
avec des clés de typeSTRING
.keyIdentifier
: un identificateur correspondant à une valeur clé dans lemapExpr
.
Retours
Type correspondant à celui de l'fieldIdentifier
ou du type des valeurs mapExpr
.
La résolution des noms est prioritaire sur la résolution de cet opérateur.
Autrement dit, pour une série d’identificateurs séparés par des points, Azure Databricks résout le nom qualifié le plus long possible.
Si le nom résolu est un MAP
ou STRUCT
Azure Databricks interprète les identificateurs restants à l’aide de l’opérateur de signe point.
Lorsqu’il est utilisé avec un STRUCT
, Azure Databricks vérifie l’existence du fieldIdentifier
dans le struct lorsque l’instruction est compilée.
Utilisé avec un MAP
, en l’absence de clé correspondant à keyIdentifier
, Azure Databricks retourne Null.
Pour retourner NULL
à la place, utilisez la fonction try_element_at.
Avertissement
Dans Databricks Runtime, si spark.sql.ansi.enabled est false
, le résultat est NULL
si aucune clé correspondante n’est trouvée pour le mapExpr
.
Exemples
-- 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