.
(ドット記号) 演算子
適用対象: Databricks SQL Databricks Runtime
STRUCT
の fieldIdentifier
値、または MAP
の keyIdentifier
ごとの値を返します。
構文
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.enabled が false
である場合、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