Usar modelos de consulta

Os modelos de consulta de data clean room do BigQuery aceleram o tempo até a geração de insights e oferecem camadas extras de segurança e controle para minimizar problemas de exfiltração de dados. Ao pré-definir e limitar as consultas que podem ser executadas em data clean rooms, você pode fazer o seguinte:

  • Ajude a evitar o vazamento de dados sensíveis. Quando os assinantes que executam consultas em uma clean room têm mais flexibilidade para explorar, os proprietários de dados sentem que há um risco maior de exposição acidental ou intencional de informações sensíveis.

  • Simplifique a integração e a adoção para usuários com menos experiência técnica. Muitos provedores de dados esperam que os assinantes das clean rooms tenham menos proficiência técnica, principalmente na escrita de consultas SQL com foco na privacidade e na compreensão de como alocar orçamentos de privacidade de maneira adequada.

  • Garantir resultados analíticos consistentes para assinantes de dados. Fica mais difícil aplicar regras específicas de análise de dados e verificar a conformidade com os regulamentos de privacidade quando não há como controlar as consultas executadas em uma data clean room.

Com os modelos de consulta, os proprietários e colaboradores de dados podem criar consultas predefinidas e aprovadas, especificamente adaptadas aos casos de uso da data clean room, e publicar essas consultas para consumo pelos assinantes. As consultas predefinidas usam funções com valor de tabela (TVFs) no BigQuery para permitir que uma tabela inteira ou campos específicos sejam transmitidos como parâmetros de entrada e retornem uma tabela como saída.

Limitações

  • Os modelos de consulta só aceitam um máximo de duas referências de dados: os dados usados para definir a consulta da TVF e a entrada de parâmetro de dados aceita pela TVF.
    • Várias tabelas ou visualizações podem ser referenciadas na definição de consulta da TVF, mas todas precisam pertencer ao mesmo proprietário ou parte de dados.
  • As TVFs de modelo de consulta só são compatíveis com os tipos fixos TABLE e VIEW.
  • As definições de modelo de consulta estão sujeitas às mesmas limitações das TVFs.

Antes de começar

Ative a API Analytics Hub no seu projeto Google Cloud seguindo estas etapas:

Console

  1. Acesse a página da API Analytics Hub.

    Acessar a API Analytics Hub

  2. Na barra de ferramentas do console Google Cloud , selecione 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 exigidas

Para receber as permissões necessárias para realizar as tarefas neste documento, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para executar as tarefas neste documento. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para executar as tarefas neste documento:

  • Criar ou excluir uma TVF em uma data clean room:
    • bigquery.routines.create no projeto
    • bigquery.routines.update no projeto
    • bigquery.routines.delete no projeto
  • Autorize uma TVF: bigquery.datasets.update nos conjuntos de dados que a rotina acessa
  • Crie um modelo de consulta:
    • analyticshub.listings.subscribe no projeto
    • analyticshub.queryTemplates.create no projeto
  • Aprovar um modelo de consulta:
    • bigquery.routines.create no projeto
    • bigquery.datasets.update nos conjuntos de dados acessados pela rotina
    • analyticshub.listings.create no projeto
    • analyticshub.queryTemplates.approve no projeto

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Adicionar uma TVF a uma data clean room

É possível adicionar uma TVF a uma data clean room usando a API Analytics Hub.

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

O exemplo a seguir mostra como chamar o método projects.locations.dataExchanges.listings.create usando o 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:

  • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
  • PROJECT_ID: o ID do projeto que continha o conjunto de dados de origem.
  • DATASET_ID: o ID do conjunto de dados de origem.
  • LOCATION: o local da data clean room.
  • CLEAN_ROOM_ID: o ID da data clean room.
  • LISTING_ID: o ID da ficha da empresa.
  • LISTING_NAME: o nome da ficha da empresa.
  • ROUTINE_ID: o ID da rotina.

Funções de modelo de consulta

Há três papéis principais para usar modelos de consulta de data clean room. Cada função tem fluxos de trabalho específicos, que são descritos mais adiante neste documento.

Fluxos de trabalho do criador de modelos

Como criador de modelos de consulta, você pode fazer o seguinte:

Adicionar uma ficha da empresa a uma data clean room

Antes de criar um modelo de consulta, é necessário adicionar dados a uma data clean room. Para criar uma listagem na data clean room, siga estas etapas:

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome de exibição da data clean room em que você quer criar o modelo de consulta.

  3. Clique em Adicionar dados e siga as etapas para criar uma visualização com regras de análise configuradas. Para instruções detalhadas, consulte Criar uma ficha (adicionar dados).

    1. Para adicionar dados de terceiros, compartilhe a clean room com outro colaborador de confiança. Esse colaborador também precisa adicionar dados à clean room para se qualificar para uso em um modelo de consulta.
  4. Defina os controles de saída de dados para a listagem.

  5. Defina os controles de metadados para a página de detalhes. Se você quiser compartilhar apenas os esquemas e as descrições dos dados adicionados na etapa anterior (e não os dados compartilhados em si), selecione Excluir acesso às informações do conjunto de dados vinculado.

  6. Revise os detalhes da página.

  7. Clique em Adicionar dados. Os metadados da visualização criada para seus dados agora são adicionados à clean room.

Criar um modelo de consulta

Selecione uma das seguintes opções:

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome de exibição da data clean room em que você quer criar o modelo de consulta.

  3. Na data clean room, acesse a guia Modelos.

  4. Clique em Criar modelo.

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

  6. Clique em Próxima.

  7. É possível conferir os esquemas das visualizações adicionadas à clean room e propor uma definição de consulta.

    1. Defina a consulta usando a sintaxe CREATE TABLE FUNCTION compatível.
    2. Transmita toda a tabela ou visualização com definições fixas. Você precisa definir o caminho completo da tabela, incluindo o ID do projeto e do conjunto de dados, com base nos dados adicionados à data clean room. Exemplo:

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

  8. Revise os detalhes do modelo.

  9. Para salvar o modelo sem enviar para revisão, clique em Salvar. O modelo de consulta agora tem o status RASCUNHO.

Você pode atualizar o modelo de consulta ou enviar o modelo para análise.

API

O exemplo a seguir 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:

  • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
  • LOCATION: o local da data clean room.
  • CLEAN_ROOM_ID: o ID da data clean room.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.
  • TVF_DEFINITION: a definição da TVF.

O exemplo de código a seguir mostra um exemplo de definition_body para a chamada de API. Você precisa definir o caminho completo da tabela, incluindo o ID do projeto e do conjunto de dados, com base nos dados adicionados à data clean room.

  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 definition_body anterior é traduzido para a seguinte rotina:

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

Você pode atualizar o modelo de consulta ou enviar o modelo para análise.

Atualizar um modelo de consulta

Só é possível atualizar um modelo de consulta se ele estiver no status RASCUNHO. Se o modelo de consulta já foi enviado para revisão, não é mais possível modificá-lo.

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

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome de exibição da data clean room que contém o modelo de consulta.

  3. Na data clean room, acesse a guia Modelos.

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

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

  6. Clique em Próxima.

  7. Revise o modelo de consulta e clique em Salvar para salvar as mudanças sem enviar o modelo para revisão.

API

O exemplo a seguir 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:

  • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
  • LOCATION: o local da data clean room.
  • CLEAN_ROOM_ID: o ID da data clean room.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Enviar um modelo de consulta para análise

Selecione uma das seguintes opções:

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome de exibição da data clean room que contém o modelo de consulta.

  3. Na data clean room, acesse a guia Modelos.

  4. Na linha do modelo que você quer enviar para análise, clique em Ações > Enviar para análise. O modelo agora tem o status Precisa de revisão.

API

O exemplo a seguir 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:

  • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
  • LOCATION: o local da data clean room.
  • CLEAN_ROOM_ID: o ID da data clean room.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Excluir um modelo de consulta

Só é possível excluir um modelo de consulta se ele estiver no status RASCUNHO. Se o modelo de consulta já tiver sido enviado para revisão, não será mais possível excluí-lo.

Selecione uma das seguintes opções:

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome de exibição da data clean room que contém o modelo de consulta.

  3. Na data clean room, acesse a guia Modelos.

  4. Na linha do modelo que você quer excluir, clique em Ações > Excluir modelo.

API

O exemplo a seguir mostra como excluir 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:

  • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
  • LOCATION: o local da data clean room.
  • CLEAN_ROOM_ID: o ID da data clean room.
  • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Fluxos de trabalho de aprovação de modelo

Como aprovador de modelos de consulta, você pode aprovar um modelo de consulta.

Quando uma TVF faz referência a dados que não são seus (por exemplo, os dados de outro colaborador), o modelo de consulta só pode ser aprovado pelo proprietário desses dados. Se você estiver criando uma TVF que faz referência apenas aos seus dados (para compartilhamento em uma direção), poderá aprovar o modelo de consulta por conta própria.

Aprovar um modelo de consulta

Selecione uma das seguintes opções:

Console

  1. Acesse a página Compartilhamento (Analytics Hub).

    Acessar Compartilhamento (Analytics Hub)

  2. Clique no nome de exibição da data clean room que contém o modelo de consulta.

  3. Na data clean room, acesse a guia Modelos.

  4. Na linha do modelo que precisa da sua revisão, clique em Status de aprovação > Precisa de revisão.

  5. Clique em Aprovar.

  6. Selecione o local do modelo. É aqui que a TVF é criada para compartilhamento.

  7. Revise o modelo de consulta proposto.

  8. Clique em Aprovar se o modelo de consulta for aprovado para uso na data clean room.

API

  1. Crie a rotina com base no modelo de consulta usando 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:

    • ROUTINE_PROJECT_ID: o ID do projeto em que a rotina foi criada.
    • ROUTINE_CREATION_QUERY: a consulta para criar a rotina.
  2. Adicione a rotina criada à data clean room:

    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:

    • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
    • LOCATION: o local da data clean room.
    • CLEAN_ROOM_ID: o ID da data clean room.
    • LISTING_ID: o ID da ficha da empresa.
    • PROJECT_ID: o ID do projeto que continha o conjunto de dados de origem.
    • DATASET_ID: o ID do conjunto de dados de origem.
    • ROUTINE_ID: o ID da rotina.
    • LISTING_NAME: o nome da ficha da empresa.
  3. Atualize o status 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:

    • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
    • LOCATION: o local da data clean room.
    • CLEAN_ROOM_ID: o ID da data clean room.
    • QUERY_TEMPLATE_ID: o ID do modelo de consulta.

Rejeitar um modelo de consulta

No console Google Cloud , é possível rejeitar um modelo de consulta das seguintes maneiras:

Modelos de fluxos de trabalho de inscritos

Um assinante de modelo de consulta pode ver e se inscrever em uma data clean room. Se apenas o modelo de consulta for adicionado à clean room, a assinatura dela só vai conceder acesso à TVF correspondente, não aos dados compartilhados subjacentes.

Inscrever-se em um modelo de consulta

Selecione uma das seguintes opções:

Console

Para se inscrever em um modelo de consulta, inscreva-se na data clean room. O acesso é concedido a todas as listagens que têm a configuração Excluir acesso à listagem do conjunto de dados vinculado desativada.

Para se inscrever em um modelo de consulta, siga estas etapas:

  1. Acessar a página do BigQuery.

    Acessar o BigQuery

  2. Navegue até o conjunto de dados vinculado que você criou ao assinar a clean room.

  3. Abra a rotina ou a TVF compartilhada no conjunto de dados vinculado.

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

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

  6. Clique em Executar.

Se não for possível ver a TVF aninhada como um elemento filho do conjunto de dados vinculado no painel Explorador, consulte a TVF diretamente no conjunto de dados vinculado:

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

API

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

O exemplo a seguir mostra como chamar o método projects.locations.dataExchanges.subscribe usando o 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:

  • DCR_PROJECT_ID: o ID do projeto em que a data clean room foi criada.
  • LOCATION: o local da data clean room.
  • CLEAN_ROOM_ID: o ID da data clean room.
  • SUBSCRIBER_PROJECT_ID: o ID do projeto do assinante.
  • SUBSCRIPTION: o nome da sua assinatura.

Depois de assinar o modelo de consulta, você pode consultar a TVF diretamente no conjunto de dados vinculado:

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

Exemplos de cenários

Os modelos de consulta podem ser usados para facilitar diferentes formas de colaboração de dados em uma data clean room. As seções a seguir descrevem exemplos de cenários.

Cenário de compartilhamento unidirecional

Um editor de dados cria um modelo de consulta para verificar se os parceiros assinantes só podem executar as consultas definidas pelo editor. Os criadores de modelos de consulta acabam aprovando os próprios modelos, já que nenhum outro colaborador é adicionado à sala restrita.

Nesse cenário, o usuário A é proprietário de uma data clean room que cria uma chamada campaign_analysis e adiciona um conjunto de dados chamado my_campaign com uma tabela campaigns. O usuário A configura uma política de limite de agregação e controles de metadados para verificar se apenas o esquema de metadados está visível e se os assinantes não podem acessar os dados de origem. Em seguida, o usuário A cria um modelo de consulta definindo uma função com valor de tabela da tabela campaigns e restringindo todos os assinantes do conjunto de dados vinculado para executar apenas a TVF.

Esta é a sintaxe da 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
);

Como o usuário A tem as permissões adequadas para a tabela de campanhas com a função de proprietário de dados do BigQuery, ele pode aprovar automaticamente o modelo de consulta depois de enviá-lo para revisão.

Compartilhamento de colaboração entre várias partes

O proprietário de uma data clean room convida um colaborador de confiança para propor consultas que serão executadas nos dados de cada um. As duas partes podem propor consultas com segurança ao visualizar apenas os esquemas de metadados, sem acessar os dados compartilhados subjacentes. Quando uma definição de consulta faz referência a dados que não pertencem ao proponente do modelo, ele só pode ser aprovado pelo proprietário desses dados.

Nesse cenário, o usuário A convida o usuário B, que é um colaborador da data clean room, para a clean room campaign_analysis. O usuário B quer propor um modelo de consulta para unir os próprios dados à tabela campaigns ao visualizar o esquema de metadados da tabela.

Esta é a sintaxe da 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
);

Como o usuário B não adicionou nem é proprietário da tabela campaigns, depois que o modelo de consulta é enviado para aprovação, apenas o usuário A pode aprovar. Para usar o modelo de consulta, o usuário B precisa se inscrever na data clean room e invocar a TVF. O usuário B transmite a própria tabela com um campo chamado campaign_ID como parâmetro de tabela e pode executar o SQL particular definido no modelo de consulta. É importante observar que o usuário B não precisa adicionar os dados dele à data clean room.

O usuário B também adiciona à clean room um conjunto de dados chamado my_transactions com uma tabela transactions e uma tabela products. O usuário B configura políticas de limite de agregação e controles de metadados para verificar se apenas o esquema de metadados está visível e se os assinantes não podem acessar os dados de origem.

O usuário A agora pode propor vários modelos de consulta para unir os próprios dados à tabela de transações ao visualizar o esquema de metadados da tabela. Confira alguns 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
);

Como o usuário A não adicionou nem é proprietário das tabelas transactions e products, depois que o modelo de consulta é enviado para aprovação, apenas o usuário B pode aprovar. Para usar o modelo de consulta, o usuário A precisa assinar a sala limpa e invocar a TVF. O usuário A transmite a própria tabela com um campo chamado user_ID como parâmetro de tabela e pode executar o SQL de privacidade definido no modelo de consulta. É importante observar que o usuário A não precisa adicionar os dados dele à data clean room.

Preços

Os colaboradores que usam modelos de consulta são cobrados apenas pelo armazenamento de dados.

Os assinantes que usam modelos de consulta só são cobrados pela computação (análise) quando executam consultas.

A seguir