from_xmlFunción

Se aplica a:check marked yes Databricks SQL check marked yes Databricks Runtime 14.1 y versiones posteriores

Importante

Esta característica está en versión preliminar pública.

Devuelve un valor de estructura analizado desde xmlStr mediante schema.

Sintaxis

from_xml(xmlStr, schema [, options])

Argumentos

  • xmlStr: una expresión STRING que especifica un único registro XML
  • schema: expresión STRING o invocación de la función schema_of_xml.
  • options: un literal MAP<STRING,STRING> opcional que especifica directivas.

Devoluciones

Una expresión STRUCT con nombres de campo y tipos que coinciden con la definición de esquema.

xmlStr debe tener un formato correcto con respecto a schema y options. Si xmlStr no se puede analizar NULL, se devuelve.

schema se debe definir como pares de nombre de columna y tipo de datos separados por comas, como se usa en CREATE TABLE, por ejemplo.

options, si se proporciona, puede ser cualquiera de los valores siguientes:

  • excludeAttribute (predeterminado false): si se excluyen los atributos de los elementos.
  • mode (valor predeterminado PERMISSIVE): permite un modo para controlar los registros dañados durante el análisis.
    • PERMISSIVE: cuando detecta un registro dañado, coloca la cadena con formato incorrecto en un campo configurado por columnNameOfCorruptRecord y establece en NULL los campos con formato incorrecto. Para mantener los registros dañados, puede establecer un campo de tipo cadena denominado columnNameOfCorruptRecord en un esquema definido por el usuario. Si un esquema no tiene el campo, quita los registros dañados durante el análisis. Al deducir un esquema, agrega implícitamente un campo columnNameOfCorruptRecord en un esquema de salida.
    • FAILFAST: inicia una excepción cuando detecta registros dañados.
  • columnNameOfCorruptRecord (el valor predeterminado es el especificado en spark.sql.columnNameOfCorruptRecord): permite cambiar el nombre del nuevo campo con una cadena con formato incorrecto creada por el modo PERMISSIVE. Esto invalida spark.sql.columnNameOfCorruptRecord.
  • inferSchema (valor predeterminado true): si true, intenta deducir un tipo adecuado para cada atributo resultante, como un tipo booleano, numérico o de fecha. Si es false, todas las columnas resultantes son de tipo cadena.
  • prefersDecimal (valor predeterminado false): deduce todos los valores de punto flotante como un tipo decimal. Si los valores no caben en decimales, los deduce como tipos double.
  • attributePrefix (predeterminado _): prefijo de atributos para diferenciar los atributos de los elementos. Este será el prefijo para los nombres de campo. Puede ser una cadena vacía.
  • valueTag (valor predeterminado _VALUE): la etiqueta utilizada para los datos de caracteres dentro de los elementos que también tienen atributos o elementos secundarios.
  • encoding (predeterminado UTF-8): descodifica los archivos CSV según el tipo de codificación especificado.
  • ignoreSurroundingSpaces (predeterminado true): define si se deben omitir los espacios en blanco circundantes de los valores leídos.
  • rowValidationXSDPath: ruta de acceso a un archivo XSD que se usa para validar el XML para cada fila de manera individual. Las filas que no se validan se tratan como errores de análisis como se mencionó anteriormente. De otro modo, el archivo XSD no afecta al esquema proporcionado o inferido.
  • ignoreNamespace (valor predeterminado false): si es true, se omiten los prefijos de espacios de nombres en elementos y atributos XML. Por ejemplo, las etiquetas <abc:author> y <def:author> se tratarían como si ambas fueran simplemente <author>. Tenga en cuenta que los espacios de nombres no se pueden omitir en el elemento rowTag, solo sus elementos secundarios. Tenga en cuenta que el análisis XML no es compatible con el espacio de nombres, incluso si es false.
  • timestampFormat (valor yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]predeterminado): establece la cadena que indica un formato de marca de tiempo. Los formatos de fecha personalizados siguen los formatos de Patrones de fecha y hora. Esto se aplica al tipo timestamp.
  • timestampNTZFormat (valor predeterminado yyyy-MM-dd'T'HH:mm:ss[.SSS]): establece la cadena que indica una marca de tiempo sin formato de zona horaria. Los formatos de fecha personalizados siguen los formatos de Patrones de fecha y hora. Esto se aplica al tipo TimestampNTZType.
  • dateFormat (valor predeterminado yyyy-MM-dd): establece la cadena que indica un formato de fecha. Los formatos de fecha personalizados siguen los formatos de Patrones de fecha y hora. Esto se aplica al tipo de fecha.
  • locale (el valor predeterminado es en-US): establece una configuración regional como etiqueta de idioma en formato IETF BCP 47. Por ejemplo, esto se usa al analizar fechas y marcas de tiempo.
  • nullValue (el valor predeterminado es null): establece la representación de cadena de un valor NULL.

Ejemplos

> 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}]}