Snowflake Data Clean Rooms: Guia de referência da API do provedor¶
Visão geral¶
Este guia de referência lista os procedimentos armazenados na API de salas limpas que permitem que um provedor crie, configure e compartilhe uma sala limpa.
Os procedimentos existem nos seguintes esquemas:
samooha_by_snowflake_local_db.provider
– Procedimentos específicos do provedor. Estes procedimentos só podem ser chamados em salas limpas criadas pela conta atual.samooha_by_snowflake_local_db.consumer
– Procedimentos específicos do consumidor. Estes procedimentos podem ser acionados somente em salas limpas para as quais a conta corrente foi convidada como consumidor.samooha_by_snowflake_local_db.library
– Procedimentos gerais chamados pelo criador da sala limpa (provedor) ou por um colaborador da sala limpa (consumidor).
Estes procedimentos podem ser acessados por qualquer ambiente de linha de comando compatível com os procedimentos do Snowflake, incluindo notebooks, pastas de trabalho e CLI.
Requisitos¶
A API requer a função samooha_app_role
e o warehouse app_wh
. Execute os seguintes comandos antes de usar qualquer procedimento descrito aqui:
USE ROLE samooha_app_role;
USE WAREHOUSE app_wh;
Se você não tem a função SAMOOHA_APP_ROLE, entre em contato com o administrador da sua conta.
Criação, configuração e exclusão de salas limpas¶
provider.view_cleanrooms¶
Descrição: lista todas as salas limpas existentes criadas por esta conta de provedor.
Argumentos: nenhum
Retorna: (tabela) uma lista de salas limpas criadas por esta conta de provedor. As salas limpas não precisam ser compartilhadas, instaladas ou usadas pelos consumidores. As salas limpas excluídas são eliminadas do banco de dados e não aparecem nesta lista.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_cleanrooms();
provider.describe_cleanroom¶
Descrição: obtenha um resumo das informações sobre uma sala limpa, como modelos, políticas de junção, políticas de coluna e consumidores.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa sobre a qual você deseja obter informações.
Retorna: (cadeia de caracteres) um resumo dos metadados da sala limpa.
Exemplo:
call samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
provider.cleanroom_init¶
Descrição: cria uma sala limpa com o nome especificado em sua conta. Este procedimento pode levar um minuto ou mais para ser executado. A sala limpa só ficará visível no aplicativo da Web ou para os colaboradores depois que você chamar create_or_update_cleanroom_listing
.
Argumentos:
cleanroom_name (cadeia de caracteres) – nome da sala limpa, com no máximo 80 caracteres. O nome inclui [A‑Z,a‑z,0‑9, ,_].
distribution (cadeia de caracteres, opcional) – um dos seguintes valores:
INTERNAL (padrão) – a sala limpa é visível apenas para usuários da mesma organização e não aciona uma varredura de segurança antes de alterar a versão padrão.
EXTERNAL – A sala limpa está pronta para a produção e pode ser compartilhada fora da organização. A sala limpa aciona uma verificação de segurança antes de alterar a versão padrão. Se você quiser alterar a distribuição após a criação de uma sala limpa, chame
alter package
conforme mostrado aqui:alter application package samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
-- Create an internal clean room
call samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
provider.set_default_release_directive¶
Descrição: Especifica a versão e o patch de uma sala limpa carregada pelos colaboradores quando eles iniciam uma nova sessão do navegador no aplicativo da Web ou acessam a sala limpa em uma API. Isso deve ser feito antes que a sala limpa possa ser compartilhada com os consumidores.
O aplicativo de sala limpa cria uma nova versão de uma sala limpa sempre que você faz upload ou altera o código Python. Se você quiser que os usuários recebam a versão mais recente, chame esse procedimento com o número da nova versão. Para ver as versões disponíveis e saber qual é a versão padrão atual, execute:
show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
Todas as salas limpas são criadas com os seguintes números de versão e patch:
versão: V1_0
patch: 0
Nota
Se a distribuição da sala limpa estiver definida como EXTERNAL, este procedimento só poderá ser chamado depois que a varredura de segurança da sala limpa passar para o estado APPROVED. Para ver o status de segurança, chame view_cleanrooom_scan_status
.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa.
version (cadeia de caracteres) – Versão. Deve ser sempre «V1_0».
patch (cadeia de caracteres) – Número do patch carregado pelo consumidor. Ele começa com 0 e você deve incrementá-lo sempre que uma nova versão de sala limpa estiver disponível. É possível ver as versões disponíveis conforme descrito acima.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
provider.drop_cleanroom¶
Descrição: exclui a sala limpa. Os colaboradores que têm a sala limpa instalada não podem mais acessá-la ou usá-la. A sala limpa não aparecerá mais no aplicativo da Web na próxima vez que o navegador for atualizado.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa a ser excluída.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
provider.enable_consumer_run_analysis¶
Descrição: permite que o consumidor execute análises na sala limpa. Este recurso é ativado por padrão em todas as novas salas limpas, portanto, este procedimento só precisa ser executado se você tiver desativado explicitamente a análise de execução do consumidor para uma sala limpa.
Importante
Este procedimento deve ser chamado antes que um consumidor instale uma sala limpa. Se este recurso for alterado após a instalação de uma sala limpa, a sala limpa deverá ser reinstalada para refletir a nova configuração.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa na qual são permitidas análises executadas pelo consumidor.
consumer_accounts (matriz de cadeia de caracteres) – Localizadores de conta de todos os consumidores para os quais esse recurso deve ser ativado. NOTE: É preciso que estes consumidores já tenham sido adicionados à sala limpa.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']);
provider.disable_consumer_run_analysis¶
Descrição: impede que os consumidores especificados executem análises na sala limpa especificada. Por padrão, todos os consumidores têm permissão para executar uma análise em uma sala limpa.
Importante
Este procedimento deve ser chamado antes que um consumidor instale uma sala limpa. Se isso for alterado depois que um consumidor já tiver instalado sua sala limpa, ele precisará reinstalar a sala limpa para refletir a nova configuração.
Argumentos:
cleanroom_name (cadeia de caracteres) – Sala limpa onde a análise executada pelo consumidor está sendo desativada.
consumer_accounts (matriz de cadeia de caracteres) – Localizadores de contas de consumidores que não podem executar uma análise nesta sala limpa. NOTE: esses consumidores já devem ter sido adicionados à sala limpa.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']);
biblioteca.is_consumer_run_enabled¶
Descrição: verifica se esta sala limpa permite análises executadas pelo consumidor.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa a ser verificada.
Retorna: (cadeia de caracteres) se esta sala limpa permite ou não análises executadas pelo consumidor.
Exemplo:
call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
provider.create_or_update_cleanroom_listing¶
Descrição: publica uma nova sala limpa ou atualiza uma sala limpa existente. É necessário chamar este método sempre que fizer alterações em uma sala limpa para garantir que as alterações sejam propagadas aos consumidores.
Ao publicar uma sala limpa pela primeira vez, pode demorar um pouco para que a sala limpa fique visível no aplicativo da Web (até 15 minutos).
Se você fizer atualizações em uma sala limpa sem chamar este método posteriormente, não há garantia de que as alterações serão propagadas aos consumidores.
Nota
É necessário definir a diretiva de lançamento pelo menos uma vez antes de chamar este procedimento. Para obter mais informações, consulte provider.set_default_release_directive.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa a ser publicada ou atualizada.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.create_or_update_cleanroom_listing($cleanroom_name);
provider.add_ui_form_customizations¶
Descrição: define uma UI para um modelo em uma sala limpa quando acessado no aplicativo da Web. Isso é útil ao permitir que os consumidores escolham parâmetros de modelo, como tabelas ou colunas. No mínimo, é necessário especificar valores para display_name, description e methodology no argumento template_information.
Argumentos:
cleanroom_name (cadeia de caracteres): o nome da sala limpa com este modelo. O formulário enviado aplica-se somente ao modelo especificado na sala limpa especificada.
template_name (cadeia de caracteres): nome do modelo ao qual esta UI se aplica. Este não é o título visível para o usuário, que é especificado usando o campo template_information.display_name.
template_information (Dict): informações exibidas ao usuário na UI. Contém os seguintes campos:
display_name
(obrigatório): nome de exibição do modelo no aplicativo da Web.description
(obrigatório): descrição do modelo.methodology
(obrigatório): descrição de como o consumidor deve usar o formulário para executar uma análise.warehouse_hints
(objeto): recomenda o tipo de warehouse a ser usado para executar a análise. Este é um objeto com os seguintes campos:warehouse_size
: consulte warehouse_size em CREATE WAREHOUSE para obter os valores válidos.snowpark_optimized
(booliano): se deve ser usado um warehouse otimizado para Snowpark para processar a consulta. Para a maioria dos casos de uso de aprendizado de máquina, a Snowflake recomenda TRUE.
render_table_dropdowns
(objeto): se devem ser mostradas as listas suspensas padrão que permitem ao usuário selecionar quais tabelas de provedor e/ou consumidor devem ser usadas na consulta. Este é um objeto com os seguintes campos:render_consumer_table_dropdown
: (booliano, padrão = TRUE) se TRUE, exibe o seletor de tabela padrão do consumidor. Se FALSE, oculte o seletor de tabelas do consumidor. O modelo pode acessar os valores escolhidos como uma lista usando a variável de modelomy_table
.render_provider_table_dropdown
: (booliano, padrão = TRUE) If TRUE, exibe o seletor de tabela padrão do provedor. Se FALSE, oculte o seletor de tabelas do provedor. O modelo pode acessar os valores escolhidos como uma lista usando a variável de modelosource_table
.
details (dicionário): define os campos de entrada configuráveis pelo usuário que passam valores ao modelo. Trata-se de um dicionário de pares chave-objeto, cada par representando um elemento de UI configurável pelo usuário. A chave é um nome de cadeia de caracteres arbitrário que é exposto como uma variável ao modelo JinjaSQL. O valor é um objeto que define a UI de elemento. Cada objeto tem os seguintes campos:
<field_name>: { 'display_name': <string>, 'description': <string>, 'methodology': <string>, ['type': <enum>,] ['default': <value>,] ['choices': <string array>,] ['infoMessage': <string>,] ['size': <enum>] ['required': <bool>,] ['group': <string>,] ['references': <enum>] ['provider_parent_table_field': <string>,] ['consumer_parent_table_field': <string>] }
display_name
(obrigatório): Nome de exibição do elemento de UIdescription
(obrigatório): Descrição que aparece sob o nomemethodology
(obrigatório): descrição de como o consumidor deve usar o formulário para executar uma análisetype
: o tipo de UI de elemento. Se as referências forem especificadas para este campo de entrada, omita esta entrada (o tipo é determinado para você). Valores com suporte:any
(padrão): campo de entrada de texto normal.boolean
: seletor verdadeiro/falsointeger
: Use as setas para alterar o númeromultiselect
: seleciona vários itens em uma lista suspensadropdown
: seleciona um item em uma lista suspensadate
: Seletor de data
default
: valor padrão deste elementochoices
: (matriz de cadeia de caracteres) lista de opções para elementos dropdown e multiselectinfoMessage
: hover text informativo mostrado ao lado do elementosize
: tamanho do elemento. Valores compatíveis:XS
,S
,M
,L
,XL
required
: se um valor é exigido do usuário. Especificar TRUE ou FALSE.group
: um nome de grupo, usado para agrupar itens na UI. Use o mesmo nome de grupo para os itens que devem ser agrupados na UI. Se você ocultar as listas suspensas padrão, poderá usar os argumentos especiais{{ source_table }}
e{{ my_table}}
no modelo personalizado e, em seguida, definir sua própria lista suspensa que contenha as tabelas desejadas. Para obter mais informações sobre o uso dessas variáveis especiais ao definir o modelo personalizado, consulte provider.add_custom_sql_template.references
: cria uma lista suspensa contendo tabelas ou colunas disponíveis na sala limpa sem precisar conhecê-las antecipadamente ou listá-las individualmente. Se usado, type deve ser «multiselect» ou «dropdown». Os seguintes valores de cadeia de caracteres são compatíveis:PROVIDER_TABLES
: lista suspensa de todas as tabelas do provedor na sala limpa acessíveis ao usuárioPROVIDER_JOIN_POLICY
: lista suspensa de todas as colunas que podem ser unidas a partir da tabela do provedor especificada porprovider_parent_table_field
PROVIDER_COLUMN_POLICY
: lista suspensa de todas as colunas com uma política de coluna na tabela do provedor especificada porprovider_parent_table_field
CONSUMER_TABLES
: lista suspensa de todas as tabelas do consumidor na sala limpa acessível ao usuárioCONSUMER_COLUMNS
: lista suspensa de todas as colunas da tabela do consumidor especificada por consumer_parent_table_field que podem ser acessadas pelo usuário. Você não deve usar referências de coluna do consumidor em modelos executados pelo provedor, pois o consumidor pode aplicar políticas de junção e coluna, o que pode levar a uma falha na consulta quando a política da coluna não estiver sendo respeitada.CONSUMER_JOIN_POLICY
: lista suspensa de todas as colunas que podem ser unidas a partir da tabela do consumidor especificada porconsumer_parent_table_field
CONSUMER_COLUMN_POLICY
: lista suspensa de todas as colunas com uma política de coluna na tabela do consumidor especificada porconsumer_parent_table_field
provider_parent_table_field
: especifique o nome da UI de elemento em que o usuário seleciona uma tabela de provedor (não forneça o nome da tabela em si aqui). Use somente quando as referências estiverem definidas comoPROVIDER_COLUMN_POLICY
ouPROVIDER_JOIN_POLICY
.consumer_parent_table_field
: especifique o nome da UI de elemento em que o usuário seleciona uma tabela de consumidor (não forneça o nome da tabela em si aqui). Use somente quando as referências estiverem definidas comoCONSUMER_COLUMNS
,CONSUMER_JOIN_POLICY
ouCONSUMER_COLUMN_POLICY
.
output_config (dicionário): define como exibir graficamente os resultados do modelo no aplicativo da Web. Se não for fornecido, os resultados não serão exibidos em um gráfico, apenas em uma tabela. Se você não quiser um gráfico, forneça um objeto vazio {} para este argumento. Campos permitidos:
measure_columns
: nomes das colunas que contêm medidas e dimensões a serem usadas no gráfico gerado pelo aplicativo da Web.default_output_type
: o formato padrão para exibir os resultados. Normalmente, o usuário poderá alterar o formato de exibição na UI se os dados estiverem no formato adequado. Tipos suportados:TABLE
: (padrão) formato tabularBAR
: gráfico de barras, que é bom para comparar diferentes categoriasLINE
: gráfico de linhas, que é bom para mostrar tendências ao longo do tempo ou dados contínuosPIE
: gráfico de pizza, que é adequado para mostrar proporções ou porcentagens
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
-- Specify the display name, description, and warehouse, and hide the default table dropdown lists.
-- Define the following two fields in the UI:
-- A provider table selector that shows all provider tables. Chosen tables can be accessed by the template with the variable 'a_provider_table'
-- (This dropdown list is equivalent to setting `render_table_dropdowns.render_provider_table_dropdown: True`)
-- A column selector for the tables chosen in 'a_provider_table'. Chosen columns can be accessed by the template with the variable 'a_provider_col'
call samooha_by_snowflake_local_db.provider.add_ui_form_customizations(
$cleanroom_name,
'prod_custom_template',
{
'display_name': 'Custom Analysis Template',
'description': 'Use custom template to run a customized analysis.',
'methodology': 'This custom template dynamically renders a form for you to fill out, which are then used to generate a customized analysis fitting your request.',
'warehouse_hints': {
'warehouse_size': 'xsmall',
'snowpark_optimized': FALSE
},
'render_table_dropdowns': {
'render_consumer_table_dropdown': false,
'render_provider_table_dropdown': false
},
'activation_template_name': 'activation_my_template',
'enabled_activations': ['consumer', 'provider']
},
{
'a_provider_table': {
'display_name': 'Provider table',
'order': 3,
'description': 'Provider table selection',
'size': 'S',
'group': 'Seed Audience Selection',
'references': ['PROVIDER_TABLES'],
'type': 'dropdown'
},
'a_provider_col': {
'display_name': 'Provider column',
'order': 4,
'description': 'Which col do you want to count on',
'size': 'S',
'group': 'Seed Audience Selection',
'references': ['PROVIDER_COLUMN_POLICY'],
'provider_parent_table_field': 'a_provider_table',
'type': 'dropdown'
}
},
{
'measure_columns': ['col1', 'col2'],
'default_output_type': 'PIE'
}
);
Registro e cancelamento de registro de dados¶
Use o comando a seguir para registrar e cancelar o registro de bancos de dados, esquemas e objetos. Tabelas e exibições devem ser registradas antes de poderem ser vinculadas à sala limpa. Se você registrar um banco de dados ou esquema, todos os objetos naquele banco de dados ou esquema serão registrados.
Saiba mais sobre o registro de dados
provider.register_db¶
Descrição: permite que um banco de dados e todos os objetos dentro dele sejam vinculados a salas limpas individuais neste ambiente de sala limpa. Este procedimento concede privilégios de USAGE e SELECT no banco de dados para SAMOOHA_APP_ROLE, que é usado pelo ambiente de sala limpa para acessar os dados.
É necessário ter acesso a MANAGE GRANTS no banco de dados para chamar este procedimento. Outros provedores neste ambiente de sala limpa podem, então, vincular estes objetos às suas próprias salas limpas sem precisar de seu próprio privilégio SELECT.
Saiba mais sobre o registro de dados
Importante
Este procedimento não registra nenhum objeto criado após sua chamada. Se novos objetos foram adicionados ao banco de dados e você quiser registrá-los também, deverá chamar este procedimento novamente.
Argumentos:
db_name (cadeia de caracteres) – Nome do banco de dados a ser registrado.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.register_db('SAMOOHA_SAMPLE_DATABASE');
library.register_schema¶
Descrição: semelhante ao register_db
, mas opera no nível do esquema. É necessário ter o privilégio MANAGE GRANTS no esquema para chamar este procedimento.
Este procedimento concede os privilégios USAGE e SELECT no esquema para SAMOOHA_APP_ROLE, que é usado pelo ambiente de sala limpa para acessar os dados.
Se quiser registrar um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS), use library.register_managed_access_schema
.
Importante
Este procedimento não registra nenhum objeto criado após sua chamada. Se novos objetos foram adicionados ao banco de dados e você quiser registrá-los também, deverá chamar este procedimento novamente.
Argumentos:
schema_name (matriz de cadeia de caracteres) – Uma matriz de um ou mais nomes de esquema totalmente qualificados a serem registrados.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_managed_access_schema¶
Descrição: semelhante a register_schema
, mas registra um esquema que foi criado usando o parâmetro WITH MANAGED ACCESS. É necessário ter os privilégios MANAGE GRANTS no esquema para chamar este procedimento.
Este procedimento concede privilégios de uso no esquema gerenciado para SAMOOHA_APP_ROLE, que é usado pelo ambiente de sala limpa para acessar os dados.
Importante
Este procedimento não registra nenhum objeto criado após sua chamada. Se novos objetos foram adicionados ao banco de dados e você quiser registrá-los também, deverá chamar este procedimento novamente.
Argumentos:
schema_name (matriz de cadeia de caracteres) – Uma matriz de um ou mais nomes de esquema totalmente qualificados.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_objects¶
Descrição: concede à sala limpa acesso a tabelas e exibições de todos os tipos, tornando-as disponíveis para serem vinculadas à sala limpa, chamando provider.link_datasets
. É possível registrar grupos mais amplos de objetos chamando library.register_schema
, library.register_managed_access_schema
ou provider.register_db
.
Este procedimento concede privilégios de uso no objeto para SAMOOHA_APP_ROLE, que é usado pelo ambiente da sala limpa para acessar os dados.
É necessário ter o privilégio MANAGE GRANTS no objeto para chamar este procedimento. Este procedimento não pode ser usado para registrar um banco de dados.
Argumentos:
object_names (array) – Matriz de nomes de objeto totalmente qualificados. Esses objetos podem então ser conectados à sala limpa.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplos
Para registrar uma tabela e uma exibição:
call samooha_by_snowflake_local_db.library.register_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
library.unregister_db¶
Descrição: reverte o procedimento register_db
e remove as concessões no nível do banco de dados concedidas à função SAMOOHA_APP_ROLE e ao aplicativo nativo Snowflake Data Clean Room. Isto também remove qualquer banco de dados do seletor no aplicativo da Web.
Argumentos:
db_name (cadeia de caracteres) – Nome do banco de dados para cancelar o registro.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
library.unregister_schema¶
Descrição: cancela o registro de um esquema, o que impede que os usuários vinculem suas tabelas e exibições à sala limpa.
Se quiser cancelar o registro de um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS), use library.unregister_managed_access_schema
.
Argumentos:
schema_name (array) – Esquemas para cancelar o registro.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.unregister_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_managed_access_schema¶
Descrição: semelhante a unregister_schema
, mas cancela o registro de um esquema que foi criado usando o parâmetro WITH MANAGED ACCESS.
Argumentos:
schema_name (array) – Esquemas gerenciados para cancelar o registro.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_objects¶
Descrição: revoga o acesso de sala limpa a tabelas e exibições de todos os tipos. Os objetos não estarão mais disponíveis para nenhum usuário em nenhuma sala limpa gerenciada por essa conta.
Argumentos:
object_names (array) – Matriz de nomes de objetos totalmente qualificados para os quais o acesso deve ser revogado.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplos
Para cancelar o registro de uma tabela e de uma exibição:
call samooha_by_snowflake_local_db.library.unregister_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
Vinculação de dados e tabelas¶
Use os comandos a seguir para adicionar ou remover tabelas e exibições em uma sala limpa.
provider.view_provider_datasets¶
Descrição: visualiza todos os conjuntos de dados adicionados à sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa.
Retorna: (tabela) lista de conjuntos de dados do provedor nesta sala limpa.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.link_datasets¶
Descrição: vincula uma tabela Snowflake ou exibição à sala limpa. O procedimento torna a tabela automaticamente acessível à sala limpa, criando uma exibição segura da tabela dentro da sala limpa, evitando assim a necessidade de fazer uma cópia da tabela. A tabela ainda está vinculada à sua origem, portanto, as atualizações na origem serão refletidas na versão segura dentro da sala limpa.
Todos os itens vinculados aqui devem ser registrados primeiro, no nível do banco de dados, do esquema ou do objeto.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa com acesso aos objetos.
tables_list (matriz de cadeia de caracteres) – Lista de tabelas ou exibições a serem vinculadas à sala limpa. Os objetos devem ser registrados antes de poderem ser vinculados.
consumer_list (matriz de cadeia de caracteres, opcional) – Se presente, permite que somente os consumidores listados aqui acessem estes objetos. Se não estiver presente, permite que qualquer pessoa com acesso à sala limpa acesse estes dados.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.link_datasets(
$cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
Nota
Antes de vincular uma exibição à sala limpa, um usuário com a função ACCOUNTADMIN deve executar o seguinte no Snowflake:
grant reference_usage on database <DB NAME> to share in application package samooha_cleanroom_<cleanroom_name>;
provider.unlink_datasets¶
Descrição: remove o acesso às tabelas especificadas na sala limpa especificada para todos os usuários. As tabelas especificadas devem ter sido vinculadas pelo provedor.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa vinculada a estes conjuntos de dados.
tables_list (array) – Matriz de nomes de tabela ou exibição a serem desvinculadas da sala limpa.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.unlink_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
provider.view_provider_datasets¶
Descrição: exibe todas as tabelas e exibições vinculadas à sala limpa especificada por qualquer provedor nesta conta.
Argumentos:
cleanroom_name (string) – Nome da sala limpa.
Retorna: tabela de objetos vinculados à sala limpa especificada, juntamente com o nome da exibição interna da sala limpa para cada objeto.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.restrict_table_options_to_consumers¶
Descrição: controla se um determinado consumidor pode acessar uma tabela na sala limpa. Este procedimento é somente substituição, portanto, somente os usuários especificados aqui poderão acessar uma tabela listada aqui. Os consumidores com acesso concedido por meio de provider.link_datasets, uma chamada anterior a esse procedimento ou qualquer outro procedimento perderão o acesso a uma tabela listada aqui se não estiverem na lista.
Argumentos:
*cleanroom_name (cadeia de caracteres)
*access_details (objeto) – Um objeto JSON, em que o nome é o nome totalmente qualificado de uma tabela ou exibição e o valor é uma matriz de localizadores de conta.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.restrict_table_options_to_consumers(
$cleanroom_name,
{
'DB.SCHEMA.TABLE1': ['CONSUMER_1_LOCATOR'],
'DB.SCHEMA.TABLE2': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
}
);
Gerencie as políticas de junção¶
As políticas de junção em salas limpas de dados não são iguais às políticas de junção em todo o Snowflake. As políticas de junção para salas limpas são definidas somente por meio deste procedimento; as políticas de junção definidas em tabelas fora das salas limpas são ignoradas pelas salas limpas.
provider.view_join_policy¶
Descrição: mostra as políticas de junção atualmente aplicadas à sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa a ser consultada.
Retorna: (tabela) lista de linhas juntáveis em todas as tabelas ou exibições na sala limpa.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
provider.set_join_policy¶
Descrição: especifica em quais colunas o consumidor pode se unir ao executar modelos dentro desta sala limpa. Observe que a política é somente substituição, portanto, se o procedimento for chamado novamente, a política de junção definida anteriormente será completamente substituída pela nova.
Importante
As políticas de junção são aplicadas somente quando o modelo aplica os filtros JinjaSQL join_policy
ou join_and_column_policy
às linhas de junção.
Nota
As políticas de junção em salas limpas de dados não são as mesmas que as políticas de junção em todo o Snowflake. As políticas de junção para salas limpas são definidas somente por meio deste procedimento; as políticas de junção definidas em tabelas fora das salas limpas são ignoradas pelas salas limpas.
Argumentos:
cleanroom_name (cadeia de caracteres) – nome da sala limpa onde a política de junção deve ser aplicada.
table_and_col_names (matriz de cadeia de caracteres) – Nome de coluna totalmente qualificado no formato
database_name.schema_name.table_or_view_name:column_name
. Observe o uso correto dos marcadores de ponto (.) e dois pontos (:).
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.set_join_policy($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:EMAIL', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:EMAIL']);
Gerenciamento de modelos de provedores¶
Use os seguintes comandos para adicionar os modelos/análises compatíveis nesta sala limpa.
provider.view_added_templates¶
Descrição: exibe os modelos adicionados pelo provedor na sala limpa. Não existe um método para listar todos os modelos em todas as salas limpas para este provedor.
Argumentos:
cleanroom_name (cadeia de caracteres) – Sala limpa a ser consultada.
Retorna: (tabela) – Lista de modelos disponíveis na sala limpa especificada, com detalhes sobre cada modelo.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
provider.view_template_definition¶
Descrição: mostra informações sobre um modelo específico. Os consumidores que estiverem consultando um modelo de provedor devem usar consumer.view_template_definition
.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa com este modelo.
template_name (cadeia de caracteres) – Nome do modelo sobre o qual você deseja solicitar informações.
Retorna: a definição do modelo (string)
Exemplo:
call samooha_by_snowflake_local_db.provider.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
provider.add_templates¶
Descrição: adiciona uma lista de modelos à sala limpa. Isso não substitui a lista de modelos existente.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa à qual os modelos serão adicionados.
template_names (matriz de cadeia de caracteres) – Nome dos modelos a serem adicionados. Esses são apenas modelos fornecidos pela Snowflake. Para adicionar um modelo personalizado, chame
add_custom_sql_template
. Os nomes dos modelos fornecidos pelo Snowflake incluem «prod_overlap_analysis» e «prod_provider_data_analysis».
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.add_templates($cleanroom_name, ['prod_overlap_analysis']);
provider.clear_template¶
Descrição: Remove um modelo especificado da sala limpa.
Argumentos:
cleanroom_name (string) – Nome da sala limpa.
template_name (cadeia de caracteres) – Nome do modelo a ser removido dessa sala limpa.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.clear_template($cleanroom_name, 'prod_custom_template');
provider.clear_all_templates¶
Descrição: remove todos os modelos que foram adicionados à sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa da qual serão removidos todos os modelos.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
provider.set_column_policy¶
Descrição: define quais colunas nos dados estão disponíveis para um modelo especificado na sala limpa como linhas não unidas. As colunas devem ser declaradas aqui ou em set_join_policy
para serem usadas na sala limpa. As colunas listadas aqui podem ser usadas em qualquer lugar do modelo, exceto como uma coluna de junção. Uma coluna não pode ser listada em uma política de coluna e em uma política de junção.
Por padrão, a política de coluna de uma tabela é vazia, o que significa que nenhuma coluna pode ser visualizada nos resultados.
Este procedimento tem o comportamento de substituição completa, portanto, toda vez que é chamado, ele substitui totalmente a lista de colunas anterior.
Observe que as verificações de política de coluna são realizadas analisando a consulta SQL a ser executada nos dados para quaisquer colunas não autorizadas. As consultas com curingas podem não ser detectadas com estas verificações, e você deve ter cuidado ao criar o modelo de análise. Se houver colunas que realmente nunca devem ser consultadas, considere criar uma exibição de sua tabela de origem que elimine essas colunas confidenciais e crie um link nessa exibição.
Argumentos:
cleanroom_name (string) – Nome da sala limpa.
analysis_and_table_and_cols (matriz de cadeia de caracteres) – Matriz de colunas que podem ser usadas por modelos. O formato é:
template_name:full_table_name:column_name
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.set_column_policy($cleanroom_name,
['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']);
-- Same example, but using a variable name for the template.
call samooha_by_snowflake_local_db.provider.set_column_policy($cleanroom_name,
[$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
provider.view_column_policy¶
Descrição: lista as políticas de coluna atualmente ativas na sala limpa. Uma política de coluna informa quais colunas da tabela podem ser exibidas em quais modelos.
**Argumentos:**cleanroom_name (cadeia de caracteres)
Retorna: (tabela) quais colunas podem ser usadas em quais modelos.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
provider.add_custom_sql_template¶
Descrição: adiciona um modelo JinjaSQL personalizado à sala limpa. Isso permite que o consumidor chame o modelo.
Você pode chamar esta API mais de uma vez para adicionar vários modelos personalizados à sala limpa. O procedimento substitui qualquer modelo anterior com o mesmo nome nesta sala limpa.
Se o modelo for usado pelo consumidor para ativar os resultados de volta ao provedor, o comando deverá atender aos seguintes requisitos:
O nome do modelo personalizado deve começar com a cadeia de caracteres
activation
. Por exemplo,activation_custom_template
.O modelo deve criar uma tabela que comece com
cleanroom.activation_data_
. Por exemplo,CREATE TABLE cleanroom.activation_data_analysis_results AS ...
.O modelo deve retornar a parte exclusiva do nome da tabela que foi criada na definição, que é a cadeia de caracteres anexada a
cleanroom.activation_data_
. Por exemplo,retorne 'data_analysis_results'
.
Os modelos JinjaSQL podem acessar duas variáveis globais:
source_table: uma matriz de tabelas de provedor. Quando o modelo é executado usando o aplicativo da Web, eles são escolhidos pelo consumidor usando um formulário da Web. Quando o modelo é executado a partir do código, eles são transmitidos para
consumer.run_analysis
usando o argumento provider_tables.my_table: uma matriz de tabelas de consumidor. Quando o modelo é executado usando o aplicativo da Web, eles são escolhidos pelo consumidor usando um formulário da Web. Quando o modelo é executado a partir do código, eles são transmitidos para
consumer.run_analysis
usando o argumento consumer_tables.
Todas as tabelas de provedores/consumidores devem ser referenciadas usando esses argumentos, pois o nome da exibição segura realmente vinculada à sala limpa será diferente do nome da tabela. Os aliases de tabela de provedores DEVEM ser obrigatoriamente p (ou p1), p2, p3, p4 etc., e os aliases da tabela do consumidor devem ser c (ou c1), c2, c3 etc. Isso é necessário para aplicar políticas de segurança na sala limpa.
Todas as colunas especificadas pelo usuário em um modelo JinjaSQL personalizado devem ser verificadas quanto à conformidade com as políticas de junção e coluna usando os seguintes filtros:
join_policy: verifica se um valor de cadeia de caracteres ou cláusula de filtro está em conformidade com a política de junção
column_policy: verifica se um valor de cadeia de caracteres ou cláusula de filtro está em conformidade com a política de coluna
join_and_column_policy: verifica se as colunas usadas para uma junção em uma cláusula de filtro estão em conformidade com a política de junção e se as colunas usadas como filtro estão em conformidade com a política de coluna
Por exemplo, na cláusula {{ where_clause | sqlsafe | join_and_column_policy }}
, uma entrada de where_clause = 'p.HEM = c.HEM e p.STATUS = 1'
será analisada para verificar se p.HEM
está na política de junção e p.STATUS
está na política de coluna.
Observação: use o filtro sqlsafe com muito cuidado, pois ele permite que os colaboradores coloquem SQL puro no modelo.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa à qual este modelo é aplicado.
template_name (cadeia de caracteres) – Nome do modelo. Devem ser todas letras minúsculas, números, espaços ou sublinhados. Os modelos de ativação devem ter um nome que comece com «activation».
template (cadeia de caracteres) – O modelo JinjaSQL.
sensitivity (float, opcional) – Se a privacidade diferencial estiver ativada para esta sala limpa, especifica a quantidade de ruído de privacidade diferencial aplicada aos dados consumidos por esse modelo. O padrão é 1,0, sem limite superior. Defina esse valor como a quantidade máxima que a consulta poderia alterar ao excluir uma única linha dos resultados. A privacidade diferencial deve estar ativada nessa sala limpa para que esse argumento tenha algum efeito.
consumer_locators (matriz de cadeia de caracteres, opcional) – Uma matriz de um ou mais localizadores de conta. Se estiver presente, esse modelo será adicionado à sala limpa somente para essas contas. É possível modificar essa lista posteriormente chamando
provider.restrict_template_options_to_consumers
. Se você não especificar uma lista de consumidores, todos os consumidores poderão usar o modelo personalizado na sala limpa especificada.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.add_custom_sql_template(
$cleanroom_name, 'prod_custom_template',
$$
select
identifier({{ dimensions[0] | column_policy }})
from
identifier({{ my_table[0] }}) c
inner join
identifier({{ source_table[0] }}) p
on
c.identifier({{ consumer_id }}) = identifier({{ provider_id | join_policy }})
{% if where_clause %} where {{ where_clause | sqlsafe | join_and_column_policy }} {% endif %};
$$);
provider.restrict_template_options_to_consumers¶
Descrição: controla quais usuários podem acessar um determinado modelo em uma determinada sala limpa. Esse procedimento substitui qualquer lista de acesso especificada anteriormente por qualquer outro procedimento para um par de sala limpa/modelo.
Argumentos:
cleanroom_name (string) – Nome da sala limpa.
access_details (objeto JSON) – O nome de um modelo e os usuários que podem acessar esse modelo nessa sala limpa. Se um modelo for especificado, somente os usuários listados aqui poderão acessar esse modelo nessa sala limpa. Esse é um objeto com um objeto filho por modelo no seguinte formato:
{'template_name': ['user1_locator','user2_locator','userN_locator']}
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.restrict_template_options_to_consumers(
$cleanroom_name,
{
'prod_template_1': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
}
);
Modelos definidos pelo consumidor¶
As seguintes APIs permitem que você aprove ou rejeite uma solicitação de um consumidor para adicionar um modelo à sala limpa. Um modelo definido pelo consumidor é adicionado a uma sala limpa somente se o provedor aprovar a solicitação do consumidor para adicioná-lo. Para obter mais informações, consulte Como usar a API do desenvolvedor para adicionar modelos definidos pelo consumidor.
provider.list_template_requests¶
Descrição: lista todas as solicitações de consumidores que desejam adicionar um modelo definido pelo consumidor a uma sala limpa. Isso inclui solicitações pendentes, aprovadas e rejeitadas. Use isso para verificar se há solicitações pendentes e aprová-las (provider.approve_template_request
) ou rejeitá-las (provider.reject_template_request
).
Importante
É necessário chamar uma vez provider.mount_request_logs_for_all_consumers
em uma sala limpa antes de chamar esse procedimento. Não há necessidade de chamá-lo mais de uma vez.
Argumentos:
cleanroom_name (cadeia de caracteres) – Exibe solicitações de consumidores para adicionar um modelo a essa sala limpa.
Retorna: uma tabela com os seguintes valores, entre outros:
request_id (cadeia de caracteres) – ID da solicitação, necessário para aceitar ou rejeitar a solicitação. consumer_identifier (cadeia de caracteres) – Localizador da conta da pessoa que faz a solicitação. template_name (cadeia de caracteres) – Nome do modelo fornecido pelo consumidor. template_definition (cadeia de caracteres) – Definição completa do modelo proposto pelo consumidor. status (cadeia de caracteres) – Status da solicitação: PENDING, APPROVED, REJECTED.
Exemplo:
call samooha_by_snowflake_local_db.provider.list_template_requests($template_name);
provider.approve_template_request¶
Descrição: aprova uma solicitação para adicionar um modelo à sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa à qual o usuário deseja adicionar o modelo.
request_id (cadeia de caracteres) – ID da solicitação a ser aprovada. Chame
provider.list_template_requests
para ver as IDs de solicitação.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.approve_template_request('dcr_cleanroom',
'01b4d41d-0001-b572');
provider.reject_template_request¶
Descrição: rejeita uma solicitação para adicionar um modelo a uma sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa à qual o usuário deseja adicionar o modelo.
request_id (cadeia de caracteres) – ID da solicitação a ser rejeitada. Chame
provider.list_template_requests
para ver as IDs de solicitação.reason_for_rejection (cadeia de caracteres) – Motivo da rejeição da solicitação.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.reject_template_request('dcr_cleanroom',
'01b4d41d-0001-b572',
'Failed security assessment');
Encadeamentos de modelos¶
Use os seguintes comandos para criar e gerenciar as cadeias de modelos.
provider.add_template_chain¶
Descrição: cria uma nova cadeia de modelos. Os modelos devem existir antes de serem adicionados à cadeia de modelos. Depois que uma cadeia de modelos é criada, ela não pode ser modificada, mas é possível criar uma nova cadeia de modelos com o mesmo nome para substituir a antiga.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa onde a cadeia de modelos deve ser adicionada.
template_chain_name (cadeia de caracteres) – Nome da cadeia de modelos.
templates (matriz de objetos) – matriz de objetos, um por modelo. O objeto pode conter os seguintes campos:
template_name
(cadeia de caracteres) – Especifica o modelo que está sendo adicionado à cadeia de modelos. O modelo já deve ter sido adicionado à sala limpa chamandoprovider.add_template_chain
.cache_results
(booliano) – Determina se os resultados do modelo são salvos temporariamente para que outros modelos na cadeia de modelos possam acessá-los. Para armazenar os resultados em cache, especifique TRUE.output_table_name
(cadeia de caracteres) – Quandocache_results
= TRUE, especifica o nome da tabela Snowflake onde os resultados do modelo são armazenados.jinja_output_table_param
(cadeia de caracteres) – Quandocache_results
= TRUE, especifica o nome do parâmetro Jinja que outros modelos devem incluir para aceitar os resultados armazenados emoutput_table_name
.cache_expiration_hours
(inteiro) – Quandocache_results
= TRUE, especifica o número de horas antes que os resultados no cache sejam descartados. Quando o cache expira, na próxima vez em que a cadeia de modelos for executada, o cache será atualizado com os resultados do modelo.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.add_template_chain(
$cleanroom_name,
'my_chain',
[
{
'template_name': 'crosswalk',
'cache_results': True,
'output_table_name': 'crosswalk',
'jinja_output_table_param': 'crosswalk_table_name',
'cache_expiration_hours': 2190
},
{
'template_name': 'transaction_insights',
'cache_results': False
}
]
);
provider.view_added_template_chains¶
Descrição: lista as cadeias de modelos na sala limpa especificada.
Argumentos:
cleanroom_name (string) – Nome da sala limpa.
Retorna: (tabela) descrição de todas as cadeias de modelos adicionadas a essa sala limpa.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
provider.view_template_chain_definition¶
Descrição: retorna a definição de uma cadeia de modelos.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa associada a essa cadeia de modelos.
template_chain_name (cadeia de caracteres) – Nome da cadeia de modelos associada a essa sala limpa.
Retorna: (tabela) Descrição da cadeia de modelos especificada.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_template_chain_definition($cleanroom_name, 'my_chain');
provider.clear_template_chain¶
Descrição: exclui uma cadeia de modelos especificada de uma sala limpa especificada. A cadeia não é armazenada em nenhum lugar, portanto, se você quiser recriar a cadeia, deverá recriá-la do zero.
Argumentos:
cleanroom_name (cadeia de caracteres) – A sala limpa que é atribuída a essa cadeia de modelos.
template_chain_name (cadeia de caracteres) – A cadeia de modelos a ser removida dessa sala limpa.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'my_chain');
provider.clear_all_template_chains¶
Descrição: Exclui todas as cadeias de modelos da sala limpa especificada.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa da qual serão excluídas todas as cadeias de modelos.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.clear_all_template_chains($cleanroom_name);
Análise multiprovedor¶
Esses procedimentos permitem a análise de vários provedores.
provider.enable_multiprovider_computation¶
Descrição: este procedimento permite que tabelas de várias salas limpas Snowflake e, possivelmente, de diferentes provedores, sejam usadas por um único modelo fornecido pelo consumidor. Especifique quais de suas salas limpas podem ser consultadas em combinação com quais outras salas limpas por quais outros usuários.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome de uma sala limpa que você possui. Todos os dados desta sala limpa podem ser compartilhados com outras salas limpas listadas abaixo quando solicitados pelo usuário listado abaixo.
consumer_account (cadeia de caracteres) – Localizador da conta de um consumidor que tem permissão para fazer a solicitação e, se aprovada, executar uma consulta em qualquer tabela dessa sala limpa combinada com dados de qualquer sala limpa listada em
approved_other_cleanrooms
.approved_other_cleanrooms (matriz de cadeia de caracteres) – Matriz de nomes de salas limpas totalmente qualificadas com as quais os dados dessa sala limpa podem ser combinados. O formato de cada entrada é
provider_org_name.provider_account_name.cleanroom_name
.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
CALL samooha_by_snowflake_local_db.provider.enable_multiprovider_computation(
$cleanroom_name,
$consumer_account_locator,
'org1.account123',
$cleanroom_name_2);
provider.process_multiprovider_request¶
Descrição: avalia uma solicitação de consulta de várias salas limpas enviada por um consumidor. As solicitações são avaliadas com base em fatores como a idade da solicitação e se o solicitante e as salas limpas estão listados em uma chamada anterior para provider.enable_multiprovider_computation
. As solicitações que passam na avaliação são aprovadas.
Por padrão, todas as solicitações de vários provedores devem ser tratadas usando esse procedimento. Se você preferir que as solicitações sejam tratadas automaticamente, chame provider.resume_multiprovider_tasks
.
Depois que a solicitação é avaliada, a solicitação e o status da avaliação são gravados na tabela
- samp:
Tabela
samooha_cleanroom_${CLEANROOM_NAME}. admin.request_log_multiprovider
(e a solicitação é aprovada, se passar na avaliação). É possível ver uma lista de solicitações e o status da avaliação consultando esta tabela:
SELECT * FROM samooha_cleanroom_Samooha_Cleanroom_Multiprovider_Clean_Room_1.admin.request_log_multiprovider;
Uma solicitação aprovada permite que o mesmo consumidor execute a mesma consulta com os mesmos dados quantas vezes quiser. Se quiser revogar a permissão posteriormente, deverá definir o status aprovado como FALSE na tabela de registro:
UPDATE samooha_cleanroom_Samooha_Cleanroom_Multiprovider_Clean_Room_1.admin.request_log_multiprovider SET APPROVED=False WHERE <CONDITIONS>;
Argumentos:
cleanroom_name (cadeia de caracteres) – O nome da sua sala limpa, que um consumidor está pedindo para incluir em uma análise de vários provedores.
consumer_account (cadeia de caracteres) – O localizador da conta do consumidor do usuário que solicita a análise de vários provedores. Esse localizador deve ter sido aprovado para essa sala limpa e para as outras salas limpas listadas na solicitação em uma chamada para
provider.enable_multiprovider_computation
.request_id (cadeia de caracteres) – ID de solicitação para aprovação, de
provider.view_multiprovider_requests
. Como alternativa, digite «-1» para aprovar todas as solicitações pendentes. A chamada desse recurso com uma solicitação processada anteriormente falhará.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
CALL samooha_by_snowflake_local_db.provider.process_multiprovider_request($cleanroom_name_1, $consumer_account_locator, $request_id);
provider.view_multiprovider_requests¶
Descrição: mostra todas as solicitações de análise de vários provedores de uma determinada conta e sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – Mostra solicitações que envolvem essa sala limpa.
consumer_account (cadeia de caracteres) – Mostra solicitações dessa conta de consumidor.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.suspend_multiprovider_tasks¶
Descrição:
Argumentos:
cleanroom_name (cadeia de caracteres) –
consumer_account (cadeia de caracteres) –
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.resume_multiprovider_tasks¶
Descrição:
Argumentos:
cleanroom_name (cadeia de caracteres) –
consumer_account (cadeia de caracteres) –
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
Ativação do provedor¶
Ativação significa exportar resultados para um provedor, um consumidor ou um terceiro. Leia mais sobre ativação..
provider.set_activation_policy¶
Descrição: define quais colunas podem ser usadas em um modelo de ativação. Garante que somente as colunas aprovadas pelo provedor possam ser usadas com o modelo de ativação.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa onde a ativação deve ser permitida.
columns (matriz da cadeia de caracteres) – Somente as colunas listadas aqui podem ser usadas em um modelo de ativação nessa sala limpa. O formato do nome da coluna é
template_name:fully_qualified_table_name:column_name
. Observe o uso correto dos marcadores de ponto (.) e dois pontos (:).
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
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' ]);
provider.request_provider_activation_consent¶
Descrição: envia uma solicitação ao consumidor para permitir que o provedor execute um modelo especificado e envie os resultados para a conta Snowflake do provedor. Argumentos:
cleanroom_name (cadeia de caracteres) – Sala limpa com o modelo de ativação.
template_name (cadeia de caracteres) – Nome do modelo de ativação para o qual deseja solicitar aprovação. Esse modelo deve ter sido adicionado à sala limpa em uma chamada anterior.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.request_provider_activation_consent(
$cleanroom_name, 'activation_my_activation_template');
Execução de análises como provedor¶
Saiba como executar uma análise de provedor
provider.enable_provider_run_analysis¶
Descrição: permite que o provedor (criador da sala limpa) execute análises em uma sala limpa especificada. Isso é desativado por padrão. O provedor ainda deve passar por verificações de segurança automatizadas para cada análise, chamando provider.submit_analysis_request
.
Saiba mais sobre as análises executadas pelo provedor.
Importante
Esse procedimento deve ser chamado após provider.add_consumers
e antes que um consumidor instale uma sala limpa. Se isso for alterado depois que o consumidor já tiver instalado sua sala limpa, ele deverá reinstalar a sala limpa para refletir a nova configuração.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa que deve permitir a análise executada pelo provedor.
consumer_accounts (matriz de cadeia de caracteres) – Localizadores de contas de todos os consumidores que adicionaram dados a essa sala limpa.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.enable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
provider.disable_provider_run_analysis¶
Descrição: impede que o provedor (criador da sala limpa) execute uma análise na sala limpa (está desativado por padrão).
Importante
Esse procedimento deve ser chamado após provider.add_consumers
e antes que um consumidor instale uma sala limpa. Se isso for alterado depois que um consumidor já tiver instalado sua sala limpa, ele precisará reinstalar a sala limpa para refletir a nova configuração.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa em que a análise executada pelo provedor deve ser desativada.
consumer_account_locator (cadeia de caracteres) – A mesma lista de nomes de contas de consumidores passada para
provider.enable_provider_run_analysis
.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.disable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
library.is_provider_run_enabled¶
Descrição: verifica se essa sala limpa permite análises executadas pelo provedor.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa a ser verificada.
Retorna: (cadeia de caracteres) Se essa sala limpa permite ou não análises executadas pelo provedor.
Exemplo:
call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
provider.submit_analysis_request¶
Descrição: solicita a permissão de um consumidor para executar o modelo especificado na sala limpa especificada. Todas as condições a seguir devem ser atendidas antes de chamar esse procedimento:
O provedor deve ter habilitado as análises executadas pelo provedor nessa sala limpa.
O consumidor deve ter análises aprovadas de execução pelo provedor para o modelo especificado.
Todas as políticas de junção e coluna dos dados do consumidor e do modelo devem ser respeitadas.
O modelo é executado dentro da sala limpa e os resultados são armazenados com segurança dentro da sala limpa. Os resultados são criptografados para que somente o provedor possa vê-los.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa onde o modelo deve ser executado.
consumer_account_locator (cadeia de caracteres) – Localizador da conta do consumidor nesta sala limpa que permitiu análises executadas pelo provedor chamando
consumer.enable_templates_for_provider_run
.template_name (cadeia de caracteres) – Nome do modelo a ser executado.
provider_tables (array) – Lista de tabelas de provedores a serem expostas ao modelo. Essa lista preencherá a variável de matriz
source_table
.consumer_tables (array) – Lista de tabelas de consumidor a serem expostas ao modelo. Essa lista preencherá a variável de matriz
my_table
.analysis_arguments (objeto) – Objeto JSON em que cada chave é um nome de argumento usado no modelo que você criou.
Retorna: (cadeia de caracteres) um ID de solicitação que é usado para verificar o status da solicitação e também para acessar os resultados. Salve esse ID porque você precisará dele para ver os resultados da análise.
Exemplo:
call samooha_by_snowflake_local_db.provider.submit_analysis_request(
$cleanroom_name,
'<CONSUMER_ACCOUNT>',
'prod_overlap_analysis',
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
object_construct(
'dimensions', ['c.REGION_CODE'],
'measure_type', ['AVG'],
'measure_column', ['c.DAYS_ACTIVE']
));
provider.check_analysis_status¶
Descrição: o provedor chama esse procedimento para verificar o status da solicitação de análise do provedor. Pode haver um atraso significativo antes que você possa começar a ver o status de uma solicitação. Quando uma análise for marcada como concluída, chame provider.get_analysis_result
para ver os resultados.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa onde a solicitação foi feita.
request_id (cadeia de caracteres) – ID da solicitação, retornado por
provider.submit_analysis_request
.consumer_account_locator (cadeia de caracteres) – Localizador da conta do consumidor para o qual a solicitação foi enviada.
Retorna: (cadeia de caracteres) status da solicitação, em que COMPLETED
significa uma conclusão bem-sucedida da análise.
Exemplo:
-- It can take up to 2 minutes for this to pick up the request ID after the initial request
call samooha_by_snowflake_local_db.provider.check_analysis_status(
$cleanroom_name,
$request_id,
'<CONSUMER_ACCOUNT>'
);
provider.get_analysis_result¶
Descrição: obtém os resultados de uma análise executada pelo provedor. É necessário aguardar até que o status da análise seja listado como COMPLETED para poder obter os resultados. Os resultados persistem na sala limpa indefinidamente.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa para a qual a solicitação foi enviada.
request_id (cadeia de caracteres) – ID da solicitação, retornado por
submit_analysis_request
.consumer_account_locator (cadeia de caracteres) – Localizador da conta do consumidor passado para
submit_analysis_request
.
Retorna: (tabela) resultados de consulta.
Exemplo:
call samooha_by_snowflake_local_db.provider.get_analysis_result(
$cleanroom_name,
$request_id,
$locator
);
Gerenciamento do compartilhamento de salas limpas¶
Use os comandos a seguir para gerenciar o compartilhamento de uma sala limpa com os consumidores.
provider.view_consumers¶
Descrição: lista os consumidores que têm acesso à sala limpa. Ele não mostra se um consumidor instalou a sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – A sala limpa de interesse.
Retorna: (tabela) – Lista de contas de consumidores que podem acessar a sala limpa.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
provider.add_consumers¶
Descrição: concede aos usuários especificados acesso à sala limpa especificada. A sala limpa pode ser acessada por meio do aplicativo da Web e da API. Isso não substitui as listas de consumidores de chamadas anteriores. O acesso à sala limpa é concedido a um usuário específico, não a uma conta inteira. Observe que a conta do consumidor deve estar na mesma região do Snowflake que o provedor para poder acessar uma sala limpa. É possível verificar sua região chamando select current_region();
É possível ver a lista atual de consumidores chamando provider.view_consumers
.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa a ser compartilhada com os usuários especificados. Os usuários podem instalar a sala limpa usando a API ou o aplicativo da Web.
consumer_account_locators (cadeia de caracteres) – Uma lista delimitada por vírgulas de localizadores de contas de consumidores, conforme retornado por CURRENT_ACCOUNT. Essa lista deve incluir o mesmo número de entradas, na mesma ordem, que a contida em
consumer_account_names
.consumer_account_names (cadeia de caracteres) – Uma lista delimitada por vírgulas de nomes de contas de consumidores no formato
org_name.account_name
O nome da organização pode ser recuperado chamando CURRENT_ORGANIZATION_NAME. O nome da conta pode ser recuperado chamando CURRENT_ACCOUNT_NAME. Essa lista deve incluir o mesmo número de itens, na mesma ordem, conforme listado emconsumer_account_locators
.enable_differential_privacy_tasks(boolean, optional, default: FALSE) – Se deve ou não ativar a privacidade diferencial para os usuários listados nessa sala limpa. A privacidade diferencial deve estar ativada para essa sala limpa para que você possa especificar TRUE.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha. Observe que o procedimento não valida os localizadores de usuário ou os nomes de conta, portanto, o sucesso indica apenas que os localizadores enviados foram adicionados ao banco de dados dessa sala limpa.
Exemplo 1:
call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'LOCATOR1,LOCATOR2', 'ORG1.NAME1,ORG2.NAME2');
provider.remove_consumers¶
Descrição: remove o acesso da conta a uma determinada sala limpa. Esse método bloqueia o acesso de todos os usuários nas contas fornecidas.
É possível ver a lista atual de consumidores chamando provider.view_consumers
.
Argumentos:
cleanroom_name (cadeia de caracteres) – O ID da sala limpa (não o nome amigável).
cleanroom_account_locators (cadeia de caracteres) – Uma lista delimitada por vírgulas de localizadores de contas de usuário. Todos os usuários da conta perderão o acesso à sala limpa.
Retorna: (cadeia de caracteres) – Mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.remove_consumers($cleanroom_name, 'locator1,locator2,locator3');
provider.set_cleanroom_ui_accessibility¶
Descrição: Mostra ou oculta a sala limpa no aplicativo da Web para todos os usuários conectados a essa conta de provedor.
Argumentos:
cleanroom_name (string) – Nome da sala limpa.
visibility_status (cadeia de caracteres) – Um dos seguintes valores que diferenciam maiúsculas de minúsculas:
HIDDEN – Oculta a sala limpa no aplicativo da Web de todos os usuários na conta do provedor atual. A sala limpa ainda estará acessível por meio de chamadas de API.
EDITABLE – Torna a sala limpa visível no aplicativo da Web.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.set_cleanroom_ui_accessibility($cleanroom_name, 'HIDDEN');
provider.enable_laf_for_cleanroom¶
Descrição: Habilita o preenchimento automático entre nuvens, que permite que você compartilhe a sala limpa com colaboradores cuja conta Snowflake está em uma região diferente da conta do provedor. O preenchimento automático entre nuvens também é conhecido como preenchimento automático de listagem (LAF).
Por padrão, o preenchimento automático entre nuvens é desativado para novas salas limpas, mesmo que esteja ativado para o ambiente.
Importante
Um administrador do Snowflake com a função ACCOUNTADMIN deve habilitar o preenchimento automático entre nuvens na sua conta Snowflake antes de você poder executar esse comando. Para obter instruções sobre como ativar o preenchimento automático entre nuvens na conta Snowflake, consulte Como colaborar com contas em diferentes regiões.
Há custos adicionais associados à colaboração com consumidores de outras regiões. Para obter mais informações sobre esses custos, consulte Custos de preenchimento automático entre nuvens.
Argumentos:
cleanroom_name (cadeia de caracteres) – O nome da sala limpa que deve ser compartilhado entre as regiões. O preenchimento automático entre nuvens deve ser ativado para a conta por um administrador antes que as salas limpas individuais possam ser compartilhadas.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.enable_laf_for_cleanroom($cleanroom_name);
library.is_laf_enabled_on_account¶
Descrição: retorna se o preenchimento automático entre nuvens está ativado para essa conta.
Retorna: TRUE se o preenchimento automático entre nuvens estiver ativado para essa conta, FALSE caso contrário.
Exemplo:
call samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();
Como usar Python em uma sala limpa¶
provider.load_python_into_cleanroom¶
Descrição: carrega uma função Python personalizada na sala limpa. O código carregado na sala limpa usando esse procedimento não é visível para os consumidores. O código carregado pode ser chamado por seu modelo Jinja.
Saiba como carregar e usar o código Python em uma sala limpa.
Esse procedimento aumenta o número do patch de sua sala limpa e aciona uma verificação de segurança. É necessário aguardar que o status da varredura seja APPROVED para poder compartilhar a versão mais recente com os colaboradores.
Esse procedimento é sobrecarregado e tem duas assinaturas que diferem no tipo de dados do quinto argumento, que determina se você está carregando o código em linha ou carregando-o de um arquivo em um estágio:
Assinaturas¶
Upload de UDF em linha:
(cleanroom_name String, function_name String, arguments Array, packages Array, rettype String, handler String, code String)
Upload de UDF a partir do estágio:
(cleanroom_name String, function_name String, arguments Array, packages Array, imports Array, rettype String, handler String)
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa onde o script deve ser carregado.
function_name (cadeia de caracteres) – Nome para esse pacote. Use esse nome em seu modelo personalizado para chamar a função especificada por handler com quaisquer argumentos descritos por arguments.
arguments (pares de matriz de cadeia de caracteres) – Uma matriz de argumentos exigidos pela função function_name. Cada argumento é um par de cadeias de caracteres delimitadas por espaço com o nome do argumento e o tipo de dados SQL do argumento. É usado para documentação do usuário e não é validado. Por exemplo: “size integer”, “month string”, “data variant”.
packages (matriz de cadeia de caracteres) – Lista de nomes de pacotes Python usados pelo código. Esses devem ser pacotes Python padrão; suas UDFs não podem chamar outras UDFs carregadas.
imports (matriz de cadeia de caracteres com elemento único) – Presente somente ao carregar sua UDF a partir de um estágio. Trata-se de uma matriz de cadeia de caracteres com um único elemento: o endereço do estágio, relativo ao estágio para o qual você carregou o código. O caminho do estágio raiz está disponível chamando
provider.get_stage_for_python_files
.ret_type (cadeia de caracteres) – tipo de dados SQL do valor retornado pela função handler. Por exemplo: “integer”, “variant”.
handler (string) – A função de ponto de entrada em seu código que deve ser chamada quando um modelo chamar function_name.
Para UDF em linha, esse é o nome da função, por exemplo:
main
.Para o código carregado de um estágio, esse é o nome da função qualificado pelo nome do arquivo de origem, por exemplo:
myscript.main
.
code (cadeia de caracteres) – Presente somente ao fazer upload da UDF como código em linha. Isso deve ser uma UDF Python.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplos:
-- Inline UDF
call samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
$cleanroom_name,
'assign_group', # Name of the UDF
['data variant', 'index integer'], # Arguments of the UDF, along with their type
['pandas', 'numpy'], # Packages UDF will use
'integer', # Return type of UDF
'main', # Handler
$$
import pandas as pd
import numpy as np
def main(data, index):
df = pd.DataFrame(data) # you can do something with df but this is just an example
return np.random.randint(1, 100)
$$
);
-- Upload from stage
call samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
$cleanroom_name,
'myfunc', # Name of the UDF
['data variant', 'index integer'], # Arguments of the UDF
['numpy', 'pandas'], # Packages UDF will use
['/test_folder/assign_group.py'], # Python file to import from a stage
'integer', # Return type of UDF
'assign_group.main' # Handler scoped to file name
);
provider.get_stage_for_python_files¶
Descrição: retorna o caminho do estágio no qual os arquivos Python devem ser carregados, se você planeja usar arquivos de código carregados em um estágio em vez de definições de código em linha para definir o código Python personalizado em uma sala limpa. O estágio não existe e não pode ser examinado até que os arquivos sejam carregados por meio da chamada provider.load_python_into_cleanroom
.
Saiba como carregar e usar o código Python em uma sala limpa.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa em que você deseja carregar os arquivos.
Retorna: (cadeia de caracteres) o caminho para onde você deve carregar os arquivos de código. Use isso para o argumento imports em provider.load_python_into_cleanroom
.
Exemplo:
call samooha_by_snowflake_local_db.provider.get_stage_for_python_files($cleanroom_name);
provider.view_cleanrooom_scan_status¶
Descrição: informa o status da varredura de ameaças para uma sala limpa com DISTRIBUTION definido como EXTERNAL. A varredura precisa ser marcada como «APPROVED» antes que você possa definir ou alterar a diretiva de lançamento padrão. O status da varredura precisa ser verificado somente com as salas limpas EXTERNAL.
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa para verificar o status.
Retorna: (cadeia de caracteres) o status da varredura.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name);
Comandos de obtenção de metadados de sala limpa¶
Use os seguintes comandos para mostrar as propriedades relevantes da sala limpa.
provider.mount_request_logs_for_all_consumers¶
Descrição: oferece aos provedores acesso às informações que retornam ao provedor dos consumidores de uma sala limpa.
.. # TODO: precisa de detalhes sobre isso – que registros exigem que isso seja chamado primeiro?)
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa na qual montar os registros de solicitação.
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
provider.view_request_logs¶
Descrição: exibe os logs de solicitação enviados pelos consumidores dessa sala limpa. Antes de chamar isso pela primeira vez, é necessário chamar mount_request_logs_for_all_consumers
.
.. # TODO: quais solicitações são registradas?)
Argumentos:
cleanroom_name (cadeia de caracteres) – Nome da sala limpa para a qual os registros de solicitação devem ser revisados.
Retorna: um conjunto de logs registrados das consultas que estão sendo executadas na sala limpa (tabela)
Exemplo:
call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
Privacidade diferencial¶
Esses comandos controlam a privacidade diferencial na sala limpa. Você também pode especificar a privacidade diferencial no nível do modelo ou do consumidor ao chamar provider.add_custom_sql_template
ou provider.add_consumers
.
provider.is_dp_enabled_on_account¶
Descrição: descreve se a privacidade diferencial está ou não ativada para essa conta.
Argumentos: nenhum
Retorna: TRUE se a privacidade diferencial estiver ativada para essa conta, FALSE caso contrário.
Exemplo:
call samooha_by_snowflake_local_db.provider.is_dp_enabled_on_account();
provider.suspend_account_dp_task¶
Descrição: desativa a tarefa que escuta os sinais de privacidade diferencial. Isso é usado para controlar os custos associados à privacidade diferencial em sua conta. Se a tarefa de privacidade diferencial for desativada, a privacidade diferencial pode ou não continuar operando em qualquer modelo existente em que a privacidade diferencial esteja especificada, embora você não incorra em custos de privacidade diferencial. [Saiba mais sobre o gerenciamento da privacidade diferencial](/guia do usuário/cleanrooms/differential-privacy)
Argumentos: nenhum
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.suspend_account_dp_task();
provider.resume_account_dp_task¶
Descrição: reinicia o ouvinte da tarefa de privacidade diferencial na conta atual. Os modelos com privacidade diferencial começarão a funcionar novamente. Todos os valores diferenciais de privacidade definidos anteriormente (como sensibilidade ou usuários associados) são mantidos.
Argumentos: nenhum
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.resume_account_dp_task();
Comandos auxiliares gerais¶
Use os comandos a seguir para ajudar, de modo geral, a aproveitar a funcionalidade da sala limpa e os fluxos compatíveis.
library.enable_local_db_auto_upgrades¶
Descrição: habilita a tarefa, samooha_by_snowflake_local_db.admin.expected_version_task
, que atualiza automaticamente o Native App do Snowflake Data Clean Rooms quando novas versões são lançadas. Embora você possa reduzir o custo desativando essa tarefa, recomendamos deixá-la em execução para garantir que tenha a versão mais recente do aplicativo nativo de salas limpas em seu sistema.
Argumentos: nenhum
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
library.disable_local_db_auto_upgrades¶
Descrição: desativa a tarefa, samooha_by_snowflake_local_db.admin.expected_version_task
, que atualiza automaticamente o Native App do Snowflake Data Clean Rooms quando novas versões são lançadas.
**Argumentos:**nenhum
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
Procedimentos obsoletos¶
Os procedimentos a seguir são obsoletos e estão listados aqui apenas para fins de completude. Se for indicado um procedimento de substituição, use o procedimento mais recente.
provider.view_ui_registration_request_log – DEPRECATED¶
Atenção
Este comando está obsoleto. Não é mais necessário registrar manualmente um modelo de sala limpa para uso no aplicativo da Web.
Descrição: exibe a lista de solicitações feitas pela conta para registrar salas limpas no aplicativo da Web. Cada solicitação tem um ID associado que pode ser usado em conjunto com o procedimento view_ui_registration_log
para visualizar o status das solicitações. As solicitações são compartilhadas com o back-end, onde são processadas e a sala limpa é adicionada à sala limpa.
Argumentos:
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
library.register_table_or_view – Obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.register_objects.
Descrição: registra tabelas e exibições de todos os tipos.
**Argumentos:**object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplos
Para registrar uma tabela:
call samooha_by_snowflake_local_db.library.register_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
false,
false,
false);
Para registrar uma tabela Iceberg:
call samooha_by_snowflake_local_db.library.register_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
true,
false,
false);
library.register_table – Obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.register_objects.
Descrição: semelhante ao register_db
, mas opera no nível da tabela. Conceda o privilégio SELECT nesta tabela à função SAMOOHA_APP_ROLE, permitindo que o usuário vincule a tabela à sala limpa.
Se quiser registrar tabelas em um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS), use library.register_managed_access_table
em vez disso.
**Argumentos:**table_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_table – Obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.register_objects.
Descrição: semelhante a register_table
, mas registra tabelas em um esquema que foi criado usando o parâmetro WITH MANAGED ACCESS. Uma matriz ou cadeia de caracteres representando o nome da tabela totalmente qualificado pode ser passada, e serão concedidos privilégios de seleção à função SAMOOHA_APP_ROLE são criadas, permitindo que o usuário vincule a tabela à sala limpa.
**Argumentos:**table_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_view – Obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.register_objects.
Descrição: semelhante ao register_db
, mas opera em um nível de exibição. Uma matriz ou cadeia de caracteres representando o nome da exibição totalmente qualificado pode ser passada, e seleções de concessão para a função SAMOOHA_APP_ROLE são feitas, permitindo que o usuário link a exibição à sala limpa.
Se quiser registrar exibições em um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS), use library.register_managed_access_view
.
**Argumentos:**view_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_view – Obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.register_objects.
Descrição: semelhante a register_view
, mas registra exibições em um esquema que foi criado usando o parâmetro WITH MANAGED ACCESS. Uma matriz ou cadeia de caracteres representando o nome da exibição totalmente qualificado pode ser passada, e seleções de concessão para a função SAMOOHA_APP_ROLE são feitas, permitindo que o usuário link a exibição à sala limpa.
**Argumentos:**view_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_table_or_view – obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.unregister_objects.
Descrição: cancela o registro de tabelas e exibições de todos os tipos.
**Argumentos:**object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplos
Para cancelar o registro de uma tabela:
call samooha_by_snowflake_local_db.library.unregister_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
false,
false,
false);
library.unregister_table – obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.unregister_objects.
Descrição: semelhante ao unregister_db
, mas opera no nível da tabela. Uma matriz ou cadeia de caracteres representando o nome da tabela totalmente qualificado pode ser passada para cancelar o registro das tabelas. Os usuários não podem vincular tabelas não registradas a uma sala limpa.
Se quiser cancelar o registro de tabelas em um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS), use library.unregister_managed_access_table
.
**Argumentos:**table_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_table – obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.unregister_objects.
Descrição: semelhante a unregister_table
, mas cancela o registro de tabelas em um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS).
**Argumentos:**table_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_view – obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.unregister_objects.
Descrição: semelhante ao unregister_db
, mas opera em um nível de exibição. Uma matriz ou cadeia de caracteres representando o nome de exibição totalmente qualificado pode ser passada para cancelar o registro das exibições. Os usuários não podem vincular exibições não registradas a uma sala limpa.
Se quiser cancelar o registro de exibições em um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS), use library.unregister_managed_access_view
.
**Argumentos:**view_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_view – obsoleto¶
Atenção
Este comando está obsoleto. Em vez disso, use library.unregister_objects.
Descrição: semelhante a unregister_view
, mas cancela o registro de exibições em um esquema de acesso gerenciado (ou seja, um esquema criado usando o parâmetro WITH MANAGED ACCESS).
**Argumentos:**view_name (array)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
provider.create_cleanroom_listing – obsoleto¶
Atenção
Esse comando está obsoleto. Em vez disso, use provider.create_or_update_cleanroom_listing.
Descrição: após a configuração de uma sala limpa, cria uma listagem privada com a sala limpa no Snowflake Marketplace e a compartilha com os colaboradores especificados.
Você identifica o colaborador usando o formato orgname.account_name
de sua URL de conta. O consumidor pode encontrar essa cadeia de caracteres seguindo as instruções em Como encontrar o nome da conta e organização de uma conta.
Nota
Para usar esse procedimento, você precisa ter definido a diretiva de lançamento. Para obter mais informações, consulte provider.set_default_release_directive.
Argumentos: cleanroom_name (cadeia de caracteres), consumer_account_name (cadeia de caracteres)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.create_cleanroom_listing($cleanroom_name, <consumerorg.consumeracct>);
provider.register_cleanroom_in_ui – DEPRECATED¶
Atenção
Este comando está obsoleto. Não é mais necessário registrar manualmente um modelo de sala limpa para uso no aplicativo da Web.
Descrição: registra uma sala limpa para uso no aplicativo da Web pelo consumidor. A sala limpa é criada e configurada pelo provedor usando as APIs de desenvolvedor. Esse comando o registra no aplicativo da Web para que os consumidores instalem, adicionem suas tabelas e executem as análises personalizadas que você adicionou sem a necessidade de usar as APIs de desenvolvedor. Eles trabalham com a sala limpa inteiramente por meio da interface do usuário do aplicativo da Web.
Você pode chamar esta API mais de uma vez para incluir vários modelos personalizados no aplicativo da web.
**Argumentos:**cleanroom_name (cadeia de caracteres), template name (cadeia de caracteres), consumer_account_locator (cadeia de caracteres), user_email (cadeia de caracteres)
Retorna: (cadeia de caracteres) mensagem de sucesso ou falha.
Exemplo:
call samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)