from_xml
Función
Se aplica a: Databricks SQL 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ónSTRING
que especifica un único registro XMLschema
: expresiónSTRING
o invocación de la función schema_of_xml.options
: un literalMAP<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
(predeterminadofalse
): si se excluyen los atributos de los elementos.mode
(valor predeterminadoPERMISSIVE
): 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 porcolumnNameOfCorruptRecord
y establece en NULL los campos con formato incorrecto. Para mantener los registros dañados, puede establecer un campo de tipo cadena denominadocolumnNameOfCorruptRecord
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 campocolumnNameOfCorruptRecord
en un esquema de salida.FAILFAST
: inicia una excepción cuando detecta registros dañados.
columnNameOfCorruptRecord
(el valor predeterminado es el especificado enspark.sql.columnNameOfCorruptRecord
): permite cambiar el nombre del nuevo campo con una cadena con formato incorrecto creada por el modoPERMISSIVE
. Esto invalidaspark.sql.columnNameOfCorruptRecord
.inferSchema
(valor predeterminadotrue
): sitrue
, intenta deducir un tipo adecuado para cada atributo resultante, como un tipo booleano, numérico o de fecha. Si esfalse
, todas las columnas resultantes son de tipo cadena.prefersDecimal
(valor predeterminadofalse
): 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
(predeterminadotrue
): 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 predeterminadofalse
): si estrue
, 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 elementorowTag
, 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
(valoryyyy-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 predeterminadoyyyy-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 predeterminadoyyyy-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 esen-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 esnull
): 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}]}