. operator (puntteken)

Van toepassing op:gemarkeerd met ja Databricks SQL-controle gemarkeerd als ja Databricks Runtime

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

Syntaxis

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Argumenten

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

Retourneert

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

De resolutie van namen heeft voorrang op de resolutie van deze operator. Dat wil gezegd dat, gezien een reeks id's gescheiden door puntjes, Azure Databricks de langst mogelijke gekwalificeerde naam oplost. Als de opgeloste naam een MAP of STRUCT is, interpreteert Azure Databricks de resterende id's met behulp van de operator voor het puntteken.

Bij gebruik met een STRUCTcontroleert Azure Databricks het bestaan van de fieldIdentifier in de struct wanneer de -instructie wordt gecompileerd.

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

Waarschuwing

Als spark.sql.ansi.enabled in Databricks Runtime is, is falseNULL het resultaat als er geen overeenkomende sleutel wordt gevonden voor de mapExpr.

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