Pular para o conteúdo

O passo Análise de XML lê o XML contido numa coluna de uma tabela de origem e converte-o em linhas. Para cada linha de entrada, encontra todas as ocorrências do elemento indicado e emite uma linha de saída por cada correspondência, projetando os atributos e os valores das etiquetas filhas desse elemento em colunas.

É o equivalente da ferramenta XML Parse do Alteryx. A análise é executada no motor de fluxos de trabalho (as bases de dados não conseguem analisar XML em SQL), pelo que o passo é nativo do PlaidCloud e não tem alternativa em SQL.

Documento XML<order id=“1”><name>Ann</name><item>a</item></order>analisarcolunas planasorder_idnameitem1Anna
O passo Table XML Parse converte um documento XML em linhas e colunas simples — os elementos e os atributos tornam-se campos que os passos seguintes podem utilizar diretamente.
  • Tabela de origem — a tabela cujas linhas contêm o XML a analisar.
  • Tabela de saída — a tabela onde as linhas analisadas são escritas.
  • Campo XML — a coluna que contém o texto XML.
  • Elemento — o elemento cujas ocorrências se tornam, todas, linhas de saída. Deixe-o em branco para analisar os elementos de nível superior.
  • Ler o elemento como expressão XPath 1.0 — trata Elemento como uma expressão XPath 1.0 em vez de um nome, pelo que pode usar predicados, testes de atributos, carateres universais e funções como count(), name() e contains(). Um caminho relativo começa no elemento raiz do documento. Cada item que a expressão seleciona torna-se uma linha de saída. Um elemento é analisado da forma habitual. Qualquer outro item, como um atributo ou o resultado de count(), substitui o valor de Campo XML na sua linha pelo seu próprio valor; com os valores filhos ativados, um atributo selecionado obtém antes uma coluna com o seu próprio nome. O XML é lido com as entidades e o acesso à rede desativados, e um documento que não esteja bem formado faz o passo falhar, a menos que ignore essas linhas.
  • Emitir os valores dos elementos filhos como colunas — para cada elemento correspondente, adiciona uma coluna por etiqueta filha com o valor dessa filha.
  • Emit each child’s outer XML — adiciona ainda uma coluna <tag>_OuterXML com o XML serializado de cada filha (útil quando uma filha contém, ela própria, mais XML que analisa num passo posterior).
  • Ignorar linhas cujo XML não possa ser analisado — descarta uma linha de entrada cujo valor não seja XML bem formado, em vez de fazer o passo falhar.

Saída escolhe em que se transforma cada documento:

  • Colunas (predefinição) — os valores analisados em colunas, conforme definido abaixo.
  • Elemento como JSON — cada documento no Campo XML é substituído pelo respetivo texto JSON, com uma linha de saída por linha de entrada. Os atributos tornam-se campos @, o texto do próprio elemento torna-se #text e as filhas repetidas tornam-se matrizes. As opções de Elemento, de valor filho, de XML externo e de XPath ficam desativadas; Ignorar linhas cujo XML não possa ser analisado continua a aplicar-se.

Para dar valores tipados ao JSON, defina Detect Value Types From First N Documents com um número de documentos. O JSON passa então a conter os elementos filhos da raiz, cada um tipado a partir dos primeiros documentos desse número como número inteiro, número decimal, booleano, data, carimbo de data/hora ou texto, alargado para se ajustar a todos esses documentos, tal como o schema_of_xml do Spark o infere. Um campo que esses documentos não tenham é omitido e um valor que não seja legível como o seu tipo fica nulo. Com 0, todos os valores permanecem texto.

A secção Consultas XPath funciona como o nó XPath do KNIME. Adicione linhas a Consultas (xpaths): em vez de uma linha por elemento, cada linha de entrada é copiada e obtém uma coluna por consulta XPath 1.0 sobre o XML no Campo XML. As colunas de passagem mantêm os seus tipos. Cada consulta tem uma Coluna (target), uma expressão XPath 1.0 (path), um Resultado (kind) e Vários resultados (multi):

  • Resultado — o tipo de valor: String, Integer, Double, Number, Boolean, Node ou NodeSet.
  • Vários resultados — o que escreve uma consulta que seleciona vários itens: SingleCell (o primeiro), CollectionCell (um valor de lista), MultipleColumns (uma coluna para cada), UngroupToRows (uma linha para cada) ou JoinedText (o texto dos itens unido pelo Separador de itens (separator), um espaço por predefinição; Partes do item (XPaths) (parts) obtém o texto de cada item a partir da primeira correspondência destes caminhos relativos, unido pelo Separador de partes (part_separator)).
  • Vazio é ausente (empty_missing) — uma consulta que não seleciona nada gera uma célula ausente.

Estes campos da secção aplicam-se com consultas:

  • Namespaces (xpath_namespaces) — os pares {prefix: namespace URI} que as consultas utilizam. Prefixo de namespace da raiz (xpath_root_prefix) associa o namespace predefinido da raiz do documento a este prefixo.
  • Omitir o campo XML da saída (xpath_remove_source) — omite o Campo XML da saída.
  • Uma consulta booleana falsa gera uma célula ausente (xpath_missing_on_false) — uma consulta Boolean falsa gera uma célula ausente. Uma consulta de coleção que não seleciona nada gera uma célula ausente (xpath_empty_set_missing) — uma consulta CollectionCell que não seleciona nada gera uma célula ausente.
  • Ler o campo XML como uma página HTML (xpath_html) — lê o campo como uma página HTML, reparada numa árvore XML sob uma raiz html.
  • Coluna do número do item de “uma linha cada” (xpath_ungroup_index) — com uma consulta UngroupToRows, escreve nesta coluna o número do item, com base 1, de cada linha. “Uma linha cada” sem resultado (xpath_ungroup_empty) decide o que acontece com um documento em que a consulta não seleciona nada: uma linha com o valor ausente (row, a predefinição), nenhuma linha (drop) ou um passo falhado (fail).
  • Escrever apenas a tabela formada pelos elementos da primeira consulta (xpath_table) — escreve apenas a tabela formada pelos elementos da primeira consulta, uma linha por elemento, como cada tr de uma tabela HTML, com os respetivos elementos filhos como células de texto. Uma primeira linha de células de cabeçalho dá nome às colunas; caso contrário, chamam-se Column <n>.

O separador Colunas é o mapeador de dados padrão para as colunas de passagem — as colunas de origem que pretende transportar para cada linha de saída.

As colunas que a análise descobre — os atributos e as etiquetas filhas de um elemento — são adicionadas automaticamente à saída; não é necessário listá-las aqui. Quando um nome extraído colide com uma coluna de passagem (ou com uma extraída anteriormente), é desduplicado acrescentando um número (id → id2 → id3), tal como no Alteryx.

Uma cadeia de passos Análise de XML funciona como a do Alteryx: todas as colunas recebidas são passadas, pelo que um passo posterior pode voltar a analisar uma coluna que um passo anterior produziu e referenciar as colunas extraídas por esse passo anterior.