Delen via


. Operator (puntteken)

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Retourneert een fieldIdentifier waarde in een STRUCT of een waarde door keyIdentifier in een MAP.

Syntaxis

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Argumenten

  • structExpr: Een STRUCT expressie.
  • fieldIdentifier: Een id voor het veld binnen structExpr.
  • mapExpr: Een MAP expressie met sleutels van het type STRING.
  • keyIdentifier: Een id die overeenkomt met een sleutelwaarde in de mapExpr.

Retouren

Een type dat overeenkomt met dat van het fieldIdentifier of het type van de mapExpr waarden.

De resolutie van namen heeft voorrang op de resolutie van deze operator. Op basis van een reeks id's , gescheiden door puntjes, wordt in Azure Databricks de langst mogelijke gekwalificeerde naam omgezet. Als de opgeloste naam een MAP of STRUCT Azure Databricks is, worden de resterende id's geïnterpreteerd met behulp van de operator voor punttekens.

Wanneer Azure Databricks wordt gebruikt met een STRUCT, controleert Azure Databricks of de fieldIdentifier instructie bestaat in de struct wanneer de instructie wordt gecompileerd.

Wanneer azure Databricks wordt gebruikt met een MAP, en er geen sleutel is die overeenkomt keyIdentifier, retourneert Azure Databricks null. Als u in plaats daarvan wilt terugkeren NULL , gebruikt u de functie try_element_at.

Waarschuwing

Als in Databricks Runtime spark.sql.ansi.enabledis false het resultaat als er geen overeenkomende sleutel wordt gevonden voor de NULL.

Voorbeelden

-- 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