Compartilhar via


Função from_xml

Aplica-se a: verificação marcada como sim SQL do Databricks marca de seleção positiva Databricks Runtime 14.1 e superior

Importante

Esse recurso está em uma versão prévia.

Retorna um valor de struct analisado de xmlStr usando schema.

Sintaxe

from_xml(xmlStr, schema [, options])

Argumentos

  • xmlStr: Uma expressão STRING especificando um único registro XML
  • schema: uma expressão STRING ou invocação da função schema_of_xml.
  • options: uma MAP<STRING,STRING> literal opcional especificando diretivas.

Retorna

Um STRUCT com nomes de campo e tipos que correspondem à definição de esquema.

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.

options, se fornecido, pode ser um dos seguintes:

  • excludeAttribute (false padrão): se deve excluir atributos em elementos.
  • mode (padrão PERMISSIVE): 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 por columnNameOfCorruptRecord e define os campos malformados como nulos. Para manter os registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres chamado columnNameOfCorruptRecord em 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 campo columnNameOfCorruptRecord a um esquema de saída.
    • FAILFAST: gera uma exceção quando encontra registros corrompidos.
  • columnNameOfCorruptRecord (o padrão é o valor especificado em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo que tem uma cadeia de caracteres malformada criada pelo modo PERMISSIVE. Isso substitui spark.sql.columnNameOfCorruptRecord.
  • inferSchema (padrão true): se true, tenta inferir um tipo apropriado para cada atributo resultante, como um tipo booleano, numérico ou de data. Se for false, todas as colunas resultantes serão do tipo de cadeia de caracteres.
  • prefersDecimal (padrão false): 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 (true padrã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ão false): se true, 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 elemento rowTag, apenas seus filhos. Observe que, em geral, a análise de XML não reconhece namespace, mesmo que falsa.
  • timestampFormat (padrão yyyy-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ão yyyy-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ão yyyy-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}]}