分享方式:


from_xml函式

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 14.1 和更新版本

重要

這項功能處於公開預覽狀態

傳回使用 schema剖析的結構xmlStr值。

語法

from_xml(xmlStr, schema [, options])

引數

  • xmlStrSTRING:指定單一 XML 記錄的表達式
  • schemaSTRING:schema_of_xml函式的表達式或調用。
  • options:指定指示詞的選擇性常 MAP<STRING,STRING> 值。

傳回

STRUCT,具有符合架構定義的功能變數名稱和型別。

xmlStr應該在和options方面schema形成良好的格式。 如果 xmlStr 無法剖 NULL 析,則會傳回 。

schema 必須定義為逗號分隔的資料列名稱和資料類型組,例如 CREATE TABLE

options如果提供,可以是下列任一項:

  • excludeAttribute (預設值 false):是否要排除元素中的屬性。
  • mode (預設值 PERMISSIVE):允許在剖析期間處理損毀記錄的模式。
    • PERMISSIVE:當它符合損毀的記錄時,會將格式錯誤的字串放入 所設定 columnNameOfCorruptRecord的欄位中,並將格式不正確的欄位設定為 null。 若要保留損毀的記錄,您可以在使用者定義的架構中設定名為 columnNameOfCorruptRecord 的字串類型字段。 如果架構沒有 欄位,則會在剖析期間卸除損毀的記錄。 在推斷架構時,它會隱含地在輸出架構中加入 columnNameOfCorruptRecord 字段。
    • FAILFAST:當它符合損毀的記錄時,會擲回例外狀況。
  • columnNameOfCorruptRecord (預設值為 中指定的 spark.sql.columnNameOfCorruptRecord值):允許重新命名新字段,其格式不正確的字串是由 PERMISSIVE 模式所建立。 這會覆寫 spark.sql.columnNameOfCorruptRecord
  • inferSchema (預設值 true):如果 true為 ,則嘗試推斷每個結果屬性的適當類型,例如布爾值、數值或日期類型。 如果 false為,則所有產生的數據行都是字串類型。
  • prefersDecimal (預設值 false):將所有浮點值推斷為十進位類型。 如果值不符合小數,則會將其推斷為雙精度浮點數。
  • attributePrefix (預設值 _):屬性的前置詞,用來區分屬性與元素。 這會是功能變數名稱的前置詞。 可以是空字串。
  • valueTag (預設值 _VALUE):用於元素內也具有 attribute(s) 或子元素(s) 元素之字元數據的標記。
  • encoding (預設 UTF-8):依指定的編碼類型譯碼 XML 檔案。
  • ignoreSurroundingSpaces (預設值 true):定義是否應該略過正在讀取值周圍的空格符。
  • rowValidationXSDPath:XSD 檔案的路徑,用來個別驗證每個數據列的 XML。 無法驗證的數據列會被視為如上所示剖析錯誤。 XSD 不會影響提供的架構或推斷。
  • ignoreNamespace (預設值 false):如果 true為 ,則會忽略 XML 元素和屬性上的命名空間前置詞。 例如,標記 <abc:author><def:author> 會被視為兩者都只是 <author>。 請注意,元素上 rowTag 不能忽略命名空間,只有其子系。 請注意,XML 剖析通常不是命名空間感知,即使為 false 也一樣。
  • timestampFormat (預設值 yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]):設定表示時間戳格式的字串。 自訂日期格式會遵循 Datetime 模式的格式。 這適用於時間戳類型。
  • timestampNTZFormat (預設值 yyyy-MM-dd'T'HH:mm:ss[.SSS]):設定字串,指出不含時區格式的時間戳。 自訂日期格式會遵循 Datetime 模式的格式。 這適用於 TimestampNTZType 類型。
  • dateFormat (預設值 yyyy-MM-dd):設定表示日期格式的字串。 自訂日期格式會遵循 Datetime 模式的格式。 這適用於日期類型。
  • locale (預設值為 en-US):以IETF BCP 47 格式設定地區設定為語言標記。 例如,這是在剖析日期和時間戳時使用。
  • nullValue (預設值為 null):設定 Null 值的字串表示。

範例

> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'a INT, b DOUBLE');
 {"a":1,"b":0.8}

> SELECT from_xml('<p><time>26/08/2015</time></p>', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 { "time": "2015-08-26T00:00:00.000+0000"}

> SELECT from_xml('<p><teacher>Alice</teacher><student><name>Bob</name><rank>1</rank></student><student><name>Charlie</name><rank>2</rank></student></p>',
                  'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');
 {"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}