GENERATE_SYNTHETIC_DATA¶
プロシージャは、入力テーブルのデータに基づいて、1つ以上のテーブルから合成データを生成し、ソースデータと生成データの差(類似度)係数など、生成データに関するメトリックを含むテーブルを返します。
このストアドプロシージャは、 呼び出し元の権限 を使用して出力テーブルを生成します。
このプロシージャの実行については、 要件 をご参照ください。いずれかの要件が満たされない場合、リクエストはデータの生成を開始する前に失敗します。
構文¶
SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA(<configuration_object>)
引数¶
configuration_object
リクエストの詳細を指定する OBJECT 値。このオブジェクトを指定するには、 OBJECT 定数 を使用します。
OBJECT 値は以下のような構造になっています。
{ '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>, }
OBJECT 値には、以下のキーと値のペアが含まれています。
datasets
生成するデータを指定する ARRAY 値。配列の各要素は、1つのソース/生成テーブルペアに関する情報を説明する OBJECT 値です。 最大5つのテーブルペアを指定できます。
datasets
オブジェクトを5つよりも多く指定すると、リクエストは失敗します。OBJECT の各値には、以下のプロパティがあります。
input_table
合成データを生成する入力テーブルの完全修飾名。テーブルが存在しないか、テーブルにアクセスできない場合、Snowflakeはエラーメッセージを返します。入力テーブルの要件については、 Snowflakeでの合成データの使用 をご参照ください。
識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
output_table
input_table
から生成された合成データを格納する出力テーブルの完全修飾名。生成されたテーブルには、ユーザーがデフォルト値で CREATE TABLE を呼び出した場合と同じ権限とポリシーがあります。テーブルがすでに存在し、replace_output_tables=TRUE
の場合は、既存のテーブルが上書きされます。また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
columns
(オプション)特定の列に対する追加のプロパティを指定する OBJECT。OBJECT の各フィールドは、1つの列のプロパティを定義します。一部の列、またはすべての列にプロパティ定義をなしにすることができます。フィールドごとに、
キーは列名です。値のプロパティは、この列に適用する必要があります。
値は、以下のキー/値のペアを含む OBJECT です。
join_key
: TRUE または FALSE に設定します。 TRUE は結合キー列であることを示します。 結合キーについての詳細デフォルト: FALSE。
privacy_filter
(オプション)合成データの作成時に類似度フィルターを使用するかどうかを指定します。これを TRUE に設定すると、組み込みのプライバシーフィルターを使用して、入力テーブルの行と類似しすぎている行をターゲットテーブルから削除します。FALSE の場合、各出力テーブルは入力テーブルと同じ行数になります。 TRUE の場合、出力テーブルは入力テーブルよりも行数が少なくなる可能性があります。
デフォルト: FALSE
詳細については、 合成データのフィルタリング をご参照ください。
replace_output_tables
(オプション)合成データの作成時に出力合成データテーブルを上書きするかどうかを指定します。出力テーブルを上書きするには、 TRUE に設定します。
デフォルト: FALSE
出力¶
列名 |
データ型 |
説明 |
---|---|---|
|
TIMESTAMP |
合成データが生成された時刻。 |
|
VARCHAR |
合成テーブルの名前。 |
|
VARCHAR |
合成テーブルのスキーマ名。 |
|
VARCHAR |
合成テーブルのデータベース名。 |
|
VARCHAR |
合成テーブルの列のペア。 |
|
NUMBER |
入力テーブルの内部/システム生成識別子。 |
|
VARCHAR |
入力テーブルの名前。 |
|
VARCHAR |
入力テーブルのスキーマ名。 |
|
VARCHAR |
入力テーブルのデータベース名。 |
|
VARCHAR |
ソース列の名前。 |
|
ENUM |
現在、 |
|
NUMBER |
メトリックの値。 |
アクセス制御の要件¶
合成データを生成するには、以下の各付与を持つロールを使用する必要があります。
クエリに使用するウェアハウスに対する USAGE。
合成データの生成元の入力テーブルに対する SELECT。
入力テーブルを含むデータベースとスキーマ、また出力テーブルを含むデータベースに対する USAGE。
出力テーブルを含むスキーマに対する CREATE TABLE。
出力テーブルに対する OWNERSHIP。最も簡単な方法は、出力テーブルが生成されるスキーマに OWNERSHIP を付与することです。(ただし、誰かがこのスキーマに FUTURE GRANT を適用した場合、テーブルの所有権は警告なしに上書きされます。つまり、スキーマ
my_schema
で作成された新しいテーブルに対して、GRANT OWNERSHIP ON FUTURE TABLES IN SCHEMA db.my_schema TO ROLE some_role
は自動的に OWNERSHIP をsome_role
に付与します。)
すべてのユーザーは、 SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA ストアドプロシージャにアクセスできます。アクセスは、 PUBLIC ロールに付与された SNOWFLAKE.CORE_VIEWER データベースロールを使用すると利用可能になります。
使用上の注意¶
JSON キー値は小文字にする必要があります。
この機能を有効にするには、Snowflakeアカウントで Anaconda利用規約 に同意する必要があります。
その他の要件については、 要件 をご参照ください。
例¶
この例では、医療情報(血液タイプ、性別、年齢、民族性)を含む入力テーブルから合成データを生成します。この応答は、ソーステーブルと生成されたテーブルの間のデータの近さを示しています。生成された合成データテーブルは表示されません。
結合キーとして指定された2つの列
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}}
}
]
});
結合キーとして指定された列なし
CALL SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA({
'datasets':[
{
'input_table': 'syndata_db.sch.faker_source_t',
'output_table': 'syndata_db.sch.faker_synthetic_t',
}
]
});
関数呼び出しによる出力
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+
| 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 |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+