다음을 통해 공유


from_xml 기능

적용 대상: 예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime 14.1 이상

Important

이 기능은 공개 미리 보기 상태입니다.

schema를 사용하여 xmlStr에서 구문 분석된 구조체 값을 반환합니다.

구문

from_xml(xmlStr, schema [, options])

인수

  • xmlStrSTRING: 단일 XML 레코드를 지정하는 식
  • schemaSTRING: schema_of_xml 함수의 식 또는 호출입니다.
  • options: 지시문을 지정하는 선택적 MAP<STRING,STRING> 리터럴입니다.

반품

스키마 정의와 일치하는 필드 이름 및 형식이 있는 A STRUCT 입니다.

xmlStrschemaoptions에 대해 잘 구성되어야 합니다. 구문 분석 NULL 할 수 없는 경우 xmlStr 반환됩니다.

schemaCREATE 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): XML true요소 및 특성의 네임스페이스 접두사는 무시됩니다. 예를 들어 태그와 <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}]}