Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Função
Aplica-se a:
Databricks SQL
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: UmaSTRINGexpressão que especifica um único registro XML -
schema: UmaSTRINGexpressão ou invocação deschema_of_xmlfunção. -
options: Um literal opcionalMAP<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ã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 nomeadocolumnNameOfCorruptRecordem 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 campocolumnNameOfCorruptRecordem um esquema de saída. -
FAILFAST: lança uma exceção quando encontra registos corrompidos.
-
-
columnNameOfCorruptRecord(padrão é o valor especificado emspark.sql.columnNameOfCorruptRecord): permite renomear o novo campo com string malformada criada pelo modoPERMISSIVE. 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 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ã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 de outra forma 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 ignorados no elementorowTag, apenas nos 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 aplica-se ao tipo de timestamp. -
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 é 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}}