from_xml
기능
적용 대상: Databricks SQL Databricks Runtime 14.1 이상
Important
이 기능은 공개 미리 보기 상태입니다.
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에columnNameOfCorruptRecord
로 명명된 문자열 타입 필드를 set할 수 있습니다. schema에 필드가 없으면 구문 분석 중에 손상된 레코드를 버립니다. schema을 유추할 때, 출력 schema에columnNameOfCorruptRecord
필드가 암시적으로 추가됩니다. -
FAILFAST
: 손상된 레코드를 만나면 예외가 throw됩니다.
-
-
columnNameOfCorruptRecord
(기본값은spark.sql.columnNameOfCorruptRecord
에서 지정된 값):PERMISSIVE
모드에서 만든 형식이 잘못된 문자열을 having 새 필드의 이름을 변경할 수 있습니다. 이는spark.sql.columnNameOfCorruptRecord
를 재정의합니다. -
inferSchema
(기본값true
): 경우true
부울, 숫자 또는 날짜 형식과 같은 각 결과 특성에 적절한 형식을 유추하려고 합니다.false
일 경우, 모든 결과 columns은 문자열 형식입니다. -
prefersDecimal
(기본false
): 모든 부동 소수점 values를 소수점 형식으로 간주합니다. values 10진수에 맞지 않으면 이중으로 유추합니다. -
attributePrefix
(기본값_
): 특성과 요소를 구분하는 특성의 접두사입니다. 이는 필드 이름의 접두사입니다. 빈 문자열일 수 있습니다. -
valueTag
(기본값_VALUE
): 특성 또는 자식 요소도 있는 요소 내의 문자 데이터에 사용되는 태그입니다. -
encoding
(기본 UTF-8): 지정된 인코딩 형식으로 XML 파일을 디코딩합니다. -
ignoreSurroundingSpaces
(기본true
): 읽는 values 주변 공백을 건너뛸지 여부를 정의합니다. -
rowValidationXSDPath
: 각 행에 대한 XML의 유효성을 개별적으로 검사하는 데 사용되는 XSD 파일의 경로입니다. 유효성 검사에 실패한 행은 위와 같이 구문 분석 오류로 처리됩니다. XSD는 그 외에는 제공되거나 유추된 schema에 영향을 미치지 않습니다. -
ignoreNamespace
(기본값false
): XMLtrue
요소 및 특성의 네임스페이스 접두사는 무시됩니다. 예를 들어 태그와<abc:author>
<def:author>
태그는 둘 다 그냥<author>
있는 것처럼 처리됩니다. 네임스페이스는 요소에서rowTag
무시될 수 없으며 해당 자식만 무시할 수 있습니다. XML 구문 분석에서는 일반적으로 false인 경우에도 네임스페이스를 인식하지 않습니다. -
timestampFormat
(기본값yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): 타임스탬프 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 타임스탬프 형식에 적용됩니다. -
timestampNTZFormat
(기본yyyy-MM-dd'T'HH:mm:ss[.SSS]
): timezone 형식이 없는 타임스탬프를 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 TimestampNTZType 유형에 적용됩니다. -
dateFormat
(기본값yyyy-MM-dd
): 날짜 형식을 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 날짜 형식에 적용됩니다. -
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}]}