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 “DELETED”, “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 “DELETED”, “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.

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

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