Skip to main content

Primary Key Verletzungen in Snowflake monitoren

Remember that Snowflake treats primary key constraints as NOT NULL constraints. Snowflake does not enforce unique values for primary keys.

https://docs.snowflake.com/en/sql-reference/sql/show-primary-keys.html#usage-notes

Einer der größten Unterschiede zu anderen RDBs wie Oracle, MS SQL Server ist, dass Snowflake zwar das Anlegen von Primärschlüsseln erlaubt, diese jedoch nicht validiert.

Konkret: Snowflake fügt voller Freunde doppelte Datensätze ein, obgleich ein Primärschlüssel existiert.

Der Hintergrund ist klar
höhere Geschwindigkeit auf Kosten der Datenqualität

Zugegeben, damit ist ein Performance-Vergleich einer Oracle mit einer Snowflake der Vergleich von Äpfeln mit Birnen

Aber der USE CASE einer komplett auf Analytics ausgerichteten Datenbank erlaubt das Vorgehen. Es soll ja kein ERP auf der DB laufen, sondern analytische Abfragen. 

Und Datenintegrität ist ja auch Teil der Aufgabe der Daten Ingenieure....

Aber dann ist da der Zeit- und Budget-Druck, die alten Hasen können sich um die Grün-Ohren nicht kümmern und schwups hat man keine Datengold mehr, sondern Datengülle. 

Es wäre praktisch, zumindest eine Warnung zu erhalten, wenn zu einem definierten Primärschlüssel doppelte Einträge zu finden sind.

Und dieses Problem lösen wir hier.

How to do it

  • Create automated a table with data over primary keys and affected columns in the database

  • Create automated a view that searches for duplicates in every table with a primary key 

  • Call the procedures 

  • A view on top of the auto generated view delivers summary data for ease of consumtion

  • Build reports / QA checks on top of it