Zurück zu Utils

Stored Procedure

Anonymizer

Anonymisieren Sie personenbezogene Daten in Snowflake für die sichere Verwendung in Test- und Entwicklungsumgebungen.

Ziel

Testumgebungen laufen idealerweise mit produktionsnahen Daten, dürfen aber keine echten personenbezogenen Daten enthalten. Der Anonymizer löst dieses Problem: Er verarbeitet eine Kopie Ihrer Produktionstabelle, sodass Datenverteilung und Statistiken erhalten bleiben, die Werte aber nicht mehr auf Einzelpersonen zurückgeführt werden können.

Pro Spalte wählen Sie die Anonymisierungsmethode, die am besten zum Datentyp und Zweck der Testumgebung passt.

Was Sie erwarten können

Die Stored Procedure bietet sechs Anonymisierungsmethoden:

shuffle

Verteilt bestehende Spaltenwerte zufällig auf die Zeilen um. Die Daten bleiben realistisch, sind aber nicht mehr auf Einzelpersonen zurückführbar.

shuffle_name

Mischt Vor- und Nachnamen intelligent, indem sie separat geshuffelt werden, einschließlich Infixe. Die Namensstruktur bleibt erhalten.

shuffle_phone

Verteilt Telefonpräfixe und -suffixe unabhängig pro Längengruppe um, sodass Nummern realistisch bleiben.

shift_housenumber

Ändert Hausnummern um ±2 oder ±4, sodass Adressen plausibel, aber nicht korrekt sind.

random_string

Generiert zufällige Strings basierend auf einem Muster. Verwenden Sie 'a' für einen Buchstaben und '#' für eine Ziffer, z. B. 'aa##aa' für eine Postleitzahl.

random_lookup

Füllt Zeilen mit zufälligen Werten aus einer anderen Tabellenspalte. Nützlich für realistische Testdaten aus einer Referenzliste.

Verwendung

1. Einmalige Einrichtung

Führen Sie zuerst das globale setup.sql als accountadmin aus. Erstellen Sie dann die Stored Procedure:

-- Adjust variables at the top of the script:
-- MY_DATABASE, MY_WAREHOUSE

-- Then run:
execute immediate $$ ... $$;

2. Prozedur aufrufen

Rufen Sie die Prozedur mit der Zieltabelle und einer Spaltenkonfiguration auf. Pro Spalte geben Sie die Methode an:

CALL datamodder.anonymize(
  'MY_DB.MY_SCHEMA.CUSTOMERS',
  ARRAY_CONSTRUCT(
    OBJECT_CONSTRUCT('column', 'NAME',    'method', 'shuffle_name'),
    OBJECT_CONSTRUCT('column', 'EMAIL',   'method', 'random_string',
                     'pattern', 'aaaa####@test.com'),
    OBJECT_CONSTRUCT('column', 'PHONE',   'method', 'shuffle_phone'),
    OBJECT_CONSTRUCT('column', 'ADDRESS', 'method', 'shift_housenumber')
  )
);

3. Mit Testskripten überprüfen

Das mitgelieferte test_anonymize_sp.sql erstellt Beispieldaten, führt die Prozedur aus und zeigt einen Vorher-Nachher-Vergleich.