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 값입니다. 최대 5개의 테이블 쌍을 지정할 수 있습니다.
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
은 스키마my_schema
에서 생성된 모든 새 테이블에 대해 OWNERSHIP 을some_role
에 자동으로 부여합니다.)
모든 사용자는 SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA 저장 프로시저에 액세스할 수 있습니다. SNOWFLAKE.CORE_VIEWER 데이터베이스 역할에 부여된 PUBLIC 역할을 사용하여 액세스를 사용할 수 있습니다.
사용법 노트¶
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 |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+