GENERATE_SYNTHETIC_DATA¶
O procedimento gera dados sintéticos de uma ou mais tabelas, com base nos dados das tabelas de entrada, e retorna uma tabela com métricas sobre os dados gerados, como o coeficiente de diferença (similaridade) entre os dados de origem e os dados gerados.
Esse procedimento armazenado usa os direitos do chamador para gerar a tabela de saída.
Leia os requisitos para executar esse procedimento. Se algum requisito não for atendido, a solicitação falhará antes de começar a gerar dados.
Saiba mais sobre o uso de dados sintéticos.
Sintaxe¶
SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA(<configuration_object>)
Argumentos¶
configuration_object
Um valor OBJECT que especifica os detalhes da solicitação. É possível usar uma constante OBJECT para especificar esse objeto.
O valor OBJECT tem a seguinte estrutura:
{ '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>, }
O valor OBJECT contém os seguintes pares chave-valor:
datasets
Um valor ARRAY que especifica os dados a serem gerados. Cada elemento da matriz é um valor OBJECT que descreve informações sobre um único par de tabelas de origem/gerada. É possível especificar até cinco pares de tabelas. A solicitação falhará se você fornecer mais de cinco objetos
datasets
.Cada valor OBJECT tem as seguintes propriedades:
input_table
O nome totalmente qualificado da tabela de entrada a partir da qual serão gerados os dados sintéticos. Se a tabela não existir ou não puder ser acessada, o Snowflake retornará uma mensagem de erro. Consulte Como usar dados sintéticos no Snowflake para obter mais requisitos da tabela de entrada.
Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.
Para obter mais informações, consulte Requisitos para identificadores.
output_table
O nome totalmente qualificado da tabela de saída para armazenar os dados sintéticos gerados a partir de
input_table
. A tabela gerada terá as mesmas permissões e políticas como se o usuário tivesse chamado CREATE TABLE com valores padrão. Se a tabela já existir ereplace_output_tables=TRUE
, a tabela existente será substituída.Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo,
"My object"
). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.Para obter mais informações, consulte Requisitos para identificadores.
columns
(Opcional) Um OBJECT especificando propriedades adicionais para colunas específicas. Cada campo OBJECT define as propriedades de uma única coluna. Você não precisa definir propriedades para todas as colunas ou para nenhuma coluna. Para cada campo:
A chave é o nome da coluna. As propriedades do valor devem ser aplicadas a essa coluna.
O valor é um OBJECT que contém o seguinte par chave-valor:
join_key
: defina como TRUE ou FALSE, onde TRUE indica que essa é uma coluna de chave de junção. Saiba mais sobre chaves de junçãoPadrão: FALSE.
privacy_filter
(Opcional) Especifica se você deve usar um filtro de similaridade ao criar os dados sintéticos. Defina essa opção como TRUE para usar o filtro de privacidade integrado e remover as linhas da tabela de destino que são muito semelhantes às linhas da tabela de entrada. Se FALSE, cada tabela de saída terá o mesmo número de linhas que a tabela de entrada; se TRUE, uma tabela de saída poderá ter menos linhas que a tabela de entrada.
Padrão: FALSE
Para obter mais informações, consulte Filtragem dos dados sintéticos.
replace_output_tables
(Opcional) Especifica se a tabela de dados sintéticos de saída deve ser sobrescrita ao criar os dados sintéticos. Defina isso como TRUE para substituir a tabela de saída.
Padrão: FALSE
Saída¶
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
|
TIMESTAMP |
Hora em que os dados sintéticos foram gerados. |
|
VARCHAR |
Nome da tabela sintética. |
|
VARCHAR |
Nome do esquema da tabela sintética. |
|
VARCHAR |
Nome do banco de dados da tabela sintética. |
|
VARCHAR |
Um par de colunas na tabela sintética. |
|
NUMBER |
Identificador interno/gerado pelo sistema da tabela de entrada. |
|
VARCHAR |
Nome da tabela de entrada. |
|
VARCHAR |
Nome do esquema da tabela de entrada. |
|
VARCHAR |
Nome do banco de dados da tabela de entrada. |
|
VARCHAR |
Nomes das colunas de origem. |
|
ENUM |
Atualmente, |
|
NUMBER |
Valor da métrica. |
Requisitos de controle de acesso¶
Para gerar dados sintéticos, é necessário usar uma função com cada uma das seguintes concessões:
USAGE no warehouse que você deseja usar para consultas.
SELECT na tabela de entrada a partir da qual você deseja gerar dados sintéticos.
USAGE no banco de dados e no esquema que contêm a tabela de entrada, bem como no banco de dados que contém a tabela de saída.
CREATE TABLE no esquema com a tabela de saída.
OWNERSHIP nas tabelas de saída. A maneira mais simples de fazer isso é conceder OWNERSHIP ao esquema em que a tabela de saída é gerada. (No entanto, se alguém tiver aplicado um FUTURE GRANT nesse esquema, a propriedade da tabela será silenciosamente substituída, ou seja, o
GRANT OWNERSHIP ON FUTURE TABLES IN SCHEMA db.my_schema TO ROLE some_role
concederá automaticamente OWNERSHIP asome_role
em todas as novas tabelas criadas no esquemamy_schema
)
Todos os usuários podem acessar o procedimento armazenado SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA. O acesso é disponibilizado usando a função de banco de dados SNOWFLAKE.CORE_VIEWER, que é concedida à função PUBLIC.
Notas de uso¶
Os valores da chave JSON devem estar em letras minúsculas.
É necessário aceitar os termos e condições do Anaconda em sua conta Snowflake para ativar esse recurso.
Para obter requisitos adicionais, consulte Requisitos.
Exemplos¶
Este exemplo gera dados sintéticos de uma tabela de entrada com informações médicas (tipo sanguíneo, gênero, idade e etnia). A resposta mostra a proximidade dos dados entre a fonte e as tabelas geradas. A tabela de dados sintéticos gerada não é mostrada.
Duas colunas designadas como chaves de junção
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}}
}
]
});
Nenhuma coluna designada como chave de junção
CALL SNOWFLAKE.DATA_PRIVACY.GENERATE_SYNTHETIC_DATA({
'datasets':[
{
'input_table': 'syndata_db.sch.faker_source_t',
'output_table': 'syndata_db.sch.faker_synthetic_t',
}
]
});
Saída da chamada da função
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+
| 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 |
+---------------------------+-------------------+--------------+----------------+------------------------+-------------------+---------------------+-----------------------+------------------------+------------------------------------+----------------+