Snowflake Data Clean Rooms: Guia de referência da API do provedor

Este guia descreve as APIs de desenvolvedor que permitem que um provedor crie, configure e compartilhe uma sala limpa. Todas as funções residem dentro do seguinte esquema:

samooha_by_snowflake_local_db.provider
Copy

Configuração do ambiente

Execute os seguintes comandos para configurar o ambiente Snowflake antes de usar as APIs de desenvolvedor para trabalhar com uma Snowflake Data Clean Room. Se você não tiver a função SAMOOHA_APP_ROLE, entre em contato com o administrador de sua conta.

use role samooha_app_role;
use warehouse app_wh;
Copy

Cria um nome para a sala limpa. O nome da sala limpa pode conter apenas caracteres alfanuméricos. O nome da sala limpa não pode conter caracteres especiais, exceto espaços e sublinhados.

set cleanroom_name = 'Test Cleanroom 1';  -- This must only have alphanumeric characters.
Copy

Crie uma sala limpa

Use os seguintes comandos para criar e excluir uma sala limpa:

provider.cleanroom_init

Descrição: Cria uma sala limpa em sua conta. Você pode dar à sala limpa um nome com apenas caracteres alfanuméricos e espaços. Você também precisa informar a distribuição da sala limpa para especificar se esta é uma sala limpa de teste que você pretende compartilhar apenas dentro da sua organização (INTERNAL) ou uma sala limpa de produção que você pretende compartilhar externamente com outras organizações (EXTERNAL).

Se uma distribuição não for especificada, o padrão será INTERNAL.

Você pode transformar uma sala limpa INTERNAL em uma sala limpa EXTERNAL usando:

alter application package samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
Copy

Nota

A distribuição pode ser EXTERNAL ou INTERNAL. Se uma sala limpa for marcada como distribuição EXTERNAL, o Snowflake precisa realizar uma verificação de segurança automatizada antes que ela possa ser compartilhada com colaboradores. Consulte provider.set_default_release_directive para obter mais detalhes.

Entrada: cleanroom_name (cadeia de caracteres), distribution (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
Copy

provider.set_default_release_directive

Descrição: Define uma diretiva de lançamento para a sala limpa, ou seja, a versão e o patch que os colaboradores receberão.

Por padrão, 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, ela só pode ser chamada quando a verificação de segurança da sala limpa for movida para um estado APPROVED. Para exibir o status atual da verificação, chame:

show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
Copy

Entrada: cleanroom_name (cadeia de caracteres), version (cadeia de caracteres), patch (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
Copy

provider.drop_cleanroom

Descrição: Uma sala limpa existente pode ser descartada pelo criador. Isso exclui a sala limpa completamente, o que significa que os consumidores que a instalaram não poderão mais acessá-la ou utilizá-la.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
Copy

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.

provider.register_db

Descrição: Executa com os direitos de chamadores e permite que administradores de contas registrem bancos de dados para que fiquem visíveis no aplicativo da Snowflake Data Clean Room. A capacidade de SELECT é concedida em todos os esquemas e tabelas no banco de dados e no aplicativo nativo de Snowflake Data Clean Room (SAMOOHA_BY_SNOWFLAKE).

Entrada: db_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.register_db('SAMOOHA_SAMPLE_DATABASE');
Copy

library.register_schema

Descrição: semelhante a register_db, mas opera em nível de esquema. Uma matriz ou cadeia de caracteres representando o nome do esquema totalmente qualificado pode ser passado, e seleções de concessão para a função SAMOOHA_APP_ROLE são feitas, permitindo que o usuário vincule os objetos no esquema à sala limpa.

Se você quiser registrar um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS), use library.register_managed_access_schema.

Entrada: schema_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.register_managed_access_schema

Descrição: semelhante a register_schema, mas registra um esquema que foi criado com o parâmetro WITH MANAGED ACCESS. Uma matriz ou cadeia de caracteres representando o nome do esquema totalmente qualificado pode ser passado, e seleções de concessão para a função SAMOOHA_APP_ROLE são feitas, permitindo que o usuário vincule os objetos no esquema à sala limpa.

Entrada: schema_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.register_table_or_view

Descrição: registra tabelas e exibições de todos os tipos.

Entrada: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)

Saída mensagem de sucesso (string)

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

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

library.register_table

Descrição: Semelhante a register_db, mas opera ao nível de tabela. 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.

Se você quiser registrar tabelas em um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS), use library.register_managed_access_table.

Entrada: table_name (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_managed_access_table

Descrição: semelhante a register_table, mas registra tabelas que foram criadas com 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.

Entrada: table_name (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_view

Descrição: semelhante a register_db, mas opera em 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 você quiser registrar exibições em um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS), use library.register_managed_access_view.

Entrada: view_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_managed_access_view

Descrição: semelhante a register_view, mas registra exibições que foram criadas com 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.

Entrada: view_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_db

Descrição: Inverte o procedimento register_db e remove as concessões ao nível de banco de dados concedidas à função SAMOOHA_APP_ROLE e ao aplicativo nativo de Snowflake Data Clean Room. Isso também remove qualquer banco de dados do menu suspenso de UI.

Entrada: db_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
Copy

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 você quiser cancelar o registro de um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS), use library.unregister_managed_access_schema.

Entrada: schema_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.unregister_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.unregister_managed_access_schema

Descrição: semelhante a unregister_schema, mas cancela o registro em um esquema que foi criado com o parâmetro WITH MANAGED ACCESS.

Entrada: schema_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.unregister_table_or_view

Descrição: cancela o registro de tabelas e exibições de todos os tipos.

Entrada: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)

Saída mensagem de sucesso (string)

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

library.unregister_table

Descrição: semelhante a unregister_db, mas opera em nível de 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 você quiser cancelar o registro de tabelas em um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS), use library.unregister_managed_access_table.

Entrada: table_name (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_managed_access_table

Descrição: semelhante a unregister_table, mas cancela o registro de tabelas em um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS).

Entrada: table_name (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_view

Descrição: semelhante a unregister_db, mas opera em 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 você quiser cancelar o registro de exibições em um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS), use library.unregister_managed_access_view.

Entrada: view_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_managed_access_view

Descrição: semelhante a unregister_view, mas cancela o registro de exibições em um esquema de acesso gerenciado (ou seja, um esquema criado com o parâmetro WITH MANAGED ACCESS).

Entrada: view_name (array)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

Como adicionar conjuntos de dados e criar políticas

Use os seguintes comandos para adicionar dados e configurar políticas para a sala limpa.

provider.restrict_table_options_to_consumers

Descrição: controla se um consumidor específico pode acessar uma tabela na sala limpa.

O segundo argumento é um objeto JSON, onde cada par nome/valor é o nome de uma tabela e uma matriz de consumidores que podem acessá-la. Cada consumidor é especificado usando seu localizador de conta.

Entrada: cleanroom_name(string), access_details(variant)

Saída: mensagem de sucesso (string)

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

provider.set_join_policy

Descrição: Especifica em quais colunas o consumidor tem permissão para realizar uma junção ao executar modelos na sala limpa. Observe que a política de coluna é somente substituição, portanto, se a função for chamada novamente, a política de coluna definida anteriormente será completamente substituída pela atual.

Observe que as verificações são realizadas examinando o argumento where_clause para um modelo SQL Jinja ou quaisquer argumentos aos quais o filtro join_policy tenha sido adicionado. Esta verificação procura por colunas não autorizadas. Consultas com curingas podem não ser detectadas usando essas verificações, e ainda assim é preciso ter cautela ao projetar o modelo de análise.

Por padrão, as verificações são realizadas em argumentosSQL Jinja chamados where_clause. Certifique-se de usar esta tag para habilitar esta verificação.

Entrada: cleanroom_name (cadeia de caracteres), table_and_col_names (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

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

Modelos

Use os seguintes comandos para adicionar os modelos/análises compatíveis nesta sala limpa.

provider.add_templates

Descrição: Adiciona uma lista de modelos predefinidos usando seus identificadores de nome. Exemplos incluem “prod_overlap_analysis” e “prod_provider_data_analysis”.

Entrada: cleanroom_name (cadeia de caracteres), template_names (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.add_templates($cleanroom_name, ['prod_overlap_analysis']);
Copy

provider.view_template_definition

Descrição: Dado o nome do modelo, recupera a definição do modelo da sala limpa. Isso ajuda o usuário a inspecioná-lo visualmente e determinar quais parâmetros ele precisa passar ao executar o modelo.

Entrada: cleanroom_name (cadeia de caracteres), template_name (cadeia de caracteres)

Saída: A definição do modelo (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
Copy

provider.clear_template

Descrição: Remove um modelo especificado (referido pelo nome) da sala limpa.

Entrada: cleanroom_name (cadeia de caracteres), template_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.clear_template($cleanroom_name, 'prod_custom_template');
Copy

provider.clear_all_templates

Descrição: Remove todos os modelos adicionados à sala limpa. Depois que ele for chamado, os modelos precisarão ser adicionados novamente.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
Copy

provider.set_column_policy

Descrição: Define em quais colunas de dados o consumidor pode realizar operações. Isso só deve ser chamado depois que o modelo for adicionado. Esta também é uma função de modelo, portanto as entradas precisam estar no formato template_name:full_table_name:column_name. Observe que a política de coluna é somente substituição, portanto, se a função for recuperada, a política de coluna definida anteriormente será completamente substituída pela atual.

A API da política de coluna não deve ser chamada em colunas de identidade como e-mail. Ela deve ser usada somente em colunas agregadas e agrupadas.

Observe que as verificações são realizadas analisando a consulta SQL a ser executada nos dados para quaisquer colunas não autorizadas. Consultas com curingas podem não ser detectadas usando essas verificações, e ainda assim é preciso ter cautela ao projetar o modelo de análise.

Por padrão, as verificações são realizadas em argumentos SQL Jinja chamados dimensions ou measure_columns. Certifique-se de usar essas tags para habilitar essa verificação.

Como alternativa, você pode usar as tags join_policy e column_policy no modelo SQL Jinja para impor políticas de segurança contra argumentos SQL Jinja personalizados.

Entrada: cleanroom_name (cadeia de caracteres), analysis_and_table_and_columns (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

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',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:CAMPAIGN']);
Copy

provider.add_custom_sql_template

Descrição: Adiciona um modelo SQL Jinja 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. Se você quiser editar um modelo existente, passe o nome do modelo existente como um argumento para a API.

Se o consumidor estiver usando o modelo para ativar os resultados de volta para o 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.

  • A definição do modelo deve criar uma tabela que começa com cleanroom.activation_data_. Por exemplo, CREATE TABLE cleanroom.activation_data_analysis_results AS ... .

  • A definição do 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'.

Em modelos SQL Jinja, existem dois argumentos especiais:

  • source_table: uma matriz de tabelas do lado do provedor

  • my_table: uma matriz de tabelas do lado do consumidor

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.

Além disso, para que “column_policy” e “join_policy” realizem verificações nas solicitações de análise do consumidor, todos os nomes de colunas devem ser referenciados como dimensions ou measure_columns no modelo SQL Jinja. Certifique-se de usar essas tags para se referir às colunas que deseja verificar nos modelos SQL Jinja personalizados por padrão.

Alternativamente, qualquer argumento em um modelo SQL Jinja personalizado pode ser verificado 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 um 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 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 apenas com cautela, visto que ele permite que os colaboradores coloquem SQL puro no modelo.

Se você não especificar uma lista de consumidores, todos os consumidores poderão usar o modelo personalizado. Se você usar o parâmetro para especificar uma lista de consumidores, somente esses consumidores poderão usar o modelo na sala limpa.

Entrada: cleanroom_name(string), template_name(string), template(string), differential_privacy_sensitivity(float, OPTIONAL), consumer_list(array, OPTIONAL)

Saída: mensagem de sucesso (cadeia de caracteres)

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

provider.restrict_template_options_to_consumers

Descrição: controla se um consumidor específico pode usar um modelo na sala limpa.

O segundo argumento é um objeto JSON, onde cada par nome/valor é o nome de um modelo e uma matriz de consumidores que podem usá-lo. Cada consumidor é especificado usando seu localizador de conta.

Entrada: cleanroom_name(string), access_details(variant)

Saída: mensagem de sucesso (string)

Exemplo:

call samooha_by_snowflake_local_db.provider.restrict_template_options_to_consumers(
    $cleanroom_name,
    {
        'prod_template_1': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
    }
);
Copy

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 só é adicionado a uma sala limpa 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.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: request_id(string), consumer_identifier(string), template_name(string), template_definition(string), status(string)

Exemplo:

CALL samooha_by_snowflake_local_db.provider.list_template_requests('dcr_cleanroom');
Copy

provider.approve_template_request

Descrição: aprova uma solicitação para adicionar um modelo à sala limpa. Para obter o argumento <request_id>, execute o comando provider.list_template_requests para recuperar o UUID da solicitação.

Entrada: cleanroom_name (string), request_id (string)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

CALL samooha_by_snowflake_local_db.provider.approve_template_request('dcr_cleanroom', 
    '01b4d41d-0001-b572');
Copy

provider.reject_template_request

Descrição: rejeita uma solicitação para adicionar um modelo à sala limpa. Para obter o argumento <request_id>, execute o comando provider.list_template_requests para recuperar o UUID da solicitação.

Entrada: cleanroom_name (string), request_id (string), reason_for_rejection(string)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

CALL samooha_by_snowflake_local_db.provider.reject_template_request('dcr_cleanroom',
  '01b4d41d-0001-b572',
  'Failed security assessment');
Copy

Como configurar quem pode executar análises

Use os seguintes comandos para configurar quem pode executar análises na sala limpa. Você pode especificar o provedor (criador da sala limpa), o consumidor (instalador da sala limpa) ou ambos.

provider.enable_provider_run_analysis

Descrição: Permite que o provedor (criador da sala limpa) execute análises na sala limpa (isso é desabilitado por padrão).

Nota

Muito importante: isso precisa ser chamado depois do provedor.add_consumer 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.

Entrada: cleanroom_name (cadeia de caracteres), consumer_account_locator (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.enable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
Copy

provider.disable_provider_run_analysis

Descrição: Desabilita o provedor (criador de sala limpa) de executar análises na sala limpa (isso é desabilitado por padrão).

Nota

Muito importante: isso precisa ser chamado depois do provedor.add_consumer 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.

Entrada: cleanroom_name (cadeia de caracteres), consumer_account_locator (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.disable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
Copy

provider.enable_consumer_run_analysis

Descrição: Permite que o consumidor (instalador da sala limpa) execute análises na sala limpa (isso é habilitado por padrão).

Nota

Muito importante: isso precisa ser chamado depois do provedor.add_consumer 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.

Entrada: cleanroom_name (cadeia de caracteres), consumer_account_locator (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']); 
Copy

provider.disable_consumer_run_analysis

Descrição: Desabilita o consumidor (instalador da sala limpa) de executar análises na sala limpa (isso é habilitado por padrão).

Nota

Muito importante: isso precisa ser chamado depois do provedor.add_consumer 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.

Entrada: cleanroom_name (cadeia de caracteres), consumer_account_locator (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']); 
Copy

library.is_provider_run_enabled

Descrição: Verifica se esta sala limpa tem Provider Run Analysis habilitado. Nota: a aprovação explícita ainda precisa ser dada chamando consumer.enable_templates_for_provider_run (Consulte abaixo).

Entrada: cleanroom_name (cadeia de caracteres)

Saída: mensagem habilitada (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
Copy

biblioteca.is_consumer_run_enabled

Descrição: Verifica se esta sala limpa tem Consumer Run Analysis habilitado. Este sinalizador determina se o consumidor da sala limpa (instalador) pode executar análises ou atuar como um colaborador de dados.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: mensagem habilitada (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
Copy

Encadeamentos de modelos

Use os seguintes comandos para criar e gerenciar cadeias de modelos. Para obter informações gerais sobre o uso de cadeias de modelos, consulte Como usar APIs do desenvolvedor para executar modelos sequencialmente.

provider.add_template_chain

Descrição: cria uma nova cadeia de modelos. Os modelos devem existir antes de serem adicionados à cadeia de modelos.

Entrada: cleanroom_name(string), template_chain_name(string), templates(array of objects)

O objeto JSON que representa um modelo pode conter os seguintes campos:

  • template_name (string) - Especifica o modelo que está sendo adicionado à cadeia de modelos. O modelo já deve existir.

  • cache_results (boolean) - 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 (string) - Quando cache_results = TRUE, especifica o nome da tabela Snowflake onde os resultados do modelo são armazenados.

  • jinja_output_table_param (string) - Quando cache_results = TRUE, especifica o nome do parâmetro Jinja que outros modelos devem incluir para aceitar os resultados armazenados em output_table_name.

  • cache_expiration_hours (inteiro) - Quando cache_results = TRUE, especifica o número de horas antes que os resultados no cache sejam descartados. Quando o cache expira, na próxima vez que a cadeia de modelos for executada, o cache será atualizado com os resultados do modelo.

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.add_template_chain(
  'collab_clean_room',
  '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
    }
  ]
);
Copy

provider.view_added_template_chains

Descrição: exibe as cadeias de modelos atualmente ativas na sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: as cadeias de modelos adicionadas (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
Copy

provider.view_template_chain_definition

Descrição: retorna os atributos de uma cadeia de modelos.

Entrada: cleanroom_name (string), template_chain_name (string)

Saída: a definição da cadeia de modelos (string)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_template_chain_definition($cleanroom_name, 'insights_chain');
Copy

provider.clear_template_chain

Descrição: remove uma cadeia de modelos especificada (referida pelo seu nome) da sala limpa.

Entrada: cleanroom_name(string), template_chain_name(string)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'insights_chain');
Copy

provider.clear_all_template_chains

Descrição: remove todas as cadeias de modelos que foram adicionadas à sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.clear_all_template_chains($cleanroom_name);
Copy

Execução de análises como um criador de sala limpa

provider.submit_analysis_request

Descrição: A execução de análises como um provedor de sala limpa acontece por meio do envio de uma solicitação de análise. Essa solicitação de análise passa pela sala limpa e é verificada em relação às políticas de segurança do consumidor. Depois que as verificações de segurança e as camadas de privacidade diferencial permitem que a análise seja realizada, ela é executada na sala limpa e os resultados são armazenados com segurança dentro dela.

Ao permitir que o provedor execute análises, uma chave criptográfica é adicionada à sala limpa, que somente o provedor conhece. Essa chave é usada para criptografar os resultados da análise antes de retornar ao locatário do provedor, onde é então descriptografada usando a chave segura. Isso garante que ninguém, exceto o provedor, possa ver os resultados de uma análise solicitada pelo provedor.

Entrada: cleanroom_name (cadeia de caracteres), consumer_account_locator (cadeia de caracteres), template_name (cadeia de caracteres), consumer_tables (matriz), provider_tables (matriz), analysis_arguments (objeto)

Saída: ID de solicitação (cadeia de caracteres)

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']                                         
    ));

-- This API returns a request ID that we save into a local variable.
set request_id = '<REQUEST_ID';
Copy

provider.check_analysis_status

Descrição: Depois que uma solicitação de análise for enviada, use esta API para verificar o status da solicitação. A solicitação pode levar até 1 minuto após o envio para aparecer. Uma vez feito isso, o status aparece como COMPLETED.

Entrada: cleanroom_name (cadeia de caracteres), request_id (cadeia de caracteres), consumer_account_locator (cadeia de caracteres)

Saída: status (cadeia de caracteres)

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>'
);
Copy

provider.get_analysis_result

Descrição: Assim que o status da análise aparecer como COMPLETED para um determinado ID de solicitação, os resultados para um request_id podem ser obtidos usando esta API. Isso irá descriptografar os resultados com a chave secreta criada em sua conta durante a ativação da análise e gerar os resultados da análise.

Entrada: cleanroom_name (cadeia de caracteres), request_id (cadeia de caracteres), consumer_account_locator (cadeia de caracteres)

Saída: resultados da análise (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.get_analysis_result(
    $cleanroom_name, 
    $request_id, 
    '<CONSUMER_ACCOUNT>'
);
Copy

Compartilhamento com o consumidor

Use os seguintes comandos para compartilhar uma sala limpa com os consumidores.

provider.add_consumers

Descrição: adiciona contas de consumidor à sala limpa. Localizadores de conta de consumidor únicos ou múltiplos e nomes de conta são adicionados por meio de parâmetros de cadeia de caracteres contendo valores separados por vírgulas. Você também pode adicionar contas com múltiplas chamadas ao provider.add_consumers.

Opcionalmente, um sinalizador booliano pode ser passado para indicar se a privacidade diferencial deve ser habilitada para esta sala limpa. Por padrão, a privacidade diferencial não é habilitada para nenhuma sala limpa.

Entrada: cleanroom_name(string), consumer_account_locators(string), consumer_account_names(string), enable_differential_privacy(boolean, optional, default: FALSE)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo 1:

call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'IMA38718', 'PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778');
Copy

No exemplo 1, a conta é locator=IMA38718, accountname=PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778.

Exemplo 2:

call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'IMA38718,LEB88915', 'PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778,PM.CLEANROOMAWSUSWEST21');
Copy

No exemplo 2, a primeira conta é locator=IMA38718, accountname=PKBYKUM.SAMOOHA_MANAGED_ACCOUNT_DEMO_642778. A segunda conta é locator=LEB88915, accountname=PM.CLEANROOMAWSUSWEST21.

provider.create_cleanroom_listing

Descrição: Depois que uma sala limpa for configurada, crie uma listagem privada com ela no Snowflake Marketplace e compartilhe-a 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 organização e conta.

Nota

Para usar este procedimento, você precisa ter definido a diretiva de liberação. Consulte provider.set_default_release_directive para obter mais detalhes.

Entrada: cleanroom_name (cadeia de caracteres), consumer_account_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.create_cleanroom_listing($cleanroom_name, <consumerorg.consumeracct>);
Copy

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 esteja em uma região diferente da sua conta. O preenchimento automático entre nuvens também é conhecido como preenchimento automático de listagem (LAF).

Nota

Um administrador do Snowflake com a função ACCOUNTADMIN deve habilitar o preenchimento automático entre nuvens em sua conta Snowflake antes para poder executar este comando. Para obter instruções sobre como habilitar o preenchimento automático entre nuvens na conta Snowflake, consulte Colaboração 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.

Após habilitar o preenchimento automático entre nuvens para a sala limpa, você pode adicionar consumidores à sua listagem normalmente usando o comando provider.create_cleanroom_listing. A listagem é replicada automaticamente para nuvens e regiões remotas, conforme necessário.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.enable_laf_for_cleanroom($cleanroom_name);
Copy

provider.view_cleanrooom_scan_status

Descrição: Exibe o status da verificação de uma sala limpa com DISTRIBUTION definido como EXTERNAL. A verificação precisa ser marcada como “APPROVED” antes que a diretiva de liberação padrão possa ser definida e a sala limpa compartilhada com os colaboradores.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: status da verificação (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name);
Copy

Funções para carregar código Python em sala limpa

provider.load_python_into_cleanroom

Descrição: Carrega confidencialmente qualquer função Python na sala limpa. Qualquer código carregado na sala limpa usando esta API não será visível ao consumidor. A função resultante pode ser chamada dentro de qualquer modelo SQL Jinja como sala limpa.

Nota

Este procedimento adiciona seu código Python à sala limpa como um patch na versão existente. Isso reacionará a verificação de segurança e você pode ter que esperar que ela seja APPROVED antes de compartilhar a versão mais recente com os colaboradores. Se você fizer isso, chame provider.set_default_release_directive antes de compartilhar a sala limpa com provedores com a versão/patch mais recente. Consulte a documentação do aplicativo nativo Snowflake para obter mais detalhes.

Entrada: cleanroom_name (cadeia de caracteres), function_name (cadeia de caracteres), arguments (matriz), packages (matriz), ret_type (cadeia de caracteres), handler (cadeia de caracteres), code (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

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)
    $$
);
Copy

Métodos de registro da UI da sala limpa

Use os seguintes comandos para registrar uma sala limpa carregada com análises personalizadas no aplicativo da Web de uma Snowflake Data Clean Room na aba Análise personalizada.

provider.add_ui_form_customizations

Descrição:: Adiciona personalizações ao formulário de UI para salas limpas que você deseja registrar no aplicativo da Web para seus consumidores. No mínimo, você deve especificar valores para display_name, description e methodology.

As personalizações permitidas são:

  • type: Um dos seguintes elementos de UI:

    • boolean: Seletor verdadeiro/falso

    • integer: Use as setas para alterar o número

    • multiselect: Selecione vários itens de um menu suspenso

    • dropdown: Selecione um item de um menu suspenso

    • date: Seletor de data

    • any: Campo de entrada de texto regular

  • choices: Lista de opções disponíveis para tipos de menu suspenso e seleção múltipla

  • default: Qualquer valor padrão

  • display_name (obrigatório): Nome de exibição do elemento de UI

  • description (obrigatório): Descrição que aparece sob o nome

  • methodology (obrigatório): Descrição de como o consumidor deve usar o formulário para executar uma análise.

  • infoMessage: Mensagem informativa que é exibida ao passar o mouse sobre um ícone de “i” ao lado do nome

  • size: Escolha o tamanho do elemento entre XS, S, M, L e XL

  • required: Indica se o elemento é obrigatório. Especificar TRUE ou FALSE.

  • group: Coloque o mesmo valor para vários elementos para agrupá-los todos juntos no formulário de UI

  • render_table_dropdowns: Controla se as listas suspensas padrão que permitem aos usuários selecionar tabelas aparecem no modelo. Se não for especificado, um menu suspenso será exibido para as tabelas de provedores e consumidores. Se você quiser uma lista suspensa que consista em todas as tabelas de provedor ou consumidor, mas não quiser listá-las, use o parâmetro references.

    O valor de render_table_dropdowns é um dicionário que consiste nas seguintes chaves:

    • render_consumer_table_dropdown: Se FALSE, a lista suspensa padrão para tabelas de consumidores fica oculta. O padrão é TRUE.

    • render_provider_table_dropdown: Se FALSE, a lista suspensa padrão para tabelas de provedores fica oculta. O padrão é TRUE.

    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 com as tabelas desejadas. Para obter mais detalhes 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 que estão disponíveis na sala limpa. Permite que os usuários selecionem tabelas e colunas ao executar uma análise no aplicativo da web sem precisar especificar cada tabela ou coluna individualmente ao criar a interface do usuário.

    Ele tem os seguintes valores de cadeia de caracteres possíveis:

    • PROVIDER_TABLES: a lista suspensa consiste em todas as tabelas do provedor na sala limpa.

    • CONSUMER_TABLES: a lista suspensa consiste em todas as tabelas do consumidor na sala limpa.

    • PROVIDER_COLUMN_POLICY: a lista suspensa consiste nas colunas nas políticas de colunas do provedor, por exemplo, as colunas que podem ser filtradas. Se especificado, você também deve incluir o parâmetro provider_parent_table_field para identificar qual tabela de provedor contém as políticas de coluna.

    • PROVIDER_JOIN_POLICY: a lista suspensa consiste nas colunas nas políticas de junção do provedor, ou seja, as colunas na tabela do provedor que o consumidor pode usar como uma chave de junção. Se especificado, você também deve incluir o parâmetro provider_parent_table_field para identificar qual tabela de provedor contém as políticas de junção.

    • CONSUMER_COLUMNS: a lista suspensa consiste nas colunas nas políticas de junção do consumidor, ou seja, as colunas na tabela do consumidor que o analista pode usar como uma chave de junção. Se especificado, você também deve incluir o parâmetro consumer_parent_table_field para identificar qual tabela de consumidor contém as políticas de junção.

  • provider_parent_table_field: especifica o nome de um campo UI que permite que um usuário selecione uma tabela de provedor. Obrigatório se o parâmetro references especificar PROVIDER_COLUMN_POLICY ou PROVIDER_JOIN_POLICY.

    Por exemplo, se a_provider_table for o nome de um campo de UI que permite ao analista selecionar uma tabela de provedor, então o campo de UI que permite ao usuário selecionar colunas de uma tabela de provedor pode incluir o par nome/valor 'provider_parent_table_field': 'a_provider_table'.

  • consumer_parent_table_field: especifica o nome de um campo UI que permite que um usuário selecione uma tabela de provedor. Obrigatório se o parâmetro references especificar CONSUMER_COLUMNS.

    Por exemplo, se a_consumer_table for o nome de um campo de UI que permite ao analista selecionar uma tabela de consumidor, então o campo de UI que permite ao usuário selecionar colunas de uma tabela de consumidor pode incluir o par nome/valor 'consumer_parent_table_field': 'a_consumer_table'.

  • warehouse_hints: Personalização opcional que controla que tipo de warehouse a conta do consumidor usará para executar análises. Por exemplo, para a maioria dos casos de uso de aprendizado de máquina, a Snowflake recomenda especificar um warehouse otimizado para o Snowpark. Para valores válidos para warehouse_size, consulte CREATE WAREHOUSE.

As personalizações visuais são:

  • measure_columns: pontos de dados quantitativos que são exibidos na saída. Essas colunas incluem métricas e dimensões que permitem uma análise detalhada dos dados.

  • default_output_type: o formato no qual os dados serão visualizados. Tipos suportados:

    • TABLE: exibe dados em formato tabular. Este é o tipo de saída padrão.

    • BAR: visualiza dados usando gráficos de barras, que são ideais para comparar diferentes categorias.

    • LINE: usa gráficos de linha para mostrar tendências ao longo do tempo ou dados contínuos.

    • PIE: representa dados como um gráfico de pizza, adequado para mostrar proporções ou porcentagens.

Entrada: nome do modelo (cadeia de caracteres), descrição do modelo (dicionário), personalizações (dicionário), configuração de saída (dicionário)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

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
        }
    },    
    {
        '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'
    }
);
Copy

provider.register_cleanroom_in_ui

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. Este método então o registra no aplicativo da Web para que os consumidores instalem, adicionem suas tabelas e executem quaisquer análises personalizadas que você tenha adicionado sem precisar 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.

Entrada: cleanroom_name (cadeia de caracteres), template name (cadeia de caracteres), consumer_account_locator (cadeia de caracteres), user_email (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)
Copy

provider.view_ui_registration_request_log

Descrição: Exibe a lista de solicitações geradas 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.

Entrada:

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
Copy

Métodos de obtenção de metadados de sala limpa

Use os seguintes comandos para mostrar as propriedades relevantes da sala limpa.

provider.describe_cleanroom

Descrição: Cria um resumo de texto com todas as informações sobre o que foi adicionado à sala limpa, incluindo modelos, conjuntos de dados e políticas.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: Cadeia de caracteres de descrição extensa da sala limpa (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
Copy

provider.view_provider_datasets

Descrição: Exibe todos os conjuntos de dados que foram adicionados à sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: Todos os nomes de conjuntos de dados do provedor na sala limpa (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
Copy

provider.view_join_policy

Descrição: Exibe as políticas de junção atualmente ativas na sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: A política de junção (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
Copy

provider.view_added_templates

Descrição: Exibe os modelos atualmente ativos na sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: Os modelos adicionados (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
Copy

provider.view_column_policy

Descrição: Exibe as políticas de coluna atualmente ativas na sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: A política de coluna (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
Copy

provider.view_consumers

Descrição: Exibe os consumidores com os quais a sala limpa foi compartilhada.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: Contas de consumidores com acesso à sala limpa (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
Copy

provider.view_cleanrooms

Descrição: Exibe todas as salas limpas criadas recentemente, classificadas pela data em que foram criadas.

Entrada:

Saída: Todas as salas limpas existentes ordenadas pela data de criação (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_cleanrooms();
Copy

provider.view_request_logs

Descrição: Exibe os logs de solicitação enviados pelos consumidores desta sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: Um conjunto de logs registrados das consultas sendo executadas na sala limpa (tabela)

Exemplo:

call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
Copy

Métodos auxiliares gerais

Use os métodos a seguir para ajudar a aproveitar a funcionalidade da sala limpa e os fluxos compatíveis.

provider.grant_reference_usage

Descrição: Permite que bancos de dados upstream com dados recebam reference_usage para a sala limpa.

Nota

Este comando deve ser usado somente com o aplicativo da Web.

Esta é uma concessão muito mais limitada do que as que existem em register_db. O uso deste procedimento é necessário ao adicionar visualizações ou UDTFs que referenciam dados de bancos de dados upstream, mas não permitirá que a função SAMOOHA_APP_ROLE consulte as tabelas reais ou mostre esses bancos de dados no menu suspenso do aplicativo da Web.

Este comando deve ser chamado em bancos de dados com dados usados em exibições vinculadas e UDTFs.

Entrada: database_names (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.grant_reference_usage(['<DATABASE_NAME>']);
Copy

provider.revoke_reference_usage

Descrição: Remove bancos de dados da lista de bancos de dados referenciados criados por provider.grant_reference_usage.

Nota

Este comando deve ser usado somente com o aplicativo da Web.

Entrada: database_names (matriz)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

call samooha_by_snowflake_local_db.provider.revoke_reference_usage(['<DATABASE_NAME>']);
Copy

provider.mount_request_logs_for_all_consumers

Descrição: dá aos provedores acesso às informações que chegam ao provedor dos consumidores de uma sala limpa.

Entrada: cleanroom_name (cadeia de caracteres)

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

CALL samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
Copy

library.enable_local_db_auto_upgrades

Descrição: habilita a tarefa, samooha_by_snowflake_local_db.admin.expected_version_task, que atualiza automaticamente o Snowflake Native App para Snowflake Data Clean Rooms conforme novas versões são lançadas.

Entrada: nenhuma

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

CALL samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
Copy

library.disable_local_db_auto_upgrades

Descrição: desabilita a tarefa, samooha_by_snowflake_local_db.admin.expected_version_task, que atualiza automaticamente o Snowflake Native App para Snowflake Data Clean Rooms conforme novas versões são lançadas.

Entrada: nenhuma

Saída: mensagem de sucesso (cadeia de caracteres)

Exemplo:

CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
Copy