Partilhar via


Função from_xml

Aplica-se a:assinalado sim Databricks SQL assinalado sim Databricks Runtime 14.1 ou superior

Importante

Esta funcionalidade está em Pré-visualização Pública.

Retorna uma struct ou um valor de variante analisado a partir de xmlStr utilizando schema.

Sintaxe

from_xml(xmlStr, schema [, options])

Argumentos

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

Devoluções

A STRUCT com nomes de campo e tipos que correspondam à definição de esquema, ou um valor VARIANT se o esquema for de um único tipo Variant.

xmlStr devem estar adequadamente estruturados 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, no CREATE TABLE. No Databricks Runtime 16.4 e versões posteriores, schema também pode ser definido como um tipo único VARIANT.

options, se fornecido, pode ser qualquer um dos seguintes:

  • excludeAttribute (padrão false): Se deseja excluir atributos em elementos.
  • mode (padrão PERMISSIVE): 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 por columnNameOfCorruptRecord, e define campos malformados como nulos. Para manter registros corrompidos, você pode definir um campo de tipo de cadeia de caracteres nomeado columnNameOfCorruptRecord 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 um campo columnNameOfCorruptRecord em um esquema de saída.
    • FAILFAST: lança uma exceção quando encontra registos corrompidos.
  • columnNameOfCorruptRecord (padrão é o valor especificado em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo com string malformada criada pelo modo PERMISSIVE. Isso substitui o spark.sql.columnNameOfCorruptRecord.
  • inferSchema (padrão true): if true, tenta inferir um tipo apropriado para cada atributo resultante, como um tipo booleano, numérico ou de data. Se false, todas as colunas resultantes são do tipo cadeia de caracteres.
  • prefersDecimal (padrão false): 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 etiqueta usada para dados de texto em elementos que também contêm atributo(s) ou elemento(s) filho(s).
  • encoding (UTF-8 padrão): decodifica os arquivos XML pelo tipo de codificação especificado.
  • ignoreSurroundingSpaces (padrão true): 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 de outra forma o esquema fornecido ou inferido.
  • ignoreNamespace (padrão false): Se true, 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 ignorados no elemento rowTag, apenas nos seus filhos. Observe que a análise XML geralmente não reconhece namespace, mesmo que false.
  • 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 nos padrões Datetime. Isso aplica-se ao tipo de timestamp.
  • 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 nos padrões 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 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 é utilizado ao analisar datas e marcações de tempo.
  • 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}]}

> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'VARIANT');
 {"p":{"a":1,"b":0.8}}