- Categorias:
XMLGET¶
Extrai um objeto do elemento XML (geralmente chamado simplesmente de tag) do conteúdo do elemento externo XML com base no nome e no número de instância da tag especificada.
(Note que uma tag XML não é o mesmo que uma tag de governança de dados do Snowflake.)
Sintaxe¶
Argumentos¶
expressionA expressão a partir da qual se extrai o elemento.
A expressão deve avaliar como um OBJECT (ou um VARIANT contendo um OBJECT). O OBJECT deve conter XML válido no formato interno que o Snowflake suporta. Normalmente, isso significa que o OBJECT foi produzido por uma das seguintes opções:
Chamada da função PARSE_XML.
Carregamento dos dados (por exemplo, pelo comando COPY INTO <tabela>) e especificação que os dados estão no formato XML.
A função XMLGET não opera diretamente sobre uma expressão VARCHAR mesmo que esse VARCHAR contenha um texto XML válido.
tag_nameO nome de uma tag XML armazenada no
expression.instance_numberSe o XML tiver múltiplas instâncias de
tag_name, então useinstance_numberpara especificar qual instância deve ser recuperada. Como um índice de matriz, oinstance_numberé baseado em 0, não baseado em 1.instance_numberpode ser omitido, caso em que é utilizado o valor padrão 0.
Retornos¶
O tipo de dados do valor retornado é OBJECT.
A função retorna NULL nos seguintes casos:
Se algum argumento de XMLGET for NULL.
Se a instância da tag não for encontrada.
Consulte as Notas de Uso para obter mais detalhes.
Notas de uso¶
O resultado de XMLGET não é o conteúdo da tag (ou seja, o texto entre as tags), mas o elemento inteiro (a tag de abertura, o conteúdo e a tag de fechamento). Do valor retornado em OBJECT, você pode extrair o nome da tag, os valores dos atributos da tag e o conteúdo do elemento (inclusive as tags aninhadas) usando a função GET:
Para extrair valores de atributos, use
GET(tag, '@attrname').Para extrair o conteúdo, use
GET(tag, '$').Para extrair o nome da tag, use
GET(tag, '@').
Você pode extrair tags aninhadas aninhando as chamadas de função XMLGET. Por exemplo:
As posições das tags internas no conteúdo podem ser obtidas por meio de
GET(tag, 'inner-tag-name'). Se o conteúdo contiver vários elementos, as posições serão representadas como uma matriz.Você não pode usar XMLGET para extrair o elemento mais externo. Para obter o elemento mais externo, selecione o próprio
expression.
Exemplos¶
O exemplo a seguir cria uma tabela com um OBJECT que contém XML e, em seguida, usa a função XMLGET para extrair elementos desse OBJECT.
Este exemplo mostra como usar GET com XMLGET para recuperar o conteúdo de um elemento. No exemplo, a tag level2 contém três itens (texto e duas tags aninhadas), portanto, GET retorna esses itens em um ARRAY. As tags aninhadas são representadas por OBJECTs (pares chave-valor). A propriedade @ contém o nome da tag aninhada e a propriedade $ contém o conteúdo da tag aninhada.
Este exemplo mostra como usar GET com XMLGET para recuperar um atributo de uma tag.
Nota
Para obter mais exemplos de consultas que usam a função XMLGET, consulte Exemplos de trabalho com XML.