Jak v Snowflake efektivně získat primární klíče z více tabulek

Ruční identifikace nebo ověřování primárních klíčů (PK) v mnoha tabulkách najednou může být zdlouhavé a časově náročné. Základní metodu vyhledávání pomocí příkazu INFORMATION_SCHEMA pravděpodobně znáte. Tento článek vás seznámí s efektivnějším přístupem, který využívá příkazy DDL programu Snowflake.

Karolina Everlingová
27. května 2024

Popis problému

Jedním z častých problémů je identifikace primárních klíčů v tabulkách Snowflake, aniž by bylo nutné ručně kontrolovat každou tabulku. Použití příkazu DESCRIBE TABLE funguje, ale u velkého počtu tabulek se stává nepraktickým. Automatizace tohoto procesu může výrazně ušetřit čas a snížit počet chyb.

Přehled řešení

K automatickému načítání primárních klíčů můžete využít pohledy INFORMATION_SCHEMA a funkci GET_DDL společnosti Snowflake. Zde je návod, jak to efektivně provést krok za krokem:

(1) Použití INFORMATION_SCHEMA

INFORMATION_SCHEMA systému Snowflake poskytuje pohledy jako TABLE_CONSTRAINTS a REFERENTIAL_CONSTRAINTS, které lze dotazem získat metadata o omezeních tabulky, včetně primárních klíčů.

(2) Použití GET_DDL

Funkce GET_DDL generuje příkazy jazyka DDL (Data Definition Language) pro databázové objekty. Výstup můžete analyzovat a získat informace o primárním klíči.

(3) Práce s více schématy

Pokud chceme zjistit primární klíče většího počtu tabulek uložených ve více schématech, můžeme použít příkaz SHOW PRIMARY KEYS in schema.

Praktický příklad

Zde je praktický příklad, jak můžete tuto funkci implementovat:

(1) Použití INFORMATION_SCHEMA

Můžete se zeptat na INFORMATION_SCHEMA.TABLE_CONSTRAINTS a najít primární klíče pro více tabulek. Jedná se o základní a jednoduchou metodu.

(2) Použití GET_DDL

Pokud dáváte přednost použití GET_DDL, zde je příklad dotazu, který z DDL tabulky získá primární klíč:

WITH t1 AS (
 SELECT 'table1' AS "TABLE_NAME", 
GET_DDL('TABLE', '<schema_name>.<table_name>') AS DDL
)
SELECT 
 "TABLE_NAME",
 REPLACE(REPLACE(REPLACE(REPLACE(SPLIT_PART(T.DDL, 'primary key', 2), ';', ''), '(', ''), ')', ''), '"', '') AS PK
FROM t1 AS T;
(3) Práce s více schématy

Pokud potřebujete zjistit primární klíče ve více schématech, můžete použít příkaz SHOW PRIMARY KEYS. Zde je příklad:

SHOW PRIMARY KEYS IN SCHEMA "KEBOOLA_00"."schemaA";
SHOW PRIMARY KEYS IN SCHEMA "KEBOOLA_00"."schemaB";

CREATE OR REPLACE TABLE PRIMARY_KEYS AS (
 SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID(-2)))
 UNION ALL
 SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID(-1)))
) x;

Tento skript ukazuje, jak spojit výsledky z více příkazů SHOW PRIMARY KEYS do jedné tabulky pro snadnější analýzu.

Závěr

Pomocí nástrojů INFORMATION_SCHEMA a GET_DDL můžete automatizovat načítání primárních klíčů z více tabulek v Snowflake. Tento přístup šetří čas a minimalizuje ruční práci, takže se můžete soustředit na důležitější úkoly. Ať už se rozhodnete dotazovat přímo na pohledy na schéma, nebo analyzovat příkazy DDL, obě metody poskytují efektivní řešení pro správu databázového schématu.

Neváhejte s těmito dotazy experimentovat a přizpůsobit je svým konkrétním požadavkům.
Šťastné dotazování a děkujeme Renée za dotaz ve Slacku Revolt BI!

Přečtěte si některý z našich dalších článků