Partilhar via


Função from_xml

Aplica-se a: Marque Sim Databricks SQL Marque Sim 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 schemado .

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> 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ã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 columnNameOfCorruptRecord campo em um esquema de saída.
    • FAILFAST: lança uma exceção quando atende a registros corrompidos.
  • columnNameOfCorruptRecord (padrão é o valor especificado em spark.sql.columnNameOfCorruptRecord): permite renomear o novo campo com string malformada criada pelo PERMISSIVE modo. 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 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ã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 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 rowTag no elemento , apenas 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 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 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 é 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}]}