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
eVIEW
. - 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
Aceda à página da API Analytics Hub.
Na Google Cloud barra de ferramentas da consola, selecione o seu projeto.
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:
-
Crie ou elimine um TVF numa sala limpa de dados:
-
Publicador do Analytics Hub (
roles/analyticshub.publisher
) no projeto -
Subscritor do Analytics Hub (
roles/analyticshub.subscriber
) no projeto
-
Publicador do Analytics Hub (
-
Autorize uma TVF:
Proprietário de dados do BigQuery (
roles/bigquery.dataOwner
) no projeto -
Adicione, atualize ou elimine uma ficha de TVF numa sala de dados limpos:
-
Publicador do Analytics Hub (
roles/analyticshub.publisher
) no projeto -
Subscritor do Analytics Hub (
roles/analyticshub.subscriber
) no projeto
-
Publicador do Analytics Hub (
-
Crie um modelo de consulta:
-
Publicador do Analytics Hub (
roles/analyticshub.publisher
) no projeto -
Subscritor do Analytics Hub (
roles/analyticshub.subscriber
) no projeto
-
Publicador do Analytics Hub (
-
Aprove um modelo de consulta:
-
Publicador do Analytics Hub (
roles/analyticshub.publisher
) no projeto -
Proprietário de dados do BigQuery (
roles/bigquery.dataOwner
) no projeto
-
Publicador do Analytics Hub (
-
Subscreva uma sala limpa de dados com modelos de consultas:
-
Subscritor do Analytics Hub (
roles/analyticshub.subscriber
) no projeto -
Proprietário da subscrição do Analytics Hub (
roles/analyticshub.subscriptionOwner
) no projeto onde quer subscrever a sala limpa de dados
-
Subscritor do Analytics Hub (
-
Execute as consultas definidas nos modelos de consultas:
-
Visualizador de dados do BigQuery (
roles/bigquery.dataViewer
) no projeto -
Utilizador do BigQuery (
roles/bigquery.user
) no projeto
-
Visualizador de dados do BigQuery (
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.
Criador de modelos: um utilizador que define as consultas a executar na clean room. Esta função é análoga a qualquer uma das seguintes funções: Administrador do Analytics Hub, Publicador do Analytics Hub ou Administrador da ficha do Analytics Hub. Para mais informações, consulte o artigo Fluxos de trabalho do criador de modelos.
Aprovador do modelo: o proprietário dos dados que tem de aprovar as referências do modelo de consulta antes de o modelo estar disponível para utilização. Esta função é análoga a qualquer uma das seguintes funções: Administrador do Analytics Hub, Publicador do Analytics Hub ou Administrador da ficha do Analytics Hub. Para mais informações, consulte o artigo Fluxos de trabalho de aprovador de modelos.
Subscritor do modelo: um utilizador que subscreve a clean room e só pode executar as consultas aprovadas no modelo. Esta função é análoga à função Subscritor do Centro de análise. Para mais informações, consulte o artigo Fluxos de trabalho de subscritores de modelos.
Fluxos de trabalho do criador de modelos
Enquanto criador de modelos de consultas, pode fazer o seguinte:
- Crie um modelo de consulta.
- Atualize um modelo de consulta.
- Envie um modelo de consulta para revisão.
- Elimine um modelo de consulta.
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:
Aceda à página Partilha (Centro de análise).
Clique no nome a apresentar da sala limpa de dados na qual quer criar o modelo de consulta.
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).
- 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.
Defina controlos de saída de dados para a ficha.
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.
Reveja os detalhes da ficha.
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
Aceda à página Partilha (Centro de análise).
Clique no nome a apresentar da sala limpa de dados onde quer criar o modelo de consulta.
Na clean room, aceda ao separador Modelos.
Clique em Criar modelo.
Introduza um nome e uma descrição para o modelo.
Clicar em Seguinte.
Pode ver os esquemas das visualizações adicionadas à clean room e propor uma definição de consulta.
- Certifique-se de que define a consulta com a
CREATE TABLE FUNCTION
sintaxe suportada. 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)
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
.
- Certifique-se de que define a consulta com a
Reveja os detalhes do modelo.
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
Aceda à página Partilha (Centro de análise).
Clique no nome a apresentar da data clean room que contém o modelo de consulta.
Na clean room, aceda ao separador Modelos.
Na linha do modelo que quer atualizar, clique em Ações > Editar modelo.
Atualize os detalhes do modelo e a definição da consulta conforme necessário.
Clicar em Seguinte.
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
Aceda à página Partilha (Centro de análise).
Clique no nome a apresentar da data clean room que contém o modelo de consulta.
Na clean room, aceda ao separador Modelos.
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
Aceda à página Partilha (Centro de análise).
Clique no nome a apresentar da data clean room que contém o modelo de consulta.
Na clean room, aceda ao separador Modelos.
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
Aceda à página Partilha (Centro de análise).
Clique no nome a apresentar da data clean room que contém o modelo de consulta.
Na clean room, aceda ao separador Modelos.
Na linha do modelo que requer a sua revisão, clique em Estado de aprovação > Requer revisão.
Clique em Aprovar.
Selecione a localização do modelo. Esta localização é onde o TVF é criado para partilha.
Reveja o modelo de consulta proposto.
Clique em Aprovar se o modelo de consulta for aprovado para utilização na sala limpa.
API
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.
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.
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:
- Não aprove a revisão do modelo de consulta enviado.
- Elimine o modelo de consulta para o remover da sala limpa.
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:
Aceda à página do BigQuery.
Navegue para o conjunto de dados associado que criou quando subscreveu a sala limpa.
Abra a rotina ou o TVF partilhado no conjunto de dados associado.
Clique em Invocar função de tabela.
Substitua o parâmetro pela entrada aceite, que é o nome da tabela ou o campo.
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?
- Para saber mais acerca das salas limpas de dados, consulte o artigo Partilhe dados confidenciais com salas limpas de dados.
- Para saber mais sobre as subscrições, consulte o artigo Subscreva uma sala limpa de dados.
- Para saber mais sobre as FTVs, consulte o artigo Funções de tabela.
- Para saber mais sobre a saída de dados, consulte o artigo Opções de saída de dados (apenas conjuntos de dados partilhados do BigQuery).