적용 대상:
Databricks SQL
Databricks Runtime 14.1 이상
중요한
이 기능은 공개 미리 보기 상태입니다.
xmlStr을 사용하여 schema에서 구문 분석한 구조체 또는 변형 값을 반환합니다.
구문
from_xml(xmlStr, schema [, options])
논쟁
-
xmlStrSTRING: 단일 XML 레코드를 지정하는 식 -
schemaSTRING: 함수의schema_of_xml식 또는 호출입니다. -
options: 지시문을 지정하는 선택적MAP<STRING,STRING>리터럴입니다.
반품
STRUCT 스키마 정의와 일치하는 필드 이름 및 형식이 포함된 경우, 또는 스키마가 단일 VARIANT 형식일 때 Variant 값입니다.
xmlStr은 schema 및 options에 대해 잘 구성되어야 합니다. 구문 분석 xmlStr 할 수 없는 경우 NULL 반환됩니다.
schema 쉼표로 구분된 열 이름 및 데이터 형식 쌍(예: CREATE TABLE)으로 정의해야 합니다. Databricks Runtime 16.4 이상 schema 에서는 단일 VARIANT 형식으로 정의할 수도 있습니다.
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): 모든 부동 소수점 값을 소수점 형식으로 유추합니다. 값이 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-USIETF BCP 47 형식으로 로캘을 언어 태그로 설정합니다. 예를 들어 날짜 및 타임스탬프를 구문 분석하는 동안 사용됩니다. -
nullValue(기본값):nullnull 값의 문자열 표현을 설정합니다.
예제
> 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}]}
> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'VARIANT');
{"p":{"a":1,"b":0.8}}