다음을 통해 공유


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.

xmlStrschemaoptions에 대해 잘 구성되어야 합니다. 구문 분석 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): 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]): timezone 형식이 없는 타임스탬프를 나타내는 문자열을 설정합니다. 사용자 지정 날짜 형식은 날짜/시간 패턴의 형식을 따릅니다. 이는 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}]}