Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Função
Aplica-se a:
SQL do Databricks
Databricks Runtime 14.1 e superior
Importante
Esse recurso está em uma versão prévia.
Retorna um struct, ou um valor variant, analisado do xmlStr usando schema.
Sintaxe
from_xml(xmlStr, schema [, options])
Argumentos
-
xmlStr: Uma expressãoSTRINGespecificando um único registro XML -
schema: uma expressãoSTRINGou invocação da funçãoschema_of_xml. -
options: umaMAP<STRING,STRING>literal opcional especificando diretivas.
Retorna
Um STRUCT cujos nomes de campo e tipos correspondem à definição do esquema, ou um valor de VARIANT se o esquema for de tipo único Variant.
xmlStr deve ser bem formado com relação a schema e options. Se xmlStr não puder ser analisado NULL será retornado.
schema precisa ser definido como pares de tipo de dados e nome de coluna separados por vírgula, como usado, por exemplo, em CREATE TABLE. No Databricks Runtime 16.4 e superior, schema também pode ser definido como um tipo único VARIANT.
options, se fornecido, pode ser um dos seguintes:
-
excludeAttribute(falsepadrão): se deve excluir atributos em elementos. -
mode(padrãoPERMISSIVE): permite um modo para lidar com registros corrompidos durante a análise.-
PERMISSIVE: quando ele encontra um registro corrompido, coloca a cadeia de caracteres malformada em um campo configurado porcolumnNameOfCorruptRecorde define os campos malformados como nulos. Para manter os registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres chamadocolumnNameOfCorruptRecordem um esquema definido pelo usuário. Se o esquema não tiver o campo, ele removerá os registros corrompidos durante a análise. Ao inferir um esquema, ele adiciona implicitamente um campocolumnNameOfCorruptRecorda um esquema de saída. -
FAILFAST: gera uma exceção quando encontra registros corrompidos.
-
-
columnNameOfCorruptRecord(o padrão é o valor especificado emspark.sql.columnNameOfCorruptRecord): permite renomear o novo campo que tem uma cadeia de caracteres malformada criada pelo modoPERMISSIVE. Isso substituispark.sql.columnNameOfCorruptRecord. -
inferSchema(padrãotrue): setrue, tenta inferir um tipo apropriado para cada atributo resultante, como um tipo booleano, numérico ou de data. Se forfalse, todas as colunas resultantes serão do tipo de cadeia de caracteres. -
prefersDecimal(padrãofalse): infere todos os valores de ponto flutuante como um tipo decimal. Se os valores não couberem em decimal, ele vai inferi-los como duplos. -
attributePrefix(_padrão): o prefixo para atributos diferenciarem atributos de elementos. Esse será o prefixo para nomes de campo. Pode ser uma cadeia de caracteres vazia. -
valueTag(padrão_VALUE): A tag usada para os dados do caractere em elementos que também possuem atributos ou elementos filhos. -
encoding(padrão UTF-8): decodifica os arquivos XML pelo tipo de codificação especificado. -
ignoreSurroundingSpaces(truepadrão): 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 usado para validar o XML para cada linha individualmente. As linhas que não são validadas são tratadas como erros de análise, conforme mostrado acima. O XSD não afeta de outra forma o esquema fornecido ou inferido. -
ignoreNamespace(padrãofalse): setrue, os prefixos de namespaces em elementos e atributos XML serão ignorados. As marcas<abc:author>e<def:author>, por exemplo, seriam tratadas como se ambas fossem apenas<author>. Observe que os namespaces não podem ser ignorados no elementorowTag, apenas seus filhos. Observe que, em geral, a análise de XML não reconhece namespace, mesmo que falsa. -
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 dos padrões de 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 dos padrões de 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 dos padrões de datetime. Isso se aplica ao tipo de data. -
locale(o padrão éen-US): define um código de idioma como tag de idioma no formato IETF BCP 47. Por exemplo, isso é usado durante a análise de datas e de carimbos de data/hora. -
nullValue(o 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}]}
> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'VARIANT');
{"p":{"a":1,"b":0.8}}