適用対象:
Databricks SQL
Databricks Runtime
fieldIdentifier の STRUCT 値、または keyIdentifier の MAP ごとの値を返します。
構文
structExpr . fieldIdentifier
mapExpr . keyIdentifier
引数
-
structExpr:STRUCT式。 -
fieldIdentifier: 内のフィールドのstructExpr。 -
mapExpr:MAP型のキーを持つSTRING式。 -
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 である場合、NULL で一致するキーが見つからない場合、結果は mapExpr になります。
例
-- 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