Use modelos de consultas

Os modelos de consultas da data clean room do BigQuery aceleram o tempo de obtenção de estatísticas e oferecem camadas adicionais de segurança e controlo para minimizar as preocupações com a exfiltração de dados. Ao pré-definir e limitar as consultas que podem ser executadas em salas limpas de dados, pode fazer o seguinte:

  • Ajude a evitar a fuga de dados confidenciais. Quando os subscritores que estão a executar consultas numa sala limpa têm maior flexibilidade para explorar, os proprietários de dados consideram que existe um risco mais elevado de exposição acidental ou intencional de informações confidenciais.

  • Simplifique a integração e a adoção para utilizadores com menos conhecimentos técnicos. Muitos fornecedores de dados esperam que os subscritores de clean rooms sejam menos competentes tecnicamente, especialmente na escrita de consultas SQL centradas na privacidade e na compreensão de como atribuir orçamentos de privacidade de forma adequada.

  • Garantir resultados analíticos consistentes para os subscritores de dados. Torna-se mais difícil aplicar regras específicas de análise de dados e validar a conformidade com os regulamentos de privacidade quando não existe forma de controlar as consultas que estão a ser executadas numa data clean room.

Os modelos de consultas permitem que os proprietários e os colaboradores de dados criem consultas predefinidas e aprovadas especificamente adaptadas aos exemplos de utilização da sala limpa de dados e publiquem estas consultas para consumo pelos subscritores. As consultas predefinidas usam funções de valor de tabela (TVFs) no BigQuery para permitir que uma tabela inteira ou campos específicos sejam transmitidos como parâmetros de entrada e devolvam uma tabela como saída.

Limitações

  • Os modelos de consultas só suportam um máximo de duas referências de dados, ou seja, os dados usados para definir a consulta da FTV e a entrada de parâmetros de dados aceite pela FTV.
    • Podem ser referenciadas várias tabelas ou vistas na definição da consulta da FTV, mas têm de pertencer todas ao mesmo proprietário ou parte de dados.
  • As TVFs de modelos de consultas só suportam tipos fixos TABLE e VIEW.
  • As definições de modelos de consultas estão sujeitas às mesmas limitações que as TVFs.

Antes de começar

Ative a API Analytics Hub para o seu Google Cloud projeto seguindo estes passos:

Consola

  1. Aceda à página da API Analytics Hub.

    Aceda à API Analytics Hub

  2. Na Google Cloud barra de ferramentas da consola, selecione o seu projeto.

  3. Se a API ainda não estiver ativada, clique em Ativar.

bq

Execute o comando gcloud services enable:

gcloud services enable analyticshub.googleapis.com

Funções necessárias

Para receber as autorizações de que precisa para realizar as tarefas neste documento, peça ao seu administrador para lhe conceder as seguintes funções do IAM:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para realizar as tarefas descritas neste documento. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para realizar as tarefas neste documento:

  • Crie ou elimine um TVF numa sala limpa de dados:
    • bigquery.routines.create no projeto
    • bigquery.routines.update no projeto
    • bigquery.routines.delete no projeto
  • Autorizar uma TVF: bigquery.datasets.update nos conjuntos de dados aos quais a rotina acede
  • Crie um modelo de consulta:
    • analyticshub.listings.subscribe no projeto
    • analyticshub.queryTemplates.create no projeto
  • Aprove um modelo de consulta:
    • bigquery.routines.create no projeto
    • bigquery.datasets.update nos conjuntos de dados aos quais a rotina acede
    • analyticshub.listings.create no projeto
    • analyticshub.queryTemplates.approve no projeto

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Adicione um TVF existente a uma sala limpa de dados

Pode adicionar um TVF existente a uma sala limpa de dados através da API Analytics Hub.

Use o projects.locations.dataExchanges.listings.create método.

O exemplo seguinte mostra como chamar o método projects.locations.dataExchanges.listings.create através do comando curl:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/listings?listingId=LISTING_ID -d
    '{"bigqueryDataset":{"dataset":"projects/PROJECT_ID/datasets/DATASET_ID","selectedResources":[{"routine":"projects/PROJECT_ID/datasets/DATASET_ID/tables/ROUTINE_ID"}],},"displayName":LISTING_NAME"}'

Substitua o seguinte:

  • DCR_PROJECT_ID: o ID do projeto onde foi criada a sala limpa de dados.
  • PROJECT_ID: o ID do projeto onde o conjunto de dados de origem estava contido.
  • DATASET_ID: o ID do conjunto de dados de origem.
  • LOCATION: a localização da sala limpa de dados.
  • CLEAN_ROOM_ID: o ID da sala limpa de dados.
  • LISTING_ID: o ID da ficha.
  • LISTING_NAME: o nome da ficha.
  • ROUTINE_ID: o ID da rotina.

Funções de modelo de consulta

Existem três funções principais para usar modelos de consultas de salas limpas de dados. Cada função tem fluxos de trabalho específicos, que são descritos mais adiante neste documento.

Fluxos de trabalho do criador de modelos

Enquanto criador de modelos de consultas, pode fazer o seguinte:

Adicione uma ficha a uma sala limpa de dados

Antes de criar um modelo de consulta, tem de adicionar dados a uma sala limpa de dados. Para criar uma ficha na sala de dados restrita, siga estes passos:

  1. Aceda à página Partilha (Centro de análise).

    Aceda à partilha (Analytics Hub)

  2. Clique no nome a apresentar da sala limpa de dados na qual quer criar o modelo de consulta.

  3. Clique em Adicionar dados e siga os passos para criar uma vista com regras de análise configuradas. Para instruções detalhadas, consulte o artigo Crie uma ficha (adicione dados).

    1. Para adicionar dados de outras partes, partilhe a sala limpa com outro colaborador fidedigno. Este contribuinte de dados também tem de adicionar dados à sala limpa para ser elegível para utilização num modelo de consulta.
  4. Defina controlos de saída de dados para a ficha.

  5. Defina os controlos de metadados para a ficha. Se quiser partilhar apenas os esquemas e as descrições dos dados adicionados no passo anterior (e não os dados partilhados propriamente ditos), selecione Excluir acesso à ficha do conjunto de dados associado.

  6. Reveja os detalhes da ficha.

  7. Clique em Adicionar dados. Os metadados da visualização de propriedade criada para os seus dados são agora adicionados à sala limpa.

Crie um modelo de consulta

Selecione uma das seguintes opções:

Consola

  1. Aceda à página Partilha (Centro de análise).

    Aceda à partilha (Analytics Hub)

  2. Clique no nome a apresentar da sala limpa de dados onde quer criar o modelo de consulta.

  3. Na clean room, aceda ao separador Modelos.

  4. Clique em Criar modelo.

  5. Introduza um nome e uma descrição para o modelo.

  6. Clicar em Seguinte.

  7. Pode ver os esquemas das visualizações adicionadas à clean room e propor uma definição de consulta.

    1. Certifique-se de que define a consulta com a CREATE TABLE FUNCTIONsintaxe suportada.
    2. Transmita a tabela completa ou a vista com definições fixas. Tem de definir a referência do caminho completo da tabela, incluindo o ID do projeto e o ID do conjunto de dados, a partir dos dados adicionados à sala limpa. Por exemplo:

      query_template1(t1 TABLE<year INT64>) AS (SELECT * FROM `project_id.dataset_id.table_id` WHERE year = table_id.year)
      
    3. Se aplicou regras de análise de privacidade aos dados, certifique-se de que esta TVF inclui sintaxe SQL específica da privacidade, por exemplo, SELECT WITH AGGREGATION_THRESHOLD.

  8. Reveja os detalhes do modelo.

  9. Para guardar o modelo sem o enviar para revisão, clique em Guardar. O modelo de consulta tem agora o estado RASCUNHO.

Pode atualizar o modelo de consulta ou enviar o modelo de consulta para revisão.

API

O exemplo seguinte mostra como criar um modelo de consulta com um comando CURL:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates?queryTemplateId=QUERY_TEMPLATE_ID -d
  'query_template {
  name: "query_template1",
  display_name: "query_template1",
  routine {
    definition_body: "QUERY_TEMPLATE_ID(TVF arguments) AS (TVF_DEFINITION)"
  }
}'

Substitua o seguinte:

  • DCR_PROJECT_ID: o ID do projeto onde foi criada a sala limpa de dados.
  • LOCATION: a localização da sala limpa de dados.
  • CLEAN_ROOM_ID: o ID da sala limpa de dados.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.
  • TVF_DEFINITION: a definição de TVF.

O seguinte exemplo de código mostra um exemplo de definition_body para a chamada API. Tem de definir a referência do caminho completo da tabela, incluindo o ID do projeto e o ID do conjunto de dados, a partir dos dados adicionados à sala limpa.

  query_template1(t1 TABLE<year INT64>) AS (SELECT * FROM `project_id.dataset_id.table_id` WHERE year = table_id.year)

O definition_body é análogo à definição de uma rotina. O texto definition_body anterior traduz-se na seguinte rotina:

  CREATE OR REPLACE TABLE FUNCTION <approvers_dataset>.query_template1(t1 TABLE, y INT64)
  AS (SELECT * FROM t1 WHERE year > y)

Pode atualizar o modelo de consulta ou enviar o modelo de consulta para revisão.

Atualize um modelo de consulta

Só pode atualizar um modelo de consulta se estiver no estado RASCUNHO. Se o modelo de consulta já tiver sido enviado para revisão, já não pode modificá-lo.

Para atualizar um modelo de consulta, selecione uma das seguintes opções:

Consola

  1. Aceda à página Partilha (Centro de análise).

    Aceda à partilha (Analytics Hub)

  2. Clique no nome a apresentar da data clean room que contém o modelo de consulta.

  3. Na clean room, aceda ao separador Modelos.

  4. Na linha do modelo que quer atualizar, clique em Ações > Editar modelo.

  5. Atualize os detalhes do modelo e a definição da consulta conforme necessário.

  6. Clicar em Seguinte.

  7. Reveja o modelo de consulta e clique em Guardar para guardar as alterações sem enviar o modelo para revisão.

API

O exemplo seguinte mostra como atualizar um modelo de consulta com um comando CURL:

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X PATCH https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates/QUERY_TEMPLATE_ID?updateMask=display_name -d
    'query_template {
    display_name: "query_template1"
  }'

Substitua o seguinte:

  • DCR_PROJECT_ID: o ID do projeto onde foi criada a sala limpa de dados.
  • LOCATION: a localização da sala limpa de dados.
  • CLEAN_ROOM_ID: o ID da sala limpa de dados.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Envie um modelo de consulta para revisão

Selecione uma das seguintes opções:

Consola

  1. Aceda à página Partilha (Centro de análise).

    Aceda à partilha (Analytics Hub)

  2. Clique no nome a apresentar da data clean room que contém o modelo de consulta.

  3. Na clean room, aceda ao separador Modelos.

  4. Na linha do modelo que quer enviar para revisão, clique em Ações > Enviar para revisão. O modelo tem agora o estado Requer revisão.

API

O exemplo seguinte mostra como enviar um modelo de consulta para revisão com um comando CURL:

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates/QUERY_TEMPLATE_ID:submit

Substitua o seguinte:

  • DCR_PROJECT_ID: o ID do projeto onde foi criada a sala limpa de dados.
  • LOCATION: a localização da sala limpa de dados.
  • CLEAN_ROOM_ID: o ID da sala limpa de dados.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Elimine um modelo de consulta

Só pode eliminar um modelo de consulta se estiver no estado RASCUNHO. Se o modelo de consulta já tiver sido enviado para revisão, já não o pode eliminar.

Selecione uma das seguintes opções:

Consola

  1. Aceda à página Partilha (Centro de análise).

    Aceda à partilha (Analytics Hub)

  2. Clique no nome a apresentar da data clean room que contém o modelo de consulta.

  3. Na clean room, aceda ao separador Modelos.

  4. Na linha do modelo que quer eliminar, clique em Ações > Eliminar modelo.

API

O exemplo seguinte mostra como eliminar um modelo de consulta com um comando CURL:

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X DELETE https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates?queryTemplateId=QUERY_TEMPLATE_ID

Substitua o seguinte:

  • DCR_PROJECT_ID: o ID do projeto onde foi criada a sala limpa de dados.
  • LOCATION: a localização da sala limpa de dados.
  • CLEAN_ROOM_ID: o ID da sala limpa de dados.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Fluxos de trabalho de aprovadores de modelos

Como aprovador de modelos de consultas, pode aprovar um modelo de consulta.

Quando um TVF faz referência a dados que não lhe pertencem (por exemplo, os dados de outro colaborador), o modelo de consulta só pode ser aprovado pelo proprietário desses dados. Se estiver a criar uma TVF que apenas faça referência aos seus dados (para partilha numa direção), pode aprovar o modelo de consulta.

Aprove um modelo de consulta

Selecione uma das seguintes opções:

Consola

  1. Aceda à página Partilha (Centro de análise).

    Aceda à partilha (Analytics Hub)

  2. Clique no nome a apresentar da data clean room que contém o modelo de consulta.

  3. Na clean room, aceda ao separador Modelos.

  4. Na linha do modelo que requer a sua revisão, clique em Estado de aprovação > Requer revisão.

  5. Clique em Aprovar.

  6. Selecione a localização do modelo. Esta localização é onde o TVF é criado para partilha.

  7. Reveja o modelo de consulta proposto.

  8. Clique em Aprovar se o modelo de consulta for aprovado para utilização na sala limpa.

API

  1. Crie a rotina a partir do modelo de consulta com uma chamada:jobserver.query

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://bigquery.googleapis.com/bigquery/v2/projects/ROUTINE_PROJECT_ID/queries --data '{"query":"ROUTINE_CREATION_QUERY","useLegacySql":false}'

    Substitua o seguinte:

    • ROUTINE_PROJECT_ID: o ID do projeto onde a rotina foi criada.
    • ROUTINE_CREATION_QUERY: a consulta para criar a rotina.
  2. Adicione a rotina que criou à sala limpa de dados:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H 'x-goog-user-project:DCR_PROJECT_ID' -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/listings?listingId=LISTING_ID -d
    '{"bigqueryDataset":{"dataset":"projects/PROJECT_ID/datasets/DATASET_ID","selectedResources":[{"routine":"projects/PROJECT_ID/datasets/DATASET_ID/tables/ROUTINE_ID"}],},"displayName":"LISTING_NAME"}'

    Substitua o seguinte:

    • DCR_PROJECT_ID: o ID do projeto onde a sala limpa de dados foi criada.
    • LOCATION: a localização da sala limpa de dados.
    • CLEAN_ROOM_ID: o ID da sala limpa de dados.
    • LISTING_ID: o ID da ficha.
    • PROJECT_ID: o ID do projeto onde o conjunto de dados de origem estava contido.
    • DATASET_ID: o ID do conjunto de dados de origem.
    • ROUTINE_ID: o ID da rotina.
    • LISTING_NAME: o nome da ficha.
  3. Atualize o estado do modelo de consulta para APPROVED:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID/queryTemplates/QUERY_TEMPLATE_ID:approve  --data '{}'

    Substitua o seguinte:

    • DCR_PROJECT_ID: o ID do projeto onde a sala limpa de dados foi criada.
    • LOCATION: a localização da sala limpa de dados.
    • CLEAN_ROOM_ID: o ID da sala limpa de dados.
    • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Rejeite um modelo de consulta

Na consola Google Cloud , pode rejeitar um modelo de consulta das seguintes formas:

Fluxos de trabalho de subscritores de modelos

Um subscritor de um modelo de consulta pode ver e subscrever uma sala limpa de dados. Se apenas o modelo de consulta for adicionado à sala limpa, a subscrição da sala limpa só concede acesso à TVF correspondente e não aos dados partilhados subjacentes.

Subscreva um modelo de consulta

Selecione uma das seguintes opções:

Consola

Subscreve um modelo de consulta subscrevendo a sala limpa de dados. O acesso é concedido a todas as fichas que têm a definição Excluir acesso à ficha do conjunto de dados associado desativada.

Para subscrever um modelo de consulta, siga estes passos:

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. Navegue para o conjunto de dados associado que criou quando subscreveu a sala limpa.

  3. Abra a rotina ou o TVF partilhado no conjunto de dados associado.

  4. Clique em Invocar função de tabela.

  5. Substitua o parâmetro pela entrada aceite, que é o nome da tabela ou o campo.

  6. Clique em Executar.

Se não conseguir ver a TVF aninhada como um elemento secundário do conjunto de dados associado no painel do Explorador, pode consultar a TVF diretamente no conjunto de dados associado:

SELECT * FROM `myproject.dcr_linked_dataset.mytvf`(TABLE myTable);

API

Use o projects.locations.dataExchanges.subscribe método.

O exemplo seguinte mostra como chamar o método projects.locations.dataExchanges.subscribe através do comando curl:

  curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -L -X POST https://analyticshub.googleapis.com/v1/projects/DCR_PROJECT_ID/locations/LOCATION/dataExchanges/CLEAN_ROOM_ID:subscribe  --data '{"destination":"projects/SUBSCRIBER_PROJECT_ID/locations/LOCATION","subscription":"SUBSCRIPTION"}'

Substitua o seguinte:

  • DCR_PROJECT_ID: o ID do projeto onde foi criada a sala limpa de dados.
  • LOCATION: a localização da sala limpa de dados.
  • CLEAN_ROOM_ID: o ID da sala limpa de dados.
  • SUBSCRIBER_PROJECT_ID: o ID do projeto do projeto subscritor.
  • SUBSCRIPTION: o nome da sua subscrição.

Depois de subscrever o modelo de consulta, pode consultar a TVF diretamente no conjunto de dados associado:

SELECT * FROM `myproject.dcr_linked_dataset.mytvf`(TABLE myTable);

Cenários de exemplo

Os modelos de consultas podem ser usados para facilitar diferentes formas de colaboração de dados numa sala limpa de dados. As secções seguintes descrevem cenários de exemplo.

Cenário de partilha unidirecional

Um publicador de dados cria um modelo de consulta para verificar se os parceiros subscritores só podem executar as consultas definidas pelo publicador. Os criadores de modelos de consultas aprovam-nos automaticamente, uma vez que não é adicionado nenhum outro colaborador à sala limpa.

Neste cenário, o utilizador A é proprietário de uma sala limpa de dados que cria uma sala limpa de dados denominada campaign_analysis e adiciona um conjunto de dados denominado my_campaign com uma tabela campaigns. O utilizador A configura uma política de limite de agregação e controlos de metadados para verificar se apenas o esquema de metadados está visível e se os subscritores não conseguem aceder aos dados de origem. Em seguida, o utilizador A cria um modelo de consulta definindo uma função com valor de tabela a partir da tabela campaigns, restringindo todos os subscritores do conjunto de dados associado para executarem apenas a TVF.

Esta é a sintaxe do TVF:

campaigns_template(t1 TABLE campaign_ID <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD company_id, company, sum(impressions) FROM myproject.my_campaign.campaigns
group by company_id, company
);

Uma vez que o utilizador A tem as autorizações adequadas para a tabela de campanhas com a função de proprietário dos dados do BigQuery, o utilizador A pode aprovar automaticamente o modelo de consulta imediatamente após o enviar para revisão.

Partilha de colaboração com várias partes

O proprietário de uma sala limpa convida um colaborador fidedigno a propor consultas a executar nos dados de cada um. Ambas as partes podem propor consultas em segurança através da visualização apenas de esquemas de metadados, sem aceder aos dados partilhados subjacentes. Quando uma definição de consulta faz referência a dados que não pertencem ao proponente do modelo, o modelo só pode ser aprovado pelo proprietário desses dados.

Neste cenário, o utilizador A convida o utilizador B, que é um colaborador da sala limpa de dados, para a sala limpa campaign_analysis. O utilizador B quer propor um modelo de consulta para juntar os seus próprios dados à tabela campaigns através da visualização do esquema dos metadados da tabela.

Esta é a sintaxe do TVF:

campaigns_template(t1 TABLE campaign_ID <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD company_id, company, sum(impressions) FROM my_project.my_campaign.campaigns
group by company_id, company
);

Uma vez que o utilizador B não adicionou nem é proprietário da tabela campaigns, quando o modelo de consulta é enviado para aprovação, apenas o utilizador A o pode aprovar. Para usar o modelo de consulta, o utilizador B tem de subscrever a sala limpa e invocar a TVF. O utilizador B transmite a sua própria tabela com um campo denominado campaign_ID como parâmetro da tabela, e pode executar o SQL privado definido no modelo de consulta. É útil observar aqui que o utilizador B não precisa de adicionar os respetivos dados à sala limpa.

O utilizador B também adiciona um conjunto de dados denominado my_transactions à sala limpa que tem uma tabela transactions e uma tabela products. O utilizador B configura políticas de limite de agregação e controlos de metadados para verificar se apenas o esquema de metadados está visível e se os subscritores não podem aceder aos dados de origem.

O utilizador A pode agora propor vários modelos de consultas para juntar os seus próprios dados à tabela de transações, visualizando o esquema de metadados da tabela. Seguem-se exemplos de sintaxe de TVF:

transactions_template(t1 TABLE user_ID  <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD company_id, company, campaign_id, sku, category, date, sum(amount) FROM my_project.my_transactions.transactions
group by company_id, company, campaign_id, sku, category, date
);
transactions_template_with_join(t1 TABLE user_ID  <STRING> ) AS (
SELECT WITH AGGREGATION_THRESHOLD t.company_id, t.company, t.campaign_id, t.sku, t.date, p.product_name, p.product_category, sum(t.amount) FROM myproject.my_transactions.transactions t
left join my_project.my_transactions.products p
on t.product_id = p.product_id
group by t.company_id, t.company, t.campaign_id, t.sku, t.date, p.product_name, p.product_category
);

Uma vez que o utilizador A não adicionou nem é proprietário das tabelas transactions e products, assim que o modelo de consulta for enviado para aprovação, apenas o utilizador B pode aprová-lo. Para usar o modelo de consulta, o utilizador A tem de subscrever a sala limpa e invocar a TVF. O utilizador A transmite a sua própria tabela com um campo denominado user_ID como parâmetro de tabela e pode executar o SQL de privacidade definido no modelo de consulta. É útil observar aqui que o utilizador A não precisa de adicionar os respetivos dados à sala limpa.

Preços

Os colaboradores de dados que usam modelos de consultas só pagam pelo armazenamento de dados.

Os subscritores que usam modelos de consultas só pagam pelo processamento (análise) quando executam consultas.

O que se segue?