Filtragem no nível da linha com os painéis incorporados

Por exemplo, vamos supor que o desenvolvedor X tenha um aplicativo da Web para os clientes dele. Os clientes fazem login no app usando suas próprias credenciais e podem visualizar dados de vendas para diferentes lojas. Cada cliente tem acesso a uma lista diferente de lojas. O desenvolvedor gostaria de incorporar um painel do Data Studio no aplicativo para que, quando um cliente fizer login, o cliente veja apenas os dados de vendas das lojas a que ele tem acesso. Os clientes não precisarão fazer login na Conta do Google para que esse processo funcione.

A solução proposta precisará que o desenvolvedor crie um conector da comunidade, transmita um token pelo URL incorporado e filtre os dados com base no token.

Requisitos

  • Os visualizadores do painel farão login no aplicativo de terceiros.
  • O app precisa transmitir um token exclusivo para o painel do Data Studio por meio do URL incorporado. O token pode ser usado para pesquisar informações de filtro ou criptografá-las.
  • O conector da comunidade precisa ser capaz de converter o token em valores de filtro.

Limitações

  • Se você for cliente do G Suite e o administrador tiver desativado o compartilhamento de arquivos do Drive em "Qualquer pessoa com o link", não será possível compartilhar o relatório com usuários de fora da organização.

Solução

Realize todas as etapas a seguir para implementar a solução.

Gerar um token de usuário no aplicativo da Web

Gere um token exclusivo para cada usuário conectado no seu aplicativo da web. Você transmitirá esse token para o painel incorporado em uma etapa posterior.

Você precisa usar o token para filtrar dados relevantes. Veja as opções:

  • Crie um ponto de extremidade da API que retorne dados filtrados ou as informações do usuário para um token específico.
  • Criptografe as informações do usuário no token para que ele possa ser descriptografado posteriormente no conector.

Criar um novo conector da comunidade

Para começar, assista o vídeo Como os conectores da comunidade funcionam (em inglês) e siga as etapas do codelab relacionado. Use as Ferramentas para Desenvolvedores locais de criação de conectores tornando o processo de desenvolvimento mais prático.

Gravar o código do conector

  1. getConfig() precisa retornar pelo menos um item de configuração. Ele será usado para capturar um token dos parâmetros do URL incorporado.

    function getConfig(request) {
          var cc = DataStudioApp.createCommunityConnector();
          var config = cc.getConfig();
    
          config
              .newTextInput()
              .setId('token')
              .setName('Enter user token');
    
          // TODO: Add additional config values if applicable for your connector
    
          config.setDateRangeRequired(false);
          config.setIsSteppedConfig(false);
    
          return config.build();
        }
        
  2. getData() terá acesso ao token por meio do objeto request.configParams. Use o token para buscar dados filtrados ou filtrar dados atuais que foram pesquisados.
    Seguindo o exemplo acima, o token seria request.configParams.token. Em getData(), o token é transmitido para um ponto de extremidade API REST para conseguir uma lista de códigos de loja. Esses códigos de loja são então usados para construir a consulta SQL e buscar dados de vendas.

    var STORE_ID_API = 'https://www.example.com/api/storeid';
        var QUERY_STRING_PREFIX = "SELECT StoreName, Sales from stores"
    
        function getData(request) {
          var token = request.configParams.token;
    
          var storeIds = getStoreIdList(token);
          var queryString = constructQueryString(storeIds);
          var fetchedData = fetchData(queryString);
    
          // rest of getData() implementation
        }
    
        function getStoreIdList(token) {
          var url = STORE_ID_API;
          var response = UrlFetchApp.fetch(url);
          var parsedResponse = JSON.parse(response);
          return parsedResponse.storeIds;
        }
    
        function constructQueryString(storeIds) {
          var storeIdString = storeIds.join(',');
          var queryString = QUERY_STRING_PREFIX
                            + ' WHERE storeId in ('
                            + storeIdString
                            + ')';
          return queryString;
        }
        

Criar o painel

  1. Entenda como as implementações e versões funcionam para os conectores.
  2. Crie uma implantação de produção para o conector.
  3. Use o link da implantação de produção para criar uma fonte de dados e um relatório no Data Studio.
  4. Para o parâmetro de configuração de token, permita que os visualizadores de relatórios modifiquem os valores dos parâmetros.
  5. Compartilhe o painel com os usuários selecionados ou com "Qualquer pessoa com o link".
  6. Ative a incorporação do relatório.

Incorporar o painel na sua plataforma

  1. Entenda como os parâmetros de URL do relatório funcionam.
  2. Transmita o valor do token gerado dinamicamente usando parâmetros de URL para o relatório incorporado do Data Studio.
    Seu URL de incorporação será semelhante a este:
    <pre class="prettyprint">https://datastudio.google.com/embed/reporting/REPORT_ID/page/PAGE_ID?config=%7B%22ds0%22%3A%7B%22token%22%3A%22TOKEN_VALUE%22%7D%7D

Recomendações

  • Você precisa criar um token de curta duração.
  • Verifique a possibilidade do painel vazar informações com um token inválido.