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>)
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>, }
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 undreplace_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:
join_key
: Setzen Sie diese Option auf TRUE oder FALSE, wobei TRUE angibt, dass es sich um eine Verknüpfungsschlüsselspalte handelt. Erfahren Sie mehr über VerknüpfungsschlüsselStandard: FALSE.
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 |
---|---|---|
|
TIMESTAMP |
Zeitpunkt, zu dem die synthetischen Daten erzeugt wurden. |
|
VARCHAR |
Name der synthetischen Tabelle. |
|
VARCHAR |
Schemaname der synthetischen Tabelle. |
|
VARCHAR |
Datenbankname der synthetischen Tabelle. |
|
VARCHAR |
Ein Paar von Spalten in der synthetischen Tabelle. |
|
NUMBER |
Interner/systemgenerierter Bezeichner der Eingabetabelle. |
|
VARCHAR |
Name der Eingabetabelle. |
|
VARCHAR |
Schemaname der Eingabetabelle. |
|
VARCHAR |
Datenbankname der Eingabetabelle. |
|
VARCHAR |
Namen der Quellspalten. |
|
ENUM |
Derzeit ist |
|
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 Schemamy_schema
erstellt werden, automatisch ansome_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}}
}
]
});
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',
}
]
});
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 |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+