. (點符號) 運算符號

適用於:核取記號為「是」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 函式。

警告

在 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