GENERATE_SYNTHETIC_DATA¶
该过程将根据输入表中的数据,从一个或多个表生成合成数据,并返回一个表,其中包含有关生成数据的指标,例如源数据和生成的数据之间的差异系数(相似度)。
此存储过程使用 调用者的权限 生成输出表。
请阅读运行此过程的 要求。如果不符合任何要求,请求将在开始生成数据前失败。
语法¶
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 值,指定要生成的数据。数组中的每个元素都是 OBJECT 值,描述单个源/生成表对的信息。您最多可以指定五个表对。`如果提供的 :code:`datasets 对象超过 5 个,请求将失败。
每个 OBJECT 值都具有以下属性:
input_table
从中生成合成数据的输入表的完全限定名称。如果该表不存在或无法访问,Snowflake 会返回一条错误消息。有关输入表的更多要求,请参阅 在 Snowflake 中使用合成数据。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
output_table
用于存储从
input_table
生成的合成数据的输出表的完全限定名称。生成的表将具有与用户使用默认值调用 CREATE TABLE 时相同的权限和策略。如果该表已经存在而且replace_output_tables=TRUE
,现有表将被覆盖。此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,
"My object"
)。放在双引号内的标识符也区分大小写。有关更多信息,请参阅 标识符要求。
columns
(可选)OBJECT 指定特定列的其他属性。OBJECT 中的每个字段都定义了单列的属性。您不需要为所有列或任何列定义属性。对于每个字段:
键是列名称。值中的属性应适用于此列。
该值是一个 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,表的所有权将被静默覆盖,也就是说,
GRANT OWNERSHIP ON FUTURE TABLES IN SCHEMA db.my_schema TO ROLE some_role
会自动将 OWNERSHIP 授予在架构my_schema
中创建的任何新表的some_role
。)
所有用户都可以访问 SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA 存储过程。访问是通过使用 SNOWFLAKE.CORE_VIEWER 数据库角色实现的,其被授予 PUBLIC 角色。
使用说明¶
JSON 键值必须为小写。
您必须在 Snowflake 账户中 接受 Anaconda 条款和条件 才能启用此功能。
有关其他要求,请参阅 要求。
示例¶
此示例从包含医疗信息(血型、性别、年龄和种族)的输入表中生成合成数据。响应显示了源表和生成表之间数据的接近程度。未显示生成的合成数据表。
指定两列作为联接键
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 |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+