GENERATE_SYNTHETIC_DATA

Die Prozedur generiert synthetische Daten aus einer oder mehreren Tabellen, die auf Daten aus Eingabetabellen basieren, und gibt eine Tabelle zurück, die Metriken über die generierten Daten enthält, wie z. B. den Koeffizienten der Differenz (Ähnlichkeit) zwischen den Quelldaten und den generierten Daten.

Diese gespeicherte Prozedur verwendet Aufruferrechte, um die Ausgabetabelle zu erstellen.

Lesen Sie die Anforderungen für die Ausführung dieses Verfahrens. Wenn eine der Anforderungen nicht erfüllt ist, schlägt die Anfrage fehl, bevor sie mit der Datengenerierung beginnt.

Erfahren Sie mehr über die Nutzung synthetischer Daten.

Syntax

SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA(<configuration_object>)
Copy

Argumente

configuration_object

Ein OBJECT-Wert, der die Details der Anfrage angibt. Sie können eine OBJECT-Konstante verwenden, um dieses Objekt anzugeben.

Der OBJECT-Wert hat die folgende Struktur:

{
  'datasets': [
    {
      'input_table': '<input_table_name>',
      'output_table' : '<output_table_name>',
      'columns': {
        '<column_name>': {
          <property_name>: <property_value>
        }
        , ...
      }
    }
    , ...
  ]
  'privacy_filter': <boolean>,
  'replace_output_tables': <boolean>,
}
Copy

Der OBJECT-Wert enthält die folgenden Schlüssel-Werte-Paare:

datasets

Ein ARRAY-Wert, der die zu generierenden Daten angibt. Jedes Element in dem Array ist ein OBJECT-Wert, der Informationen zu einem einzelnen Quell-/generierten Tabellenpaar beschreibt. Sie können bis zu fünf Tabellenpaare angeben. Die Anfrage schlägt fehl, wenn Sie mehr als fünf datasets Objekte angeben.

Jeder OBJECT-Wert hat die folgenden Eigenschaften:

input_table

Der vollqualifizierte Name der Eingabetabelle, aus der synthetische Daten generiert werden sollen. Wenn die Tabelle nicht existiert oder nicht zugänglich ist, gibt Snowflake eine Fehlermeldung aus. Siehe Synthetische Daten in Snowflake verwenden für weitere Anforderungen an die Eingabetabelle.

Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

output_table

Der vollqualifizierte Name der Ausgabetabelle, in der die von input_table generierten synthetischen Daten gespeichert werden. Die generierte Tabelle hat dieselben Berechtigungen und Richtlinien, als hätte der Benutzer CREATE TABLE mit Standardwerten aufgerufen hätte. Wenn die Tabelle bereits existiert und replace_output_tables=TRUE, wird die bestehende Tabelle überschrieben.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

columns

(Optional) Ein OBJECT, das zusätzliche Eigenschaften für bestimmte Spalten angibt. Jedes Feld im OBJECT definiert Eigenschaften für eine einzelne Spalte. Sie müssen nicht für alle Spalten oder überhaupt für Spalten Eigenschaften definieren. Für jedes Feld:

  • Der Schlüssel ist der Spaltenname. Die Eigenschaften des Wertes sollen auf diese Spalte angewendet werden.

  • Der Wert ist ein OBJECT, das das folgende Schlüssel/Wert-Paar enthält:

privacy_filter

(Optional) Gibt an, ob bei der Erstellung der synthetischen Daten ein Ähnlichkeitsfilter verwendet werden soll. Stellen Sie dies auf TRUE ein, um den integrierten Datenschutzfilter zu verwenden, der Zeilen aus der Zieltabelle entfernt, die den Zeilen der Eingabetabelle zu ähnlich sind. Wenn FALSE, hat jede Ausgabetabelle die gleiche Anzahl von Zeilen wie ihre Eingabetabelle; wenn TRUE, kann eine Ausgabetabelle weniger Zeilen haben als ihre Eingabetabelle.

Standard: FALSE

Weitere Informationen dazu finden Sie unter Filtern der synthetischen Daten.

replace_output_tables

(Optional) Gibt an, ob die Tabelle mit den ausgegebenen synthetischen Daten bei der Erstellung der synthetischen Daten überschrieben werden soll. Setzen Sie dies auf TRUE, um die Ausgabetabelle zu überschreiben.

Standard: FALSE

Ausgabe

Spaltenname

Datentyp

Beschreibung

created_on

TIMESTAMP

Zeitpunkt, zu dem die synthetischen Daten erzeugt wurden.

table_name

VARCHAR

Name der synthetischen Tabelle.

table_schema

VARCHAR

Schemaname der synthetischen Tabelle.

table_database

VARCHAR

Datenbankname der synthetischen Tabelle.

columns

VARCHAR

Ein Paar von Spalten in der synthetischen Tabelle.

source_table_id

NUMBER

Interner/systemgenerierter Bezeichner der Eingabetabelle.

source_table_name

VARCHAR

Name der Eingabetabelle.

source_table_schema

VARCHAR

Schemaname der Eingabetabelle.

source_table_database

VARCHAR

Datenbankname der Eingabetabelle.

source_columns

VARCHAR

Namen der Quellspalten.

metric_type

ENUM

correlation_coefficient_difference – Berechnet als absoluter Wert des Korrelationskoeffizienten zwischen zwei Nicht-Verknüpfungspalten in der Quelltabelle und denselben zwei Spalten in den generierten Daten.

Derzeit ist correlation_coefficient_difference die einzige unterstützte Metrik. Dies ist die Differenz zwischen dem Korrelationskoeffizienten jeder Kombination von Spalten in der Eingabetabelle und demselben Koeffizienten in den generierten Daten. Jede Zeile stellt die Differenz der Korrelationskoeffizienten zwischen einer Kombination von Spalten dar. Das Spaltennamenpaar befindet sich in den folgenden Spalten: columns und source_columns.

metric_value

NUMBER

Wert der Metrik.

Anforderungen an die Zugriffssteuerung

Um synthetische Daten zu erzeugen, müssen Sie eine Rolle mit jeder der folgenden Berechtigungen verwenden:

  • USAGE für das Warehouse, das Sie für Abfragen verwenden möchten.

  • SELECT für die Eingabetabelle, aus der Sie synthetische Daten erzeugen möchten.

  • USAGE-Berechtigung für die Datenbank und das Schema, die die Eingabetabelle enthalten, sowie für die die Ausgabetabelle enthält.

  • CREATE TABLE für das Schema, das die Ausgabetabelle enthält.

  • OWNERSHIP für die Ausgabetabellen. Am einfachsten geht das, indem Sie OWNERSHIP für das Schema freigeben, in dem die Ausgabetabelle erstellt wird. (Wenn jedoch jemand ein FUTURE GRANT auf dieses Schema angewandt hat, werden die Eigentümerschaft an den Tabellen stillschweigend überschrieben, d. h. GRANT OWNERSHIP ON FUTURE TABLES IN SCHEMA db.my_schema TO ROLE some_role erteilt die OWNERSHIP für alle neuen Tabellen, die im Schema my_schema erstellt werden, automatisch an some_role)

Alle Benutzer können auf die gespeicherte Prozedur SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA zugreifen. Der Zugriff erfolgt über die Datenbankrolle SNOWFLAKE.CORE_VIEWER, die der Rolle PUBLIC zugewiesen ist.

Nutzungshinweise

  • Die JSON-Schlüsselwerte müssen in Kleinbuchstaben geschrieben sein.

  • Sie müssen die Anaconda-Bedingungen in Ihrem Snowflake-Konto akzeptieren, um dieses Feature zu aktivieren.

  • Für zusätzliche Anforderungen siehe Anforderungen.

Beispiele

Dieses Beispiel generiert synthetische Daten aus einer Eingabetabelle mit medizinischen Informationen (Blutgruppe, Geschlecht, Alter und ethnische Zugehörigkeit). Die Antwort zeigt die Datenübereinstimmung zwischen der Quelltabelle und den generierten Tabellen. Die generierte Tabelle mit synthetischen Daten wird nicht angezeigt.

Zwei Spalten, die als Verknüpfungsschlüssel bezeichnet werden

CALL SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA({
    'datasets':[
        {
          'input_table': 'syndata_db.sch.faker_source_t',
          'output_table': 'syndata_db.sch.faker_synthetic_t',
          'columns': { 'blood_type': {'join_key': TRUE} , 'ethnicity': {'join_key': TRUE}}
        }
      ]
  });
Copy

Keine als Verknüpfungsschlüssel bezeichneten Spalten

CALL SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA({
  'datasets':[
      {
        'input_table': 'syndata_db.sch.faker_source_t',
        'output_table': 'syndata_db.sch.faker_synthetic_t',
      }
    ]
});
Copy

Ausgabe beim Aufruf der Funktion

+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+
| CREATED_ON                | TABLE_NAME        | TABLE_SCHEMA | TABLE_DATABASE | COLUMNS                | SOURCE_TABLE_NAME | SOURCE_TABLE_SCHEMA | SOURCE_TABLE_DATABASE | SOURCE_COLUMNS         | METRIC_TYPE                        | METRIC_VALUE   |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+
| 2024-07-30 09:53:28.439 Z | faker_synthetic_t | sch          | syndata_db     | "BLOOD_TYPE,GENDER"    | faker_source_t    | sch                 | syndata_db            | "BLOOD_TYPE,GENDER"    | CORRELATION_COEFFICIENT_DIFFERENCE | 0.02430214616  |
| 2024-07-30 09:53:28.439 Z | faker_synthetic_t | sch          | syndata_db     | "BLOOD_TYPE,AGE"       | faker_source_t    | sch                 | syndata_db            | "BLOOD_TYPE,AGE"       | CORRELATION_COEFFICIENT_DIFFERENCE | 0.001919343586 |
| 2024-07-30 09:53:28.439 Z | faker_synthetic_t | sch          | syndata_db     | "BLOOD_TYPE,ETHNICITY" | faker_source_t    | sch                 | syndata_db            | "BLOOD_TYPE,ETHNICITY" | CORRELATION_COEFFICIENT_DIFFERENCE | 0.003720197046 |
| 2024-07-30 09:53:28.439 Z | faker_synthetic_t | sch          | syndata_db     | "GENDER,AGE"           | faker_source_t    | sch                 | syndata_db            | "GENDER,AGE"           | CORRELATION_COEFFICIENT_DIFFERENCE | 0.004348586645 |
| 2024-07-30 09:53:28.439 Z | faker_synthetic_t | sch          | syndata_db     | "GENDER,ETHNICITY"     | faker_source_t    | sch                 | syndata_db            | "GENDER,ETHNICITY"     | CORRELATION_COEFFICIENT_DIFFERENCE | 0.001171535243 |
| 2024-07-30 09:53:28.439 Z | faker_synthetic_t | sch          | syndata_db     | "AGE,ETHNICITY"        | faker_source_t    | sch                 | syndata_db            | "AGE,ETHNICITY"        | CORRELATION_COEFFICIENT_DIFFERENCE | 0.004265938158 |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+