Como trabalhar com domínios de privacidade como administrador¶
Um domínio de privacidade define os valores possíveis em uma coluna, semelhante a um domínio matemático. O Snowflake usa um domínio de privacidade para determinar a quantidade de ruído a ser introduzida nos resultados.
Para obter uma compreensão completa dos domínios de privacidade antes de concluir as tarefas nesta seção, consulte Sobre domínios de privacidade.
É uma prática recomendada para um provedor de dados definir um domínio de privacidade para todas as colunas numéricas e categóricas sobre as quais um analista pode querer agir antes de distribuir os dados para ele.
Como escolher um domínio de privacidade¶
Um domínio de privacidade define valores possíveis em uma coluna, não necessariamente valores reais. Você pode restringir ou expandir um domínio de privacidade conforme necessário para que ele não contenha valores reais. Por exemplo, você pode fazer qualquer um dos seguintes:
Defina uma lista mais ampla para ocultar valores exatos. Como um analista pode visualizar o domínio de privacidade, talvez você não queira expor o conteúdo exato de uma coluna. Por exemplo, suponha que uma coluna contenha um subconjunto de códigos postais. Talvez você queira expandir o domínio de privacidade para incluir todos os códigos postais possíveis, ocultando assim se um determinado código postal está no conjunto de dados.
Defina um intervalo mais estreito para ocultar a presença de um valor discrepante. Por exemplo, se a maioria dos valores estiver entre 1 e 50, talvez você não queira que um valor de 100 seja incluído em uma média, pois o analista poderia deduzir a presença de 100 porque a média é excepcionalmente alta.
Para obter informações sobre como os valores fora de um domínio de privacidade são tratados, consulte Valores fora de um domínio de privacidade.
Importante
Qualquer pessoa com privilégios para consultar uma tabela protegida por privacidade tem a capacidade de visualizar o domínio de privacidade de uma coluna nessa tabela, portanto, escolha seus domínios de privacidade com cuidado.
Embora a maioria dos campos deva ter um domínio de privacidade, há exceções importantes. Por exemplo, campos de identificador exclusivos como ID do usuário, e-mail, números de cartão de crédito e números de previdência Social não devem ter um domínio de privacidade. Os usuários podem ver o domínio exato da privacidade e, normalmente, você não quer que um analista saiba se um identificador específico existe no conjunto de dados.
Em contraste, os domínios de privacidade devem conter os valores reais para campos de identificador quando eles não são exclusivos de uma entidade individual e cujos valores possíveis são conhecidos publicamente, como códigos postais, códigos ICD em dados de saúde e códigos NAICS.
Definição de um domínio de privacidade¶
Você define um domínio de privacidade como um intervalo de valores com um mínimo e um máximo ou como uma lista enumerada de valores. Em geral, o tipo de domínio de privacidade é baseado no tipo de dados da coluna. Não é possível definir um domínio de privacidade em uma coluna se o tipo de dados não estiver na lista a seguir.
Tipo de dados |
Tipo de domínio de privacidade |
---|---|
Faixa |
|
Lista enumerada |
Para definir, alterar ou descartar um domínio de privacidade, você precisa do privilégio OWNERSHIP em uma tabela. Você pode definir um domínio de privacidade ao fazer o seguinte:
Adicionar uma nova coluna a uma coluna existente.
Modificar uma coluna existente de uma tabela. Se a coluna existente já tiver um domínio de privacidade, o novo domínio substituirá o antigo.
Para cada um desses métodos, a sintaxe do novo domínio de privacidade é a mesma.
Nota
Quando uma tabela é descartada, seus domínios de privacidade também são descartados. Isso também se aplica a um comando CREATE OR REPLACE.
Sintaxe de domínio de privacidade¶
A sintaxe para criar um domínio de privacidade é:
PRIVACY DOMAIN
{
[ BETWEEN ( <lo_value>, <hi_value> ) ]
| [ IN ( '<value1>, '<value2>', ... ) ]
| [ REFERENCES <table_name>( <col_name> ) ]
}
Parâmetros¶
Um único parâmetro deve ser especificado.
BETWEEN ( lo_value, hi_value )
Cria um domínio de privacidade que é o intervalo de valores possíveis na coluna, onde
lo_value
é o valor mínimo ehi_value
é o valor máximo.IN ( 'value1', 'value2', ... )
Cria um domínio de privacidade que é uma lista enumerada dos valores especificados.
O parâmetro
IN
aceita no máximo 50 valores, cada um dos quais pode conter no máximo 100 caracteres. Se você precisar especificar uma lista enumerada com mais de 50 valores, use o parâmetroREFERENCES
.REFERENCES table_name( col_name )
Cria um domínio de privacidade que é uma lista enumerada que consiste nos valores contidos na coluna de uma tabela.
O usuário que faz consultas privadas diferenciadas em uma tabela com um domínio de privacidade REFERENCES deve ter privilégios SELECT na tabela que contém a coluna referenciada no domínio de privacidade. Isso significa que, se você compartilhar uma tabela protegida por privacidade que faça referência a outra, é melhor compartilhar a tabela referenciada no mesmo compartilhamento.
O domínio de privacidade pode fazer referência a si mesmo; no entanto, você deve ter cuidado ao usar esse recurso. Se o domínio de privacidade fizer referência à sua própria coluna, a lista enumerada conterá todos os valores reais na coluna, e não todos os valores possíveis na coluna, o que pode expor informações privadas. Por exemplo, se o domínio de privacidade de uma coluna
zipcode
fizer referência a si mesmo, o analista saberá com absoluta certeza se um determinado código postal está no conjunto de dados ao ver o domínio de privacidade.Nota
Você não pode definir um domínio de privacidade que faça referência a si mesmo ao criar a tabela pela primeira vez. Primeiro crie a tabela e depois defina o domínio de privacidade com um comando separado.
A coluna referenciada pode conter 16.384 valores exclusivos.
Definição de um domínio de privacidade ao criar uma nova tabela¶
A sintaxe para definir um domínio de privacidade para uma coluna ao usar o comando CREATE TABLE para criar uma tabela é:
CREATE TABLE <table_name>
( <col_name> <col_type> PRIVACY DOMAIN
{
[ BETWEEN ( <lo_value>, <hi_value> ) ]
| [ IN ( '<value1>', '<value2>', ... ) ]
| [ REFERENCES <table_name>( <col_name> ) ]
}
)
Para obter mais informações, consulte Sintaxe de domínio de privacidade.
Definição de um domínio de privacidade ao adicionar uma nova coluna¶
A sintaxe para definir um domínio de privacidade ao usar ALTER TABLE para adicionar uma nova coluna a uma tabela existente é:
ALTER TABLE <table_name>
ADD COLUMN <col_name> <col_type> PRIVACY DOMAIN
{
[ BETWEEN ( <lo_value>, <hi_value> ) ]
| [ IN ( '<value1>', '<value2>', ... ) ]
| [ REFERENCES <table_name>( <col_name> ) ]
}
Para obter mais informações, consulte Sintaxe de domínio de privacidade.
Definição de um domínio de privacidade modificando uma coluna¶
A sintaxe para definir um domínio de privacidade para uma coluna existente de uma tabela usando o comando ALTER TABLE … ALTER COLUMN é:
ALTER TABLE <table_name>
{ ALTER | MODIFY } COLUMN <col1_name> SET PRIVACY DOMAIN
{
[ BETWEEN ( <lo_value>, <hi_value> ) ]
| [ IN ( '<value1>', '<value2>', ... ) ]
| [ REFERENCES <table_name>( <col_name> ) ]
}
Para obter mais informações, consulte Sintaxe de domínio de privacidade.
Modificação de um domínio de privacidade¶
A sintaxe para modificar um domínio de privacidade existente é idêntica à criação de um novo domínio de privacidade em uma coluna existente. Um comando ALTER TABLE .. ALTER COLUMN … SET PRIVACY DOMAIN substitui o domínio de privacidade antigo pelo novo.
Remoção de um domínio de privacidade¶
A sintaxe para usar o comando ALTER TABLE … ALTER COLUMN para remover um domínio de privacidade de uma coluna é:
ALTER TABLE <table_name>
{ ALTER | MODIFY } COLUMN <col1_name> UNSET PRIVACY DOMAIN
Exibição de um domínio de privacidade¶
Para ver os domínios de privacidade de uma tabela ou exibição protegida por privacidade, execute o comando DESCRIBE TABLE ou DESCRIBE VIEW. O domínio de privacidade de uma coluna aparece na coluna PRIVACY_DOMAIN da saída.
Você precisa do privilégio SELECT em uma tabela protegida por privacidade para exibição seus domínios de privacidade.
Interpretação do objeto de domínio de privacidade¶
Um domínio de privacidade para uma coluna é retornado como um objeto JSON. O campo domain_type
do objeto JSON indica se o domínio de privacidade é um intervalo de valores ou uma lista enumerada. Os campos restantes no objeto dependem do valor do campo domain_type
.
O objeto JSON para um domínio de privacidade pode incluir os seguintes campos:
domain_type
Indica o tipo de domínio de privacidade.
BETWEEN
O domínio de privacidade é um intervalo de valores possíveis que podem estar na coluna.
IN
O domínio de privacidade é uma lista enumerada dos valores possíveis que podem estar na coluna.
REFERENCES
O domínio de privacidade é uma lista enumerada dos valores possíveis que podem estar na coluna. Esta lista vem da coluna da mesma tabela ou de outra tabela. Para exibir a lista enumerada do domínio de privacidade, consulte o conteúdo da coluna referenciada.
low
Quando
domain_type = BETWEEN
, especifica o valor mínimo no intervalo de valores possíveis.high
Quando
domain_type = BETWEEN
, especifica o valor máximo no intervalo de valores possíveis.values
Quando
domain_type = IN
, especifica a lista enumerada de valores possíveis, estruturada como uma matriz.database
Quando
domain_type = REFERENCES
, especifica o banco de dados que contém a coluna que o Snowflake referencia para construir a lista enumerada de valores possíveis.schema
Quando
domain_type = REFERENCES
, especifica o esquema que contém a coluna que o Snowflake referencia para construir a lista enumerada de valores possíveis.table
Quando
domain_type = REFERENCES
, especifica a tabela que contém a coluna que o Snowflake referencia para construir a lista enumerada de valores possíveis.column
Quando
domain_type = REFERENCES
, especifica a coluna que o Snowflake referencia para construir a lista enumerada de valores possíveis. Para exibir a lista enumerada do domínio de privacidade, consulte o conteúdo desta coluna.