from_xml
기능
적용 대상: Databricks SQL Databricks Runtime 14.1 이상
Important
이 기능은 공개 미리 보기 상태입니다.
schema
를 사용하여 xmlStr
에서 구문 분석된 구조체 값을 반환합니다.
구문
from_xml(xmlStr, schema [, options])
인수
xmlStr
STRING
: 단일 XML 레코드를 지정하는 식schema
STRING
: schema_of_xml 함수의 식 또는 호출입니다.options
: 지시문을 지정하는 선택적MAP<STRING,STRING>
리터럴입니다.
반품
스키마 정의와 일치하는 필드 이름 및 형식이 있는 A STRUCT
입니다.
xmlStr
은 schema
및 options
에 대해 잘 구성되어야 합니다. 구문 분석 NULL
할 수 없는 경우 xmlStr
반환됩니다.
schema
는 CREATE TABLE
과 같이 쉼표로 구분된 열 이름과 데이터 형식 쌍으로 정의되어야 합니다.
options
(제공된 경우)는 다음 중 하나일 수 있습니다.
excludeAttribute
(기본값false
): 요소에서 특성을 제외할지 여부입니다.mode
(기본값PERMISSIVE
): 구문 분석 중 손상된 레코드를 처리하는 모드를 허용합니다.PERMISSIVE
: 손상된 레코드를 만나면 잘못된 형식의 문자열을columnNameOfCorruptRecord
에 의해 구성된 필드에 넣고 잘못된 형식의 필드를 null로 설정합니다. 손상된 레코드를 유지하려면 사용자 정의 스키마에서columnNameOfCorruptRecord
라는 문자열 형식 필드를 설정할 수 있습니다. 스키마에 필드가 없으면 구문 분석 중에 손상된 레코드를 삭제합니다. 스키마를 유추할 때 출력 스키마에columnNameOfCorruptRecord
필드를 암시적으로 추가합니다.FAILFAST
: 손상된 레코드를 만나면 예외가 throw됩니다.
columnNameOfCorruptRecord
(기본값은spark.sql.columnNameOfCorruptRecord
에 지정된 값임):PERMISSIVE
모드에서 만들어진 형식이 잘못된 문자열이 있는 새 필드의 이름을 변경할 수 있습니다. 이는spark.sql.columnNameOfCorruptRecord
를 재정의합니다.inferSchema
(기본값true
): 경우true
부울, 숫자 또는 날짜 형식과 같은 각 결과 특성에 적절한 형식을 유추하려고 합니다.false
인 경우 모든 결과 열은 문자열 유형입니다.prefersDecimal
(기본값false
): 모든 부동 소수점 값을 소수점 형식으로 유추합니다. 값이 10진수에 맞지 않으면 더블로 유추합니다.attributePrefix
(기본값_
): 특성과 요소를 구분하는 특성의 접두사입니다. 이는 필드 이름의 접두사입니다. 빈 문자열일 수 있습니다.valueTag
(기본값_VALUE
): 특성 또는 자식 요소도 있는 요소 내의 문자 데이터에 사용되는 태그입니다.encoding
(기본 UTF-8): 지정된 인코딩 형식으로 XML 파일을 디코딩합니다.ignoreSurroundingSpaces
(기본값true
): 읽는 값의 주변 공백을 건너뛸지 여부를 정의합니다.rowValidationXSDPath
: 각 행에 대한 XML의 유효성을 개별적으로 검사하는 데 사용되는 XSD 파일의 경로입니다. 유효성 검사에 실패한 행은 위와 같이 구문 분석 오류로 처리됩니다. XSD는 제공되거나 유추된 스키마에 달리 영향을 미치지 않습니다.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]
): 표준 시간대 형식이 없는 타임스탬프를 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 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}]}