Análises executadas pelo provedor

Visão geral

A configuração padrão da sala limpa permite que apenas o consumidor execute uma análise na sala limpa. No entanto, o provedor pode solicitar permissão do consumidor para executar um modelo específico em uma sala limpa específica usando dados do consumidor. A análise executada pelo provedor pode ser ativada e executada usando código ou a UI do Clean Rooms.

O diagrama a seguir mostra o fluxo de dados e os principais componentes em uma análise básica executada pelo provedor:

Direção do fluxo de dados básico em uma análise executada pelo provedor
  1. Em uma análise básica executada pelo provedor, o consumidor e o provedor vinculam os dados à sala limpa. Os dados de origem são vinculados à sala limpa como exibições privadas na conta em que os dados residem.

  2. Quando o provedor executa uma análise, os dados dele são compartilhados com o app da sala limpa na conta do consumidor. A análise é executada na conta do consumidor.

  3. Os resultados criptografados são temporariamente gravados no DB e na conta do consumidor.

  4. Os resultados criptografados são copiados para o compartilhamento de resultados da análise na conta do provedor (também chamado de compartilhamento de governança) e descriptografados. Como a análise é executada na conta do consumidor, sua cobrança é feita ao consumidor.

Para obter mais informações, consulte Snowflake Data Clean Rooms: objetos instalados.

Modelos que são compatíveis com análises executadas pelo provedor

Os seguintes modelos são compatíveis com análises executadas pelo provedor:

  • Audience Overlap & Segmentation

  • SQL Query (UI somente)

  • Modelos personalizados (somente na API)

Detalhes de faturamento e custo

As análises executadas pelo provedor são feitas na conta do consumidor, e os consumidores são cobrados por uma análise executada pelo provedor. Para parar de gerar custos das análises executadas pelo provedor, o consumidor deve desinstalar a sala limpa.

O consumidor pode estimar o número de créditos consumidos pelo provedor nos últimos N dias executando a seguinte consulta. Especifique o número de dias anteriores como um número negativo.

-- Estimate the number of credits consumed in the past 5 days.
SELECT * FROM TABLE(SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.PRA_CONSUMPTION_UDTF(-5));
Copy

Quando um provedor executa uma análise na UI do Clean Rooms, a sala limpa usa lógica de dimensionamento automático com base nos tamanhos dos conjuntos de dados para escolher um warehouse para a análise do provedor.

Quando um provedor cria e executa uma sala limpa usando a API, ele pode escolher explicitamente um tamanho e um tipo de warehouse a partir de um conjunto de valores permitidos especificados pelo consumidor.

Notas gerais

  • Os provedores podem ativar os resultados para sua própria conta usando a UI ou a API ou para provedores terceirizados se usarem a UI. Para obter informações sobre como habilitar a ativação e visualizar os resultados, consulte Ativação de resultados de consulta.

  • Se o consumidor e o provedor estiverem em regiões de nuvem diferentes, o preenchimento automático entre nuvens deve ser habilitado em ambas as contas e para ambas as salas limpas.

    Observe que as consultas entre nuvens executadas pelo provedor podem levar algum tempo para serem executadas, pois os dados de origem do provedor devem ser replicados do provedor para o consumidor e os resultados da consulta do consumidor para o provedor, em todas as regiões da nuvem.

  • Todos os modelos executados pelo provedor exigem nomes de coluna ou aliases para todas as colunas geradas nos resultados. Se uma coluna for agregada (por exemplo, SUM(col1)) ou chamar uma função personalizada (por exemplo, cleanroom.my_function(p.hashed_email)), o modelo deverá especificar explicitamente um alias de nome de coluna, conforme mostrado aqui:

    SELECT SUM(col1) AS TOTAL FROM my_db.my_sch.T; -- Correct
    SELECT SUM(col1)          FROM my_db.my_sch.T; -- Error: aggregated column needs an explicit alias.
    
    Copy

Análises executadas pelo provedor na UI

Veja como habilitar a análise executada pelo provedor em uma nova sala limpa ao usar a UI do Clean Rooms:

  1. O provedor :ref:` cria e configura uma sala limpa <label_dcr_create_cleanroom>`, usando um dos :ref:` modelos compatíveis <label-dcr_templates_that_support_provider_analysis>`. Configure a sala limpa até a etapa Share Clean Room.

  2. Na etapa Share Clean Room da configuração da sala limpa, o provedor seleciona Enable run analysis & query ao lado da própria conta para habilitar a execução de todos os modelos nesta sala limpa que são compatíveis com análise executada pelo provedor.

    • Essa configuração não pode ser alterada após a criação de uma sala limpa; se você quiser alterar a permissão de uma conta específica para executar consultas em uma sala limpa publicada, deverá excluir a sala limpa e criar uma nova.

  3. O consumidor :ref:` ingressa e configura a sala limpa <label-cleanrooms_web_app_install>` normalmente para todos os modelos nela contidos, incluindo quaisquer modelos compatíveis com a análise do provedor. Se o consumidor não quiser permitir que um provedor execute um modelo específico, poderá omitir os detalhes necessários para esse modelo.

    • Quando o consumidor ingressa na sala limpa, ele é avisado antes de ingressar que a análise executada pelo provedor está ativada para essa sala limpa.

    • O consumidor pode executar consultas assim que entrar na sala limpa, mas há um atraso de até 30 minutos antes que o provedor possa executar o modelo. Esse atraso de configuração ocorre apenas durante a etapa inicial de entrada; se o provedor adicionar posteriormente outros modelos executados pelo provedor, ele poderá executá-los assim que o consumidor configurar a sala limpa para esse modelo.

  4. Após a conclusão da etapa de junção, a sala limpa estará disponível para análises executadas pelo provedor e análises executadas pelo consumidor.

    Importante:

    • Os provedores devem aguardar cerca de 10 minutos após o consumidor instalar a sala limpa antes de poderem executar uma análise. O atraso se deve à configuração adicional em segundo plano necessária para análises executadas pelo provedor.

    • O consumidor é cobrado por todas as análises nesta sala limpa, sejam elas executadas pelo provedor ou pelo consumidor.

Análises executadas pelo provedor na API

Veja como habilitar a análise executada pelo provedor em uma nova sala limpa usando a API do Clean Rooms:

  1. Provedor

    1. Cria e configura a sala limpa, os dados e as políticas da maneira padrão.

    2. Adiciona consumidores da maneira padrão.

    3. Habilita a análise executada pelo provedor para contas de consumidores específicas na sala limpa chamando provider.enable_provider_run_analysis.

      Importante:

      • O provedor deve chamar provider.enable_provider_run_analysis após adicionar consumidores a uma sala limpa, mas antes que qualquer consumidor instale a sala limpa. Cada conta de consumidor deve aprovar esta solicitação para que os dados sejam acessíveis para análises executadas pelo provedor nesta sala limpa.

      • Sempre que o provedor alterar a configuração de análise executada pelo provedor para uma sala limpa, a sala limpa deverá ser reinstalada por todos os consumidores para que a alteração entre em vigor. Como pode ser difícil forçar todos os colaboradores a reinstalar uma sala limpa, é mais confiável que o provedor exclua uma sala limpa compartilhada e publicada ao alterar as permissões de análise e, em seguida, crie uma nova sala limpa com as permissões desejadas.

    4. Publica a sala limpa.

    5. Informa ao consumidor que a sala limpa está disponível, o nome da sala limpa e quais modelos você deseja executar na sala limpa.

  2. Consumidor

    1. Instala a sala limpa e vincula os dados da maneira padrão.

    2. Define quaisquer políticas de junção e coluna necessárias para os dados.

    3. Permite análises executadas pelo provedor para modelos específicos na sala limpa chamando consumer.enable_templates_for_provider_run (para vários modelos) ou consumer.approve_template (para um modelo).

      Nota

      Se o provedor alterar um modelo após o consumidor aprová-lo, o consumidor deverá aprová-lo novamente. Até que o modelo seja reaprovado, a versão antiga em cache do modelo aprovado será executada pelo provedor.

    4. (Opcional) Um consumidor pode limitar o tipo ou tamanho do warehouse disponível para análises executadas pelo provedor: consulte Restrição de limites de tamanho e tipo de warehouse.

    5. Informa ao provedor que ele instalou a sala limpa e aprovou as análises executadas pelo provedor.

  3. Provedor

    1. Depois que o consumidor instala a sala limpa, o provedor permite que as análises acessem os dados do consumidor, habilitando o compartilhamento de dados do consumidor para a conta do provedor. O processo para isso depende se o provedor e o consumidor estão na mesma região de nuvem ou em regiões diferentes:

      • Se o provedor e o consumidor estiverem na mesma região da nuvem, o provedor chama provider.mount_request_logs_for_all_consumers uma vez. Se uma nova conta de consumidor instalar a sala limpa posteriormente e o provedor quiser usar os dados do consumidor neste modelo, o provedor deverá executar este procedimento novamente para poder acessar esses dados.

      • Se o provedor e o consumidor estiverem em regiões de nuvem diferentes, deverão habilitar o preenchimento automático entre nuvens. Quando um provedor executa uma análise em várias regiões, a consulta pode demorar um pouco para ser concluída, pois os dados da consulta são enviados da região do provedor para a do consumidor e vice-versa.

    2. Chama provider.view_warehouse_sizes_for_template para verificar se o consumidor limitou o tipo e o tamanho do warehouse utilizado para a análise. Se o consumidor tiver limitado os tamanhos de warehouse para análises executadas pelo provedor, o provedor deverá especificar os valores permitidos para warehouse_type e warehouse_size na solicitação de análise na próxima etapa. Se o consumidor não tiver especificado limites de warehouse, esses campos serão opcionais na solicitação de análise. Para obter mais informações, consulte Restrição de limites de tamanho e tipo de warehouse.

    3. Executa a análise chamando provider.submit_analysis_request com o nome do modelo, os nomes das tabelas e os argumentos do modelo. Se o consumidor tiver especificado limites para tamanhos ou tipos de warehouse, o provedor também deverá especificar o tamanho e o tipo do warehouse na solicitação de análise.

      • Salve o ID da solicitação resultado por provider.submit_analysis_request; o ID é necessário para verificar o status e os resultados da análise.

    4. Verifica o status da análise chamando provider.check_analysis_status. Quando o status for relatado como COMPLETED, chame provider.get_analysis_result para obter os resultados da análise.

Restrição de limites de tamanho e tipo de warehouse

Como o consumidor é cobrado pelas análises executadas pelo provedor, pode determinar quais tamanhos e tipos de warehouse o provedor pode usar para executar uma análise em sua conta. Veja como um consumidor define as limitações de tamanho e tipo de warehouse e como um provedor escolhe um tamanho e tipo de warehouse ao executar uma análise:

  1. O consumidor chama consumer.set_provider_run_configuration e especifica quais tamanhos e tipos de warehouse um provedor pode usar para um modelo específico. No trecho de código a seguir, o consumidor limita os provedores a usar warehouses STANDARD de tamanho MEDIUM ou LARGE ao executar template_1:

    CALL samooha_by_snowflake_local_db.consumer.set_provider_run_configuration(
      $cleanroom_name,
      {
        'template_1': {
          'warehouse_type': 'STANDARD',
          'warehouse_size': ['MEDIUM', 'LARGE']}
      });
    
    Copy
  2. O provedor chama provider.view_warehouse_sizes_for_template para ver quais tamanhos e tipos de warehouse são permitidos para análises executadas pelo provedor naquele modelo.

    CALL samooha_by_snowflake_local_db.provider.view_warehouse_sizes_for_template(
      $cleanroom_name,
      'template_1',
      $consumer_account_loc
    );
    
    Copy
  3. O provedor especifica um tamanho e tipo de warehouse para usar na solicitação de execução de análise.

    CALL samooha_by_snowflake_local_db.provider.submit_analysis_request(
      $cleanroom_name,
      $consumer_locator_id,
      'template_1',
      ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
      ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
      object_construct(
        'dimensions', ['c.REGION_CODE'],
        'measure_type', ['AVG'],
        'measure_column', ['c.DAYS_ACTIVE'],
        'warehouse_type', 'STANDARD',      -- Any other value would cause the request to fail.
        'warehouse_size', 'LARGE'          -- Only MEDIUM and LARGE supported.
      )
    );
    
    Copy

Dica

Os procedimentos a seguir gerenciam o lado que pode executar uma análise na clean room:

Análise executada pelo consumidor (permitida por padrão): as alterações são aplicadas imediatamente.

  • provider.enable_consumer_run_analysis

  • provider.disable_consumer_run_analysis

Análise executada pelo provedor (desabilitada por padrão): as alterações exigem reinstalação pelo consumidor.

  • provider.enable_provider_run_analysis (requer aprovação do consumidor chamando consumer.enable_templates_for_provider_run)

  • provider.disable_provider_run_analysis

Instalar e executar o exemplo de código

Você pode baixar e instalar um exemplo completo para criar e executar uma análise executada pelo provedor. Para executar este exemplo, você precisa de duas contas Snowflake na mesma organização e região de hospedagem em nuvem com o ambiente Snowflake Data Clean Room instalado.

  1. Faça o download do exemplo de notebook.

  2. Instale o notebook nas suas contas de provedor e consumidor.

    Para carregar um notebook, faça o seguinte:

    1. Sign in to Snowsight.

    2. In the navigation menu, select Projects » Notebooks.

    3. Selecione + Notebook » Import .ipynb file.

    4. Selecione o arquivo .ipynb que você baixou.

    5. Dê ao arquivo o nome que desejar e escolha um banco de dados e um esquema.

    6. Mantenha o warehouse padrão APP_WH.

    7. Selecione Create.

    8. Para criar a sala limpa, abra o notebook na conta do provedor e preencha a parte do provedor.

    9. Abra o notebook na conta de consumidor e conclua a parte do consumidor para instalar e configurar a clean room e executar o modelo.

  3. Execute as ações do provedor e do consumidor conforme indicado, na ordem mostrada no notebook.