Por exemplo, digamos que você esteja tentando criar uma solução para sua organização de vendas, que é dividida em várias regiões, e cada uma tem um gerente regional. O conjunto de dados de vendas no BigQuery separa o valor monetário por região e data.
A solução proposta terá um único painel, onde os gerentes regionais podem visualizar dados de vendas somente das suas regiões.
Requisitos
- Os visualizadores do painel precisam estar conectados a uma Conta do Google.
- Precisa haver um mapeamento disponível entre o email do usuário e os dados/linhas aos quais ele tem acesso.
- Uma conta de serviço deverá ser utilizada para acessar as informações do BigQuery. Assim, o faturamento será centralizado e gerenciado pelo provedor do painel.
Limitações
- O painel requer uma autorização única de cada visualizador na primeira vez.
- Os usuários não podem editar o painel nem compartilhar com outras pessoas.
- Se você é um cliente do Workspace e seu administrador desativou o compartilhamento os arquivos do Drive para "Qualquer pessoa com o link" ou remova o compartilhamento ou desenvolver a solução em uma conta do Gmail.com.
Solução
Realize todas as etapas a seguir para implementar a solução.
Criar um novo conector da comunidade
Para começar, assista ao vídeo Como os conectores da comunidade funcionam (em inglês) e siga as etapas do codelab relacionado. Use a Ferramenta para Desenvolvedores de criação de conectores, tornando o processo de desenvolvimento mais prático.
Gravar o código do conector
getAuthType()
precisa retornarNONE
.getConfig()
precisa retornar uma configuração vazia.- Opcional: se você precisar de entradas específicas para configurar o painel, solicite ao usuário neste campo.
getSchema()
precisa retornar o esquema para sua consulta.- Opcional: é possível adicionar campos e cálculos personalizados na consulta SQL ou usando campos calculados como parte do esquema.
getData()
será preenchido posteriormente.
Atualizar o manifesto
Consulte a referência do manifesto e preencha o manifesto com todas as informações necessárias, incluindo o seguinte:
- Defina
dataStudio.forceViewersCredentials
comotrue
. - Defina
dataStudio.advancedServices.data
comotrue
. - Para
oauthScopes
, adicionehttps://www.googleapis.com/auth/userinfo.email
ehttps://www.googleapis.com/auth/script.external_request
. Consulte Escopos de autorização do Apps Script para ver mais informações.- Condicional: adicione todos os escopos relevantes para os serviços usados no conector.
O manifesto será semelhante a este:
{
...
"dataStudio": {
"forceViewersCredentials": true,
"advancedServices": {
"data": true
},
...
}
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/userinfo.email"
],
...
}
Implementar uma conta de serviço
- Crie uma conta de serviço no seu projeto do Google Cloud, que será o projeto de faturamento.
- Verifique se essa conta tem acesso ao BigQuery no projeto.
- Papéis de gerenciamento de identidade e acesso (IAM) obrigatórios:
BigQuery Data Viewer
,BigQuery Job User
- Papéis de gerenciamento de identidade e acesso (IAM) obrigatórios:
- Faça o download do arquivo JSON para usar as chaves das contas de serviço. Armazene as chaves nas propriedades de script do projeto do seu conector.
- Inclua a biblioteca OAuth2 para Apps Script no seu projeto do Apps Script.
- Implemente o código OAuth2 necessário para a conta de serviço:
var SERVICE_ACCOUNT_CREDS = 'SERVICE_ACCOUNT_CREDS'; var SERVICE_ACCOUNT_KEY = 'private_key'; var SERVICE_ACCOUNT_EMAIL = 'client_email'; var BILLING_PROJECT_ID = 'project_id'; /** * Copy the entire credentials JSON file from creating a service account in GCP. */ function getServiceAccountCreds() { return JSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS)); } function getOauthService() { var serviceAccountCreds = getServiceAccountCreds(); var serviceAccountKey = serviceAccountCreds[SERVICE_ACCOUNT_KEY]; var serviceAccountEmail = serviceAccountCreds[SERVICE_ACCOUNT_EMAIL]; return OAuth2.createService('RowLevelSecurity') .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth') .setTokenUrl('https://accounts.google.com/o/oauth2/token') .setPrivateKey(serviceAccountKey) .setIssuer(serviceAccountEmail) .setPropertyStore(scriptProperties) .setCache(CacheService.getScriptCache()) .setScope(['https://www.googleapis.com/auth/bigquery.readonly']); }
Implemente o getData()
.
- Crie sua consulta do BigQuery.
- No e-mail, procure o mapeamento entre o e-mail e os dados.
- Use a cláusula JOIN e/ou WHERE para filtrar as informações.
- Descubra o e-mail do usuário efetivo (referência de identidade).
- Use os Advanced Services do Looker Studio para retornar a configuração da consulta
de getData.
- Envie a consulta criada, o projeto de faturamento e o token OAuth da conta de serviço.
- Condicional: se você estiver recebendo dados do usuário pelo conector
getConfig
, incorpore-os como parâmetros do BigQuery.
Criar o painel
- Entenda como as implementações e versões funcionam para os conectores.
- Crie uma implantação de produção para o conector.
- Use a implantação de produção para criar uma fonte de dados e um novo relatório no Looker Studio.
- Adicione todas as tabelas e gráficos ao relatório.
- O painel poderá ser compartilhado com seus usuários.
Disponibilizar o painel aos usuários
- Compartilhe o script do conector com os usuários selecionados ou "Todos com o link".
- Compartilhe o painel com os usuários escolhidos ou "Todos com o link".
- Opcional: use um serviço de redução de URL e crie um link curto para o painel. Compartilhe com seus usuários. Isso ajuda a substituir o URL do painel posteriormente, se necessário.
- Opcional: analise a utilização do painel configurando o Google Analytics para seu relatório.