Categorias:

Funções de tabela

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>' ]
)
Copy

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 TABLE para 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

SOURCE_OBJECT_DATABASE

VARCHAR

O banco de dados com o objeto de origem.

SOURCE_OBJECT_SCHEMA

VARCHAR

O esquema com o objeto de origem.

SOURCE_OBJECT_NAME

VARCHAR

O nome não qualificado do objeto de origem.

SOURCE_OBJECT_DOMAIN

VARCHAR

O domínio do objeto de destino. Os valores possíveis são “COLUMN”, “TABLE”, “DATASET”, “MODULE” (para modelos de ML) e “STAGE”.

SOURCE_OBJECT_VERSION

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.

SOURCE_COLUMN_NAME

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.

SOURCE_STATUS

VARCHAR

O status do objeto de origem. Os valores possíveis são “ACTIVE” e “MASKED”.

TARGET_OBJECT_DATABASE

VARCHAR

O banco de dados com o objeto de destino.

TARGET_OBJECT_SCHEMA

VARCHAR

O esquema com o objeto de destino.

TARGET_OBJECT_NAME

VARCHAR

O nome não qualificado do objeto de destino.

TARGET_OBJECT_DOMAIN

VARCHAR

O domínio do objeto de destino. Os valores possíveis são “COLUMN”, “TABLE”, “DATASET”, “MODULE” (para modelos de ML) e “STAGE”.

TARGET_OBJECT_VERSION

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.

TARGET_COLUMN_NAME

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.

TARGET_STATUS

VARCHAR

O status do objeto de destino. Os valores possíveis são “ACTIVE” e “MASKED”.

DISTANCE

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.

PROCESS

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_LINEAGE retorna 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));
Copy

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        |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+