Pular para o conteúdo principal

Pergunta

Se eu tiver atributos variados em uma coluna usando o tipo map, como posso extraí-los e usá-los em consultas?

Resposta

Este é um exemplo básico de como extrair chaves e valores de um campo de atributos variável. Esse método criará aparentes duplicatas de cada linha na tabela source/raw. No entanto, como as chaves e os valores são extraídos, eles podem ser colocados na chave primária ou em uma chave secundária com um índice, como um filtro de Bloom. Neste exemplo, basicamente temos uma fonte que cria uma tabela de métricas; ela tem vários atributos que podem se aplicar em um campo de atributos que contém maps. Se houver atributos que estarão sempre presentes nos registros, é melhor extraí-los para colunas próprias e preenchê-las. Você deve conseguir simplesmente copiar e colar para ver quais seriam as saídas e o que a visão materializada faz neste caso. Crie um banco de dados de exemplo:
Crie a tabela inicial que conterá as linhas e os atributos:
Insira linhas de exemplo na tabela. O tamanho da amostra é intencionalmente pequeno para que, quando a visão materializada for criada, você possa ver como as linhas se multiplicam para cada atributo.
Podemos então criar uma visão materializada com array join para extrair os atributos do map para as colunas de chaves e valores. Para demonstração, no exemplo abaixo, é usada uma tabela implícita (com o comando POPULATE e uma tabela subjacente como .inner.{uuid}... ). No entanto, a prática recomendada é usar uma tabela explícita, na qual você primeiro definiria a tabela e, em seguida, criaria uma visão materializada sobre ela com o comando TO.
A nova tabela terá mais linhas, com as chaves extraídas, assim:
A partir daqui, para consultar as linhas com determinados atributos, você faria algo assim:
Última modificação em 2 de julho de 2026