次の方法で共有


. (ドット記号) 演算子

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

STRUCTfieldIdentifier 値、または MAPkeyIdentifier ごとの値を返します。

構文

structExpr . fieldIdentifier

mapExpr . keyIdentifier

引数

  • structExpr: STRUCT 式。
  • fieldIdentifier: structExpr 内のフィールドの識別子
  • mapExpr: STRING 型のキーを持つ MAP 式。
  • keyIdentifier: mapExpr 内のキー値に一致する識別子

戻り値

fieldIdentifier の型と一致する型または mapExpr 値の型。

名前の解決は、この演算子の解決よりも優先されます。 つまり、ドットで区切られた一連の識別子を指定すると、Azure Databricks は可能な限り長い修飾名を解決します。 解決された名前が MAP または STRUCT の Azure Databricks の場合、ドット記号演算子を使用して残りの識別子が解釈されます。

STRUCT と共に使用すると、Azure Databricks はステートメントをコンパイルするときに構造体内の fieldIdentifier の存在を確認します。

MAP で使用するときに、keyIdentifier と一致するキーがない場合、Azure Databricks は null を返します。 代わりに NULL を返すには、try_element_at function を使用します。

警告

Databricks Runtime で spark.sql.ansi.enabledfalse である場合、mapExpr で一致するキーが見つからない場合、結果は NULL になります。

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