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