Linhagem de dados no Snowsight¶
O Snowflake rastreia como os dados fluem de objetos de origem para objetos de destino, por exemplo, de uma tabela para uma exibição, e permite que você veja de onde os dados de um objeto vieram ou para onde vão. Essas informações são chamadas de linhagem de dados e ajudam você a entender as relações entre os objetos Snowflake.
A linhagem de dados captura dois tipos de relacionamento:
Movimentação de dados, como quando os dados são copiados ou materializados de um objeto para outro. Por exemplo, as operações CREATE TABLE AS SELECT (CTAS), INSERT, ou MERGE em tabelas resultam na movimentação de dados.
Dependências de objetos, quando um objeto faz referência a um objeto base, mas não materializa nem copia dados, como quando uma exibição faz referência a uma tabela.
É possível usar a guia Lineage no Snowsight para visualizar a linhagem de objetos e colunas. O Snowflake também oferece uma função SQL para recuperar informações de linhagem de forma programática. Um recurso relacionado, o linhagem de ML, fornece informações de linhagem para modelos de aprendizado de máquina e objetos relacionados.
A linhagem de dados Snowflake oferece esses benefícios:
Fornece análise de impacto ao compreender a relação entre diferentes objetos.
Aprimora o monitoramento e a solução de problemas com a exibição da linhagem de movimentação de dados e das dependências de objetos.
Facilita a conformidade ao rastrear o fluxo de dados confidenciais.
Aumenta a confiança nos dados ao compreender os objetos e colunas de origem e destino.
Permite que a administração da linhagem de exibição seja delegada. Para obter mais informações, consulte Acesso a informações de linhagem no Snowsight.
Este tópico fornece informações sobre como usar o Snowsight para visualizar a linhagem de objetos e colunas e definir tags em colunas que aparecem em uma tabela downstream ou upstream.
Sobre a linhagem de dados no Snowsight¶
É possível usar a guia Lineage no Snowsight para entender os relacionamentos de um objeto em termos de objetos de origem e de destino. Na terminologia de linhagem, o objeto de origem está «a montante» (upstream) do objeto de destino e o objeto de destino está «a jusante» (downstream) do objeto de origem. O Snowsight revela os objetos de forma incremental, um passo de cada vez a montante ou a jusante de sua seleção.
Por exemplo, nesta instrução SQL:
CREATE TABLE table2 AS SELECT col1 FROM table1;
table2
é a tabela de destino e está a jusante da tabela de origem, table1
. A coluna col1
, originada na tabela table1
, está inclusa na tabela table2
; essa também é uma relação de linhagem downstream. Se você visualizar os detalhes da tabela table1
no Snowsight, a guia Lineage exibirá uma seta apontando de table1
para table2
para indicar a relação de linhagem downstream. Se, em vez disso, você começar na tabela table2
, uma seta aponta de table2
para table1
. Você também pode ver os relacionamentos semelhantes para a coluna col1
em ambas as tabelas.
Usando essas informações, é possível entender como os dados confidenciais fluem da tabela de origem para a tabela de destino e desenvolver estratégias para proteger colunas confidenciais, por exemplo, com uma política de mascaramento, e marcar as colunas confidenciais.
Operações com suporte¶
O Snowflake rastreia a linhagem de dados para essas operações em tabelas e objetos semelhantes a tabelas, incluindo tabelas dinâmicas, tabelas externas, exibições e exibições materializadas:
CREATE TABLE … AS SELECT (CTAS)
UPDATE, por exemplo:
UPDATE mydb.schema1.table1 FROM mydb.schema2.table2 SET table1.col1 = table2.col1;
Objetos com suporte¶
A linhagem de dados oferece suporte à movimentação de dados e a dependência entre objetos semelhantes a tabelas. Um objeto «semelhante a uma tabela» é qualquer objeto que possa ser consultado como uma tabela, inclusive tabelas (nada é mais semelhante a uma tabela do que uma tabela). Os objetos do tipo tabela incluem:
Tabelas
Tabelas dinâmicas
Tabelas externas
Tabelas Iceberg
Exibições
Exibições materializadas
Os estágios também podem participar de relacionamentos de linhagem de dados, assim como os seguintes objetos de aprendizado de máquina.
Exibições de recursos (que na verdade são tabelas ou exibições dinâmicas dentro do Snowflake)
A linhagem de colunas é compatível entre colunas em quaisquer dois objetos do tipo tabela. É possível, por exemplo, selecionar uma coluna em uma tabela para visualizar a linhagem da coluna downstream, que mostra os outros objetos semelhantes a tabelas em que essa coluna aparece.
Além disso, é possível ver as associações de políticas de tags e mascaramento se estiver usando uma função que tenha privilégios para gerenciar tags e políticas de mascaramento.
Linhagem de ML¶
A linhagem de ML oferece suporte especificamente a relações de aprendizado de máquina, que se concentram em como os dados são usados e transformados em fluxos de trabalho de aprendizado de máquina, em vez de relações mais simples de movimento ou dependência. Há suporte para relacionamentos entre os seguintes tipos de objetos:
Exibições de recursos (que na verdade é uma tabela dinâmica ou uma exibição dentro do Snowflake)
Nós de tabela renomeados e excluídos¶
As tabelas renomeadas e excluídas são mostradas no gráfico; as tabelas excluídas são mostradas em cinza.
Retenção de linhagem e adição retroativa de dados¶
O gráfico Lineage fornece informações de linhagem em tempo real; as operações rastreadas aparecem sem demora na UI do Snowsight. As informações históricas são mantidas da seguinte forma:
A linhagem da coluna é mantida por um ano.
A linhagem do objeto é mantida por um ano.
A linhagem de objetos excluídos é mantida por 14 dias.
Para essa visualização, as dependências que não envolvem movimentação de dados são preenchidas novamente até o limite de retenção do histórico de atividades do Snowflake. Por exemplo, se uma exibição foi criada a partir de uma tabela há seis meses, essa dependência é visível como um relacionamento de linhagem downstream a partir da tabela e um relacionamento upstream a partir da exibição. Os relacionamentos de tabela para tabela (movimentação de dados) que ocorreram antes dessa visualização (lançada em novembro de 2024) podem não ser capturados.
Nota
Algumas contas podem não ver os dados completos da linhagem histórica imediatamente no lançamento desta visualização. Os dados de linhagem ainda estão sendo preenchidos novamente para essas contas e devem estar disponíveis nas próximas semanas.
Limitações¶
A guia Lineage não está disponível para os seguintes tipos de objetos:
Objetos em um banco de dados compartilhado.
Objetos no banco de dados compartilhado SNOWFLAKE.
Objetos no INFORMATION_SCHEMA de um banco de dados.
As tabelas dinâmicas aparecem no gráfico de linhagem para outros objetos, mas a guia Lineage não aparece para as próprias tabelas dinâmicas.
As informações de consulta estão disponíveis apenas para relações de movimentação de dados, não para dependências de objetos. Somente um usuário com a função ACCOUNTADMIN pode visualizar as informações da consulta. As informações de consulta não estão disponíveis para outras funções.
Acesso a informações de linhagem no Snowsight¶
Para acessar a guia Lineage e visualizar todos os objetos e dependências de linhagem upstream e downstream de um objeto, use uma função com os seguintes privilégios:
Qualquer privilégio nos objetos para os quais você deseja avaliar a linhagem, como SELECT em uma tabela.
USAGE no banco de dados e no esquema que contém o objeto.
VIEW LINEAGE na conta.
O exemplo a seguir cria uma função personalizada e concede os privilégios necessários a ela:
USE ROLE ACCOUNTADMIN;
CREATE ROLE lineage_role;
GRANT VIEW LINEAGE ON ACCOUNT TO ROLE lineage_role;
GRANT SELECT ON mydb.sch.mytable TO ROLE lineage_role;
Se você não tiver privilégios em um objeto upstream ou downstream no gráfico de linhagem, o objeto aparecerá em cinza com uma mensagem informando que você não tem privilégios suficientes para visualizar o objeto. Peça ao seu administrador de conta Snowflake que lhe conceda privilégios no objeto. Se necessário, solicite também o privilégio global VIEW LINEAGE.
O objeto cinza não implica um nó terminal no gráfico de linhagem; ele indica apenas que você não pode visualizar a linhagem mais a montante ou a jusante desse ponto porque não tem privilégios para recuperar a linhagem desse objeto. Esse comportamento também se aplica a objetos e colunas protegidos por outras políticas de acesso.
Monitoramento da linhagem de dados e das colunas de tags¶
Nota
A marcação requer o Snowflake Enterprise Edition.
Para monitorar a linhagem de dados de tabelas e colunas sensíveis a tags, faça o seguinte:
Use uma função que tenha os privilégios necessários para visualizar a linhagem upstream e downstream de um objeto.
No Snowsight, navegue até Data » Databases.
Selecione um banco de dados, esquema e objeto compatível.
Selecione a guia Lineage.
Selecione um warehouse caso ainda não haja um warehouse em uso. A geração de um gráfico de linhagem requer um warehouse.
O gráfico de linhagem começa com o objeto e um nível de objetos downstream e upstream, conforme aplicável. Uma seta aponta da esquerda para a direita para indicar que uma coluna em uma tabela de destino inclui uma coluna de uma tabela de origem. É possível selecionar uma tabela e visualizar suas colunas.
Se uma política de mascaramento for definida em uma coluna e houver um erro com a política, será possível concluir as atribuições de tags neste procedimento e alternar para a guia Columns (para a tabela ou exibição) para editar a atribuição da política de mascaramento. Se você passar o mouse sobre o endereço Policy Error, será exibida uma explicação do erro.
Para ver mais detalhes sobre uma coluna específica da tabela no gráfico de linhagem, selecione uma tabela. No painel de detalhes que aparece, passe o mouse sobre uma coluna e selecione View Lineage ou View Dependencies com base na seleção do gráfico.
Se sua tabela tiver muitas colunas, é possível usar o filtro de pesquisa para localizar a coluna.
Na caixa de diálogo View Column Lineage, selecione Downstream Lineage ou Upstream Lineage.
Avalie os detalhes da coluna e da tabela, bem como as tags atribuídas à coluna.
As tags na coluna estão associadas à coluna de origem e ao fato de a coluna de destino ter ou não tags.
Se uma tabela incluir uma coluna que não deveria estar lá, modifique a instrução SQL que cria a tabela.
Se uma tabela tiver uma tag atribuída a uma coluna que não deveria ter essa tag, atualize a instrução SQL que atribui a tag à coluna ou use o Snowsight para atualizar a atribuição da tag.
Se você estiver usando a função ACCOUNTADMIN ou uma função que tenha o privilégio global APPLY TAG, o banner Review Columns and Apply Tags será exibido. Para aplicar tags a colunas, faça o seguinte:
No banner, selecione Review Columns and Apply Tags.
As alterações que ainda não foram aplicadas são destacadas com cores e padrões diferentes:
As novas tags a serem definidas na coluna têm uma borda azul tracejada.
Os valores de tag a serem atualizados têm uma borda amarela.
Se as tags ainda não estiverem definidas na coluna com base na tabela que você selecionou no gráfico, o banner não aparecerá.
Selecione Apply Tags para aplicar as tags e atualizar os valores das tags nas colunas.
Se não for possível definir nenhuma tag nas colunas, uma mensagem de erro exibirá o número de colunas para as tags que não puderam ser definidas. Selecione Review Columns and Apply Tags para repetir a etapa anterior para atribuir tags.
Depois que você atribuir as tags às colunas, o banner desaparecerá.