Função from_xml
Aplica-se a: Databricks SQL Databricks Runtime 14.1 e superior
Importante
Esta funcionalidade está em Pré-visualização Pública.
Retorna um valor struct analisado a xmlStr
partir do uso schema
do .
Sintaxe
from_xml(xmlStr, schema [, options])
Argumentos
xmlStr
: UmaSTRING
expressão que especifica um único registro XMLschema
: UmaSTRING
expressão ou invocação de schema_of_xml função.options
: Um literal opcionalMAP<STRING,STRING>
especificando diretivas.
Devoluções
A STRUCT
com nomes de campo e tipos correspondentes à definição de esquema.
xmlStr
devem estar bem formados no que diz respeito a schema
e options
. Se xmlStr
não puder ser analisado NULL
é retornado.
schema
devem ser definidos como nomes de colunas separados por vírgulas e pares de tipos de dados, como usados, por exemplo CREATE TABLE
, em .
options
, se fornecido, pode ser qualquer um dos seguintes:
excludeAttribute
(padrãofalse
): Se deseja excluir atributos em elementos.mode
(padrãoPERMISSIVE
): permite um modo para lidar com registros corrompidos durante a análise.PERMISSIVE
: quando ele atende a um registro corrompido, coloca a cadeia de caracteres malformada em um campo configurado porcolumnNameOfCorruptRecord
, e define campos malformados como nulos. Para manter registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres nomeadocolumnNameOfCorruptRecord
em um esquema definido pelo usuário. Se um esquema não tiver o campo, ele descartará registros corrompidos durante a análise. Ao inferir um esquema, ele adiciona implicitamente umcolumnNameOfCorruptRecord
campo em um esquema de saída.FAILFAST
: lança uma exceção quando atende a registros corrompidos.
columnNameOfCorruptRecord
(padrão é o valor especificado emspark.sql.columnNameOfCorruptRecord
): permite renomear o novo campo com string malformada criada peloPERMISSIVE
modo. Isso substitui ospark.sql.columnNameOfCorruptRecord
.inferSchema
(padrãotrue
): iftrue
, tenta inferir um tipo apropriado para cada atributo resultante, como um tipo booleano, numérico ou de data. Sefalse
, todas as colunas resultantes são do tipo cadeia de caracteres.prefersDecimal
(padrãofalse
): infere todos os valores de vírgula flutuante como um tipo decimal. Se os valores não se encaixam em decimais, então infere-os como duplos.attributePrefix
(padrão_
): O prefixo para atributos para diferenciar atributos de elementos. Este será o prefixo para nomes de campos. Pode ser uma cadeia de caracteres vazia.valueTag
(padrão_VALUE
): A tag usada para os dados de caracteres em elementos que também têm elementos atributo(s) ou elemento(s) filho(s).encoding
(UTF-8 padrão): decodifica os arquivos XML pelo tipo de codificação especificado.ignoreSurroundingSpaces
(padrãotrue
): Define se os espaços em branco ao redor dos valores que estão sendo lidos devem ser ignorados.rowValidationXSDPath
: Caminho para um arquivo XSD que é usado para validar o XML para cada linha individualmente. As linhas que não validam são tratadas como erros de análise como acima. O XSD não afeta o esquema fornecido ou inferido.ignoreNamespace
(padrãofalse
): Setrue
, os prefixos de namespaces em elementos e atributos XML forem ignorados. Tags<abc:author>
e<def:author>
seriam, por exemplo, tratados como se ambos fossem apenas<author>
. Observe que os namespaces não podem ser ignoradosrowTag
no elemento , apenas seus filhos. Observe que a análise XML geralmente não reconhece namespace, mesmo que false.timestampFormat
(padrãoyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): define a cadeia de caracteres que indica um formato de carimbo de data/hora. Os formatos de data personalizados seguem os formatos nos padrões Datetime. Isso se aplica ao tipo de carimbo de data/hora.timestampNTZFormat
(padrãoyyyy-MM-dd'T'HH:mm:ss[.SSS]
): define a cadeia de caracteres que indica um carimbo de data/hora sem formato de fuso horário. Os formatos de data personalizados seguem os formatos nos padrões Datetime. Isso se aplica ao tipo TimestampNTZType.dateFormat
(padrãoyyyy-MM-dd
): define a cadeia de caracteres que indica um formato de data. Os formatos de data personalizados seguem os formatos nos padrões Datetime. Isto aplica-se ao tipo de data.locale
(o padrão éen-US
): define uma localidade como marca de idioma no formato IETF BCP 47. Por exemplo, isso é usado ao analisar datas e carimbos de data/hora.nullValue
(padrão énull
): Define a representação de cadeia de caracteres de um valor nulo.
Exemplos
> 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}]}