- Categorias:
 
GET_LINEAGE (SNOWFLAKE.CORE)¶
Dado um objeto Snowflake, retorna informações de linhagem de dados upstream ou downstream desse objeto. Upstream significa o caminho dos objetos que levaram à criação do objeto; downstream significa o caminho dos objetos que foram criados a partir do objeto.
Sintaxe¶
SNOWFLAKE.CORE.GET_LINEAGE(
    '<object_name>',
    '<object_domain>',
    '<direction>',
    [ <distance>, ]
    [ '<object_version>' ]
)
Argumentos¶
Obrigatório:
'object_name'Nome do objeto para o qual as informações de linhagem de dados são recuperadas. Use o nome totalmente qualificado se o objeto estiver em um esquema diferente do esquema atual na sessão.
'object_domain'O domínio do objeto. Os domínios compatíveis são “COLUMN”, “TABLE” (que inclui todos os objetos semelhantes a tabelas, inclusive exibições e tabelas dinâmicas) e “STAGE”. Para a linhagem ML, use
TABLEpara exibições de recursos (que são tabelas e exibições dinâmicas internamente), “DATASET” ou “MODULE” para modelos.'direction'A direção para a qual a linhagem deve ser mantida. As direções compatíveis são “UPSTREAM” e “DOWNSTREAM”.
Opcional:
distanceO número de níveis de linhagem a serem recuperados. O máximo é 5; esse também é o padrão.
'object_version'Para objetos com controle de versão, como conjuntos de dados e modelos, a versão do objeto para o qual a linhagem é recuperada. Se não for especificado, será usada a versão padrão.
Saída¶
A saída é uma tabela com uma linha por relacionamento de objeto no caminho da linhagem (ou seja, uma borda no gráfico da linhagem). Os relacionamentos são entre objetos designados como origem e destino em cada linha. A tabela inclui as seguintes colunas:
Coluna  | 
Tipo  | 
Descrição  | 
|---|---|---|
  | 
VARCHAR  | 
O banco de dados com o objeto de origem.  | 
  | 
VARCHAR  | 
O esquema com o objeto de origem.  | 
  | 
VARCHAR  | 
O nome não qualificado do objeto de origem.  | 
  | 
VARCHAR  | 
O domínio do objeto de destino. Os valores possíveis são “COLUMN”, “TABLE”, “DATASET”, “MODULE” (para modelos de ML) e “STAGE”.  | 
  | 
VARCHAR  | 
A versão do objeto de origem, para objetos com versão, como conjuntos de dados e modelos. NULL se o objeto de origem não tiver controle de versão.  | 
  | 
VARCHAR  | 
O nome da coluna de origem, se o objeto de origem for uma coluna. NULL se o objeto de origem não for uma coluna.  | 
  | 
VARCHAR  | 
O status do objeto de origem. Os valores possíveis são “ACTIVE” e “MASKED”.  | 
  | 
VARCHAR  | 
O banco de dados com o objeto de destino.  | 
  | 
VARCHAR  | 
O esquema com o objeto de destino.  | 
  | 
VARCHAR  | 
O nome não qualificado do objeto de destino.  | 
  | 
VARCHAR  | 
O domínio do objeto de destino. Os valores possíveis são “COLUMN”, “TABLE”, “DATASET”, “MODULE” (para modelos de ML) e “STAGE”.  | 
  | 
VARCHAR  | 
A versão do objeto de destino, para objetos com versão, como conjuntos de dados e modelos. NULL se o objeto de destino não tiver controle de versão.  | 
  | 
VARCHAR  | 
O nome da coluna de destino, se o objeto de destino for uma coluna. NULL se o objeto de destino não for uma coluna.  | 
  | 
VARCHAR  | 
O status do objeto de destino. Os valores possíveis são “ACTIVE” e “MASKED”.  | 
  | 
INTEGER  | 
A distância do objeto de destino em relação ao objeto de origem no caminho da linhagem. Um relacionamento direto tem uma distância de 1.  | 
  | 
VARIANT  | 
Fornece detalhes sobre como foi estabelecida a linhagem entre o objeto de origem e o objeto de destino. Por exemplo, ela pode incluir o ID de uma consulta SQL ou o nome de um procedimento armazenado que moveu dados do objeto de origem para o objeto de destino.  | 
Notas de uso¶
Você receberá uma mensagem de erro se o objeto não existir, se o objeto não estiver acessível ao usuário atual, se o objeto não for compatível com a linhagem de dados ou se o objeto não estiver no domínio especificado.
A tabela de saída não contém linhas se não houver informações de linhagem disponíveis para o objeto especificado; isso não é um erro.
GET_LINEAGEretorna no máximo 10 milhões de linhas, cada linha representando uma borda (relação) no gráfico de linhagem. Se houver mais de 10 milhões de linhas na saída, a função truncará silenciosamente a saída para 10 milhões de linhas.Para conhecer as limitações e considerações que se aplicam ao uso dessa função, consulte Lineage limitations and considerations.
Exemplo¶
Suponha que você tenha criado uma tabela nomeada TABLE_B a partir de TABLE_A usando CREATE TABLE AS SELECT e, em seguida, criado uma tabela nomeada TABLE_C a partir de TABLE_B de maneira semelhante. A seguinte consulta SQL recupera duas etapas da linhagem downstream de TABLE_A:
SELECT
    DISTANCE,
    SOURCE_OBJECT_DOMAIN,
    SOURCE_OBJECT_DATABASE,
    SOURCE_OBJECT_SCHEMA,
    SOURCE_OBJECT_NAME,
    SOURCE_STATUS,
    TARGET_OBJECT_DOMAIN,
    TARGET_OBJECT_DATABASE,
    TARGET_OBJECT_SCHEMA,
    TARGET_OBJECT_NAME,
    TARGET_STATUS,
FROM TABLE (SNOWFLAKE.CORE.GET_LINEAGE('my_database.sch.table_a', 'TABLE', 'DOWNSTREAM', 2));
A saída é semelhante à seguinte:
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+
| DISTANCE | SOURCE_OBJECT_DOMAIN | SOURCE_OBJECT_DATABASE | SOURCE_OBJECT_SCHEMA | SOURCE_OBJECT_NAME | SOURCE_STATUS | TARGET_OBJECT_DOMAIN | TARGET_OBJECT_DATABASE | TARGET_OBJECT_SCHEMA | TARGET_OBJECT_NAME | TARGET_STATUS |
|----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------|
|        1 | TABLE                | MY_DATABASE            | SCH                  | TABLE_A            | ACTIVE        | TABLE                | MY_DATABASE            | SCH                  | TABLE_B            | ACTIVE        |
|        2 | TABLE                | MY_DATABASE            | SCH                  | TABLE_B            | ACTIVE        | TABLE                | MY_DATABASE            | SCH                  | TABLE_C            | ACTIVE        |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+