from_xml
函式
適用於: Databricks SQL Databricks Runtime 14.1 和更新版本
重要
這項功能處於公開預覽狀態。
傳回使用 xmlStr
解析出來的結構值 schema
。
語法
from_xml(xmlStr, schema [, options])
引數
-
xmlStr
STRING
:指定單一 XML 記錄的表達式 -
schema
STRING
:schema_of_xml函式的表達式或調用。 -
options
:指定指示詞的選擇性常MAP<STRING,STRING>
值。
傳回
具有符合 schema 定義之功能變數名稱和型別的 STRUCT
。
xmlStr
應該在和schema
方面options
形成良好的格式。 如果 xmlStr
無法剖 NULL
析,則會傳回 。
schema
必須被定義為以逗號分隔的 column 名稱及其資料類型對,例如在 CREATE TABLE
中使用的。
options
如果提供,可以是下列任一項:
-
excludeAttribute
(預設值false
):是否要排除元素中的屬性。 -
mode
(預設值PERMISSIVE
):允許在剖析期間處理損毀記錄的模式。-
PERMISSIVE
:當它符合損毀的記錄時,會將格式錯誤的字串放入 所設定columnNameOfCorruptRecord
的欄位中,並將格式不正確的欄位設定為 null。 若要保留損毀的記錄,您可以在使用者定義的 schema中 set 名為columnNameOfCorruptRecord
的字串類型字段。 如果 schema 沒有該欄位,則會在剖析期間移除腐敗的記錄。 在推斷 schema時,它會隱含地在輸出 schema中加入columnNameOfCorruptRecord
字段。 -
FAILFAST
:當它符合損毀的記錄時,會擲回例外狀況。
-
-
columnNameOfCorruptRecord
(預設值為spark.sql.columnNameOfCorruptRecord
中指定的值):允許重新命名PERMISSIVE
模式所建立格式錯誤的字串 having 新的字段。 這會覆寫spark.sql.columnNameOfCorruptRecord
。 -
inferSchema
(預設值true
):如果true
為 ,則嘗試推斷每個結果屬性的適當類型,例如布爾值、數值或日期類型。 如果false
,則所有產生的 columns 都是字串類型。 -
prefersDecimal
(預設false
):將所有浮點 values 推斷為十進位類型。 如果 values 不符合小數點,則會將其推斷為雙精度浮點數。 -
attributePrefix
(預設值_
):屬性的前置詞,用來區分屬性與元素。 這將是欄位名稱的前置詞。 可以是空字串。 -
valueTag
(預設值_VALUE
):用於元素內也具有 attribute(s) 或子元素(s) 元素之字元數據的標記。 -
encoding
(預設 UTF-8):依指定的編碼類型譯碼 XML 檔案。 -
ignoreSurroundingSpaces
(預設true
):定義在讀取 values 時是否應略過其周圍的空白字符。 -
rowValidationXSDPath
:XSD 檔案的路徑,用來個別驗證每個數據列的 XML。 無法驗證的資料列視為上述剖析錯誤。 除非另有影響,XSD 不會影響提供的 schema 或推斷的結果。 -
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]
):設定字串,指出不含 timezone 格式的時間戳。 自訂日期格式會遵循 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}]}