Compreensão das políticas de tabela de clean room¶
As clean rooms fornecem algumas políticas de dados para controlar como os dados podem ser usados pelos colaboradores. Essas políticas são adicionais às políticas da tabela Snowflake definidas nas tabelas subjacentes vinculadas à clean room. Todas as alterações nas políticas das tabelas subjacentes são propagadas para as exibições vinculadas na clean room sem que você precise chamar create_or_update_cleanroom_listing
ou vincular novamente as tabelas de origem.
Cada colaborador em uma clean room define suas próprias políticas para seus próprios dados.
Nota
Quando você vincula tabelas em uma clean room, as políticas da tabela Snowflake nas tabelas de origem são aplicadas nas tabelas vinculadas na clean room, mas essas políticas não são necessariamente relatadas pela API ou UI de clean room. Por exemplo, uma política de junção Snowflake continua a ser aplicada na clean room, mas essa política de associação não é visível ao chamar consumer.view_provider_join_policy
ou consumer.view_join_policy
. Portanto, você deve remover as políticas das tabelas vinculadas subjacentes, criar políticas de clean room equivalentes (quando existirem) ou comunicar claramente a existência dessas políticas aos seus colaboradores para que as consultas deles não falhem ou se comportem de forma inesperada (“por que não posso unir essa coluna?”).
As políticas de clean room podem ser definidas usando a API ou UI de clean room.
As políticas de privacidade do Snowflake impedem a criação de uma exibição a partir de uma tabela protegida; portanto, você não pode criar links em tabelas que tenham políticas de privacidade.
As clean rooms expõem as seguintes políticas:
Política de clean room |
Descrição |
Política equivalente da Snowflake |
---|---|---|
Especifique quais de suas colunas podem ser unidas. |
||
Especifique quais de suas colunas podem ser projetadas. |
||
Especifique quais de suas colunas podem ser exportadas da clean room. |
Não há política equivalente para o Snowflake. |
|
Respeita as políticas de agregação do Snowflake |
Exija que as linhas sejam agregadas em consultas e defina a contagem mínima de linhas por grupo. |
Políticas de junção¶
Uma política de junção de clean room especifica quais colunas em suas tabelas podem ser unidas por qualquer modelo na clean room. As políticas de adesão são definidas no nível da clean room.
As colunas da política de junção não podem ser projetadas (uma coluna não pode estar em uma política de junção de clean room e em uma política de coluna). Se você quiser que uma coluna de junção seja projetável, defina as políticas de junção fora da clean room e as políticas de projeção na clean room (ou o contrário).
As colunas de política de junção também podem ser colunas de política de ativação.
As políticas de junção de clean room não são iguais às políticas de junção Snowflake, que especificam quais colunas devem ser unidas.
Se você não especificar uma política de junção para seus dados, todas as colunas poderão ser unidas (e também projetadas).
Implementação de uma política de associação¶
As políticas de junção de clean room são aplicadas a uma coluna somente se o modelo usar o filtro join_policy
ou join_and_column_policy
. Você pode inspecionar um modelo para ver onde as políticas de junção são aplicadas, visualizando a definição do modelo e confirmando a presença desse filtro em uma sintaxe como esta:
{{ my_column | join_policy }}
As políticas de junção Snowflake nas tabelas subjacentes são aplicadas independentemente de o modelo ter ou não um filtro join_policy
na coluna.
O código a seguir mostra como permitir que duas colunas de duas tabelas diferentes sejam unidas. Esta política afeta todos os usuários e todos os modelos desta clean room. Existem procedimentos equivalentes para provedores e consumidores em uma clean room; chame o procedimento que reflete sua função na clean room. Você pode definir a política de junção a qualquer momento depois que seus dados forem vinculados a uma clean room.
-- Set join policies on a clean room where you are a provider
CALL samooha_by_snowflake_local_db.provider.set_join_policy('my_provider_cleanroom',
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);
-- Set join policies on a clean room where you are a consumer
CALL samooha_by_snowflake_local_db.consumer.set_join_policy('my_consumer_cleanroom',
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);
set_join_policy
substitui a política de associação anterior pela nova política de associação.
Os procedimentos a seguir são usados para visualizar ou gerenciar políticas de associação no código:
consumer.set_join_policy
consumer.view_provider_join_policy
consumer.view_join_policy
provider.view_join_policy
provider.set_join_policy
Políticas de coluna¶
As políticas de coluna especificam quais das suas colunas podem ser projetadas nos resultados da análise quando acessadas por um modelo específico. Você pode definir uma política de coluna a qualquer momento depois de ter vinculado os dados e adicionado modelos à clean room.
Uma coluna não pode estar em uma junção e em uma política de coluna. Uma coluna pode estar tanto em uma política de ativação quanto em uma política de coluna.
Se você não especificar uma política de coluna para seus dados, todas as colunas poderão ser projetadas.
Implementação de uma política de coluna¶
As políticas de coluna podem ser definidas na UI de clean rooms, se o modelo permitir.
As políticas de coluna de clean room são aplicadas a uma coluna somente se o modelo usar o filtro column_policy
ou join_and_column_policy
. Você pode inspecionar um modelo para ver onde as políticas de coluna são aplicadas, visualizando a definição do modelo e confirmando a presença desse filtro em uma sintaxe como esta:
{{ my_column | column_policy }}
As políticas de projeção Snowflake nas tabelas subjacentes são aplicadas independentemente de o modelo ter ou não um filtro column_policy
na coluna.
O código a seguir demonstra como permitir que três colunas sejam projetadas somente pelo modelo prod_overlap_analysis
. O nome do modelo é fornecido como parte da sintaxe de nomeação da coluna ao especificar uma política de coluna. Essa política afeta todos os usuários da clean room, mas somente esse modelo. Existem procedimentos equivalentes para provedores e consumidores em uma clean room; chame o procedimento que reflete sua função na clean room.
-- Set column policies on a clean room where you are a provider
call samooha_by_snowflake_local_db.provider.set_column_policy('my_provider_cleanroom',
['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
-- Set column policies on a clean room where you are a consumer
call samooha_by_snowflake_local_db.consumer.set_column_policy('my_consumer_cleanroom',
['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
Chamar esse procedimento novamente exclui a política de coluna anterior e a substitui pela nova política de coluna.
Os procedimentos a seguir são usados para visualizar ou gerenciar políticas de coluna no código:
consumer.set_column_policy
consumer.view_column_policy
consumer.view_provider_column_policy
provider.set_column_policy
provider.view_column_policy
Políticas de ativação¶
As políticas de ativação especificam quais de suas colunas podem ser ativadas por um modelo de ativação. Um modelo de ativação salva os resultados de consulta em uma tabela na conta Snowflake do provedor ou consumidor, ou em um conector de ativação de terceiros.
Uma coluna pode fazer parte de uma política de ativação, bem como de qualquer outra política.
Se você não especificar uma política de ativação para seus dados, nenhuma coluna de seus dados poderá ser ativada.
Implementação de uma política de ativação¶
As políticas de ativação podem ser definidas na UI de clean rooms se o modelo permitir a ativação.
As políticas de ativação são aplicadas a uma coluna somente se o modelo usar o filtro activation_policy
. Você pode inspecionar um modelo para ver onde as políticas de ativação são aplicadas, visualizando a definição do modelo e confirmando a presença desse filtro em uma sintaxe como esta:
{{ my_column | activation_policy }}
O código a seguir demonstra como permitir que as colunas HASHED_EMAIL e REGION_CODE sejam ativadas em uma clean room. Essa política afeta todos os usuários e todos os modelos de ativação na clean room. Há procedimentos equivalentes para provedores e consumidores em uma clean room. Chame o procedimento que reflete sua função na clean room.
-- Set column policies on a clean room where you are a provider
call samooha_by_snowflake_local_db.provider.set_activation_policy('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
-- Set column policies on a clean room where you are a consumer
call samooha_by_snowflake_local_db.consumer.set_activation_policy('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:REGION_CODE' ]);
Chamar esse procedimento novamente exclui a política de ativação anterior e a substitui pela nova política de ativação.
Os procedimentos a seguir são usados para gerenciar as políticas de ativação no código:
consumer.set_activation_policy
provider.set_activation_policy
Políticas de agregação¶
As políticas de agregação exigem que todas as consultas em uma tabela contenham agregações (GROUP BY, COUNT e outras funções) e também especificam um número mínimo de linhas por grupo de resultados, caso contrário, o grupo será omitido dos resultados. As políticas de agregação exigem que todas as consultas em uma tabela com uma política de agregação sejam agregadas (GROUP BY, COUNT e outras funções de agregação) e também especificam um número mínimo de linhas por grupo de resultados, caso contrário, o grupo será omitido dos resultados.
As clean rooms não têm sua própria implementação de políticas de agregação; para aplicar restrições de agregação nos dados vinculados, aplique uma política de agregação na tabela de origem ou implemente restrições de agregação em seu modelo.
Alguns modelos fornecidos pelo Snowflake usam os parâmetros threshold
e threshold_value
definidos para um usuário ou modelo. Esses valores podem ser modificados na UI de clean rooms, ou chamando provider.add_consumers
ou provider/consumer.set_privacy
. Se definido para um consumidor, você pode acessar esses valores em seu modelo.