GENERATE_SYNTHETIC_DATA

이 프로시저는 입력 테이블의 데이터를 기반으로 하나 이상의 테이블에서 합성 데이터를 생성하고 소스 데이터와 생성된 데이터 간의 차이 계수(유사성)와 같은 생성된 데이터에 대한 메트릭이 포함된 테이블을 반환합니다.

이 저장 프로시저는 호출자의 권한 을 사용하여 출력 테이블을 생성합니다.

이 프로시저를 실행하려면 요구 사항 섹션을 참조하십시오. 요구 사항이 충족되지 않으면 데이터 생성을 시작하기 전에 요청이 실패합니다.

합성 데이터 사용에 대해 자세히 알아보십시오.

구문

SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA(<configuration_object>)
Copy

인자

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>,
}
Copy

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 입니다.

privacy_filter

(선택 사항) 합성 데이터를 만들 때 유사도 필터를 사용할지 여부를 지정합니다. 기본 제공 개인정보 보호 필터를 사용하여 입력 테이블의 행과 너무 유사한 행을 대상 테이블에서 제거하려면 TRUE 로 설정합니다. FALSE 인 경우 각 출력 테이블은 입력 테이블과 동일한 수의 행을 가지며, TRUE 인 경우 출력 테이블은 입력 테이블보다 적은 수의 행을 가질 수 있습니다.

기본값: FALSE

자세한 내용은 합성 데이터 필터링하기 섹션을 참조하십시오.

replace_output_tables

(선택 사항) 합성 데이터를 생성할 때 출력 합성 데이터 테이블을 덮어쓸지 여부를 지정합니다. 출력 테이블을 덮어쓰려면 TRUE 로 설정합니다.

기본값: FALSE

출력

열 이름

데이터 타입

설명

created_on

TIMESTAMP

합성 데이터가 생성된 시간입니다.

table_name

VARCHAR

합성 테이블의 이름입니다.

table_schema

VARCHAR

합성 테이블의 스키마 이름입니다.

table_database

VARCHAR

합성 테이블의 데이터베이스 이름입니다.

columns

VARCHAR

합성 테이블의 한 쌍의 열입니다.

source_table_id

NUMBER

입력 테이블의 내부/시스템 생성 식별자입니다.

source_table_name

VARCHAR

입력 테이블의 이름입니다.

source_table_schema

VARCHAR

입력 테이블의 스키마 이름입니다.

source_table_database

VARCHAR

입력한 데이터베이스 테이블의 데이터베이스 이름입니다.

source_columns

VARCHAR

소스 열의 이름입니다.

metric_type

ENUM

correlation_coefficient_difference - 소스 테이블의 조인이 아닌 두 열과 생성된 데이터의 동일한 두 열 간의 상관 계수의 절대값으로 계산됩니다.

현재 지원되는 유일한 메트릭은 correlation_coefficient_difference 입니다. 이는 입력 테이블에 있는 모든 열 조합의 상관 계수와 생성된 데이터의 동일한 계수 간의 차이입니다. 각 행은 열의 한 조합 간의 상관 계수 차이를 나타냅니다. 열 이름 쌍은 columnssource_columns 에서 찾을 수 있습니다.

metric_value

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}}
        }
      ]
  });
Copy

조인 키로 지정된 열 없음

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

함수 호출로부터의 출력

+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+
| 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 |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+