. opérateur (signe point)

S’applique à :case marquée oui Databricks SQL case marquée oui Databricks Runtime

Retourne une valeur fieldIdentifier dans STRUCT ou une valeur keyIdentifier dans MAP.

Syntaxe

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Arguments

  • structExpr : expression STRUCT.
  • fieldIdentifier: identificateur du champ dans structExpr.
  • mapExpr : une expression MAP avec des clés de type STRING.
  • keyIdentifier : une identificateur correspondant à une valeur de clé dans mapExpr.

Retours

Type correspondant à celui de fieldIdentifier ou au 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