- 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:
- distance
- O 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        |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+