Criar visualizações da comunidade do Data Studio com dscc-gen

1. Introdução

Com o Google Data Studio, você cria painéis dinâmicos e interativos com visualizações de dados incríveis sem custos financeiros. As visualizações da comunidade são um recurso do Data Studio que permite criar visualizações personalizadas com JavaScript que se integram aos seus relatórios do Data Studio.

O que você vai aprender

Neste codelab, você vai aprender a:

  • Como funciona uma visualização da comunidade do Google Data Studio
  • Como criar uma visualização da comunidade com nossa ferramenta de modelo de linha de comando
  • Como usar bibliotecas de visualização JavaScript para criar visualizações da comunidade
  • Como integrar sua visualização da comunidade a um painel do Data Studio

O que é necessário

Para concluir este codelab, você vai precisar de:

  • Acesso à Internet, um navegador da Web, um terminal e seu editor de texto favorito
  • Uma Conta do Google
  • Acesso a um bucket do Cloud Storage
  • Familiaridade com JavaScript, Node.js e a linha de comando

Este codelab pressupõe que você:

  • Você já criou uma visualização da comunidade (TODO link first codelab)
  • Conhecer o Google Cloud Storage

Para começar, faça uma cópia deste relatório clicando em 14575f934e800122.png no canto superior direito. Mantenha-o aberto em outra guia enquanto faz o codelab.

2. Pesquisa rápida

Por que você escolheu este codelab?

I am interested in data visualization in general. Quero saber mais sobre o Data Studio Quero criar minha própria visualização da comunidade. Estou tentando integrar o Data Studio a outra plataforma. Tenho interesse nas soluções do Google Cloud.

Como você planeja usar este codelab/tutorial?

Ler e fazer os exercícios Apenas leitura dinâmica

Como você classificaria sua experiência com o Data Studio?

Nunca ouvi falar Sei o que é, mas não uso. Uso com frequência. Sou um usuário avançado.

Qual opção descreve melhor sua formação?

Desenvolvedor Analista de negócios / dados Cientista de dados / engenheiro de dados Analista financeiro Especialista em marketing / redes sociais / análise digital Analista de negócios Designer Outro

Acesse a próxima página para enviar as informações da pesquisa.

3. Desenvolvimento de visualizações da comunidade com dscc-gen

dscc-gen

O dscc-gen é uma ferramenta de linha de comando que oferece modelos e fluxos de trabalho opinativos para visualizações e conectores da comunidade. O modelo de visualização da comunidade oferece uma visualização funcional e um fluxo de trabalho que permite ver imediatamente as mudanças no código de visualização, além de scripts para validar, criar e implantar suas visualizações.

Configuração

O dscc-gen usa gsutil em scripts de implantação e npm e webpack para criar código JavaScript de visualização da comunidade.

  1. Instale o npm no computador local.
  2. Siga o guia de início rápido do gsutil e configure um bucket do Cloud Storage.
  3. Navegue até um diretório local onde você quer localizar o projeto.

4. Iniciar um novo projeto de visualização da comunidade dscc-gen

Abra um terminal e execute o comando:

npx @google/dscc-gen viz

O dscc-gen vai pedir um nome de projeto, um local de armazenamento do GCS "dev" e um local de armazenamento "prod". Insira o local como um URI com o protocolo gs, por exemplo, gs://my-gs-project/example-dev. Um "local" pode ser um bucket do Cloud Storage ou uma pasta dentro desse bucket. Os dois locais de armazenamento precisam ser diferentes. A ferramenta vai validar se você tem acesso aos valores inseridos. Se os locais não existirem, eles serão criados para você.

Depois que o dscc-gen cria uma visualização da comunidade, ele mostra instruções sobre como começar. O terminal vai ficar assim (sua entrada em itálico em negrito):

$ npx @google/dscc-gen viz
npx: installed 345 in 14.957s
? Project name barchart
? What is your GCS dev directory? gs://community-visualizations-codelab/barchart-dev
? What is your GCS prod directory? gs://community-visualizations-codelab/barchart-prod
Installing dependencies...

Created new community viz: barchart

cd barchart and npm run start to begin working on your viz!

Você vai editar os arquivos em src/, especificamente index.js, index.json e index.css, para escrever sua visualização.

Os arquivos em dist/ permitem que você pré-visualize sua visualização localmente em um navegador. webpack.config.js é usado para executar a visualização localmente. README.md oferece uma visão geral dos arquivos e comandos de modelo.

5. Visualizar a visualização localmente

Siga as instruções sugeridas e execute os seguintes comandos no terminal:

cd <folder name>

npm run start

Um navegador vai abrir uma página da Web parecida com esta:

2f219993dfb676d4.png

Saiba mais na próxima etapa.

6. [Info] Como o fluxo de trabalho dscc-gen deve funcionar

O modelo de visualização dscc-gen vem com uma visualização funcional e instruções sobre como usar o modelo. Esta é a principal funcionalidade:

Atualize sua mensagem local:uma mensagem de exemplo está incluída no modelo, mas provavelmente não reflete o caso de uso que você quer oferecer suporte. Baixe dados de amostra que reflitam a visualização que você quer criar.

Fluxo de trabalho de desenvolvimento local: usando os dados de Atualizar seus dados locais, escreva e teste seu código localmente.

Crie e implante sua visualização:crie o código e faça upload dele para seus buckets do Google Cloud Storage.

Carregue a visualização no Data Studio:adicione a visualização ao seu relatório do Data Studio.

7. Definir uma configuração

O arquivo de configuração é o contrato entre você (o desenvolvedor de visualizações) e o editor de relatórios que usa a visualização. Ele define as opções disponíveis depois que a visualização é carregada no Data Studio.

Para essa visualização de gráfico de barras, a configuração terá uma dimensão e uma métrica, além de um elemento de estilo que permite ao editor de relatórios mudar o estilo do gráfico de barras.

Substitua o conteúdo de src/index.json pelo seguinte: Inclua todos os colchetes. Se você estiver digitando novamente, preste atenção à diferença entre colchetes e chaves e à estrutura de aninhamento.

index.json

{
  "data": [
    {
      "id": "concepts",
      "label": "Concepts",
      "elements": [
        {
          "id": "dimension",
          "label": "Dimensions",
          "type": "DIMENSION",
          "options": {
            "min": 1,
            "max": 1
          }
        },
        {
          "id": "metric",
          "label": "Metric",
          "type": "METRIC",
          "options": {
            "min": 1,
            "max": 1
          }
        }        
      ]
    }
  ],
  "style": [
    {
      "id": "barStyling",
      "label": "Bar Styles",
      "elements": [
        {
          "id": "barColor",
          "label": "Bar Color",
          "type": "FILL_COLOR",
          "defaultValue": {
            "color": "#1E555C"
          }
        }
      ]
    }
  ]  
}

8. Baixar mensagem atualizada

Para atualizar os dados armazenados localmente, execute:

npm run update_message

O terminal vai ficar assim:

barchart $ npm run update_message
> @ update message /Users/Code/barchart
> dscc-scripts viz update_message -f object

Copying file://build/index.js [Content-Type=application/javascript]...
Copying file://build/index.css [Content-Type=text/css]...
Copying file://build/manifest.json [Content-Type=application/json]...
Copying file://build/index.json [Content-Type=application/json]...
\ [4 files][ 48.5 KiB/ 48.5 KiB]
Operation completed over 4 objects/48.5 KiB.
Viz deployed to gs://community-visualizations-codelabs/barchart-dev

Esse comando implanta uma visualização no Data Studio que imprime os dados recebidos em uma visualização local. Os scripts imprimem o local de implantação da visualização (destacado acima). Você vai usar esse local para carregar sua visualização no Data Studio.

Para carregar a visualização, abra o relatório que você copiou antes.

  1. Acesse "Editar alerta".
  2. Clique em "Visualizações e componentes da comunidade" na barra de ferramentas.

e927f8fbd49979a5.png

  1. Clique em "Explorar mais".

c236b0cfcc68ce2c.png

  1. Clique em "Criar sua própria visualização"
  2. Insira o caminho do manifesto (o local gs://... impresso no terminal) e clique em "Enviar".

26588c6c8382a3b.png

  1. Clique no card renderizado para adicioná-lo ao relatório.

A visualização vai renderizar um JSON semelhante a este:

a08a61345fe12837.png

Copie toda a mensagem clicando com o botão direito do mouse e selecionando "Selecionar tudo". Depois, substitua o conteúdo de src/localMessage.js pelo que você acabou de copiar. Salve o arquivo.

A visualização em execução localmente no navegador não vai mais aparecer, e se você olhar no console, vai encontrar um erro.

9. Escrever JavaScript para um gráfico de barras

Primeiro, execute o comando a seguir para adicionar d3.js como uma dependência.

npm install d3

Em seguida, substitua src/index.js pelo código abaixo. As mudanças da última etapa estão em negrito.

src/index.js

const d3 = require('d3');
const dscc = require('@google/dscc');
const local = require('./localMessage.js');

// change this to 'true' for local development
// change this to 'false' before deploying
export const LOCAL = true;

const drawViz = (message) => {
  const margin = { left: 20, right: 20, top: 20, bottom: 20 };
  const height = dscc.getHeight() - 10;
  const width = dscc.getWidth();

  const chartHeight = height - margin.top - margin.bottom;
  const chartWidth = width - margin.left - margin.right;

  // remove existing svg
  d3.select("body")
    .selectAll("svg")
    .remove();

  // make a canvas
  const svg = d3
    .select("body")
    .append("svg")
    .attr("width", width)
    .attr("height", height);

  // make an svg for the bar chart
  const chartSvg = svg
    .append("svg")
    .attr("x", margin.left)
    .attr("y", margin.top)
    .attr("width", chartWidth)
    .attr("height", chartHeight);

  // xScale to distribute bars
  const xScale = d3
    .scaleBand()
    .domain(message.tables.DEFAULT.map(d => d.dimension[0]))
    .range([0, chartWidth])
    .paddingInner(0.3);

  // yScale to size bars
  const yScale = d3
    .scaleLinear()
    .domain([0, d3.max(message.tables.DEFAULT.map(d => d.metric[0]))])
    .range([0, chartHeight]);

  // add bars
  const bars = chartSvg
    .append("g")
    .attr("class", "bars")
    .selectAll("rect.bars")
    .data(message.tables.DEFAULT)
    .enter()
    .append("rect")
    .attr("x", d => xScale(d.dimension[0]))
    .attr("y", d => chartHeight - yScale(d.metric[0]))
    .attr("width", xScale.bandwidth())
    .attr("height", d => yScale(d.metric[0]));

  // add text
  const text = svg
    .append("g")
    .selectAll("text")
    .data(message.tables.DEFAULT)
    .enter()
    .append("text")
    .attr(
      "x",
      d => xScale(d.dimension[0]) + xScale.bandwidth() / 2 + margin.left
    )
    .attr("y", height - margin.bottom / 4)
    .attr("text-anchor", "middle")
    .text(d => d.dimension[0]);
};

// renders locally
if (LOCAL) {
  drawViz(local.message);
} else {
  dscc.subscribeToData(drawViz, {transform: dscc.objectTransform});
}

Se o servidor local ainda estiver em execução, verifique o navegador. A página da Web de desenvolvimento local agora vai mostrar um gráfico de barras, como o abaixo.

2cb9f9d8d1bd2063.png

10. Atualizar o manifesto (opcional)

O manifesto da visualização contém metadados sobre ela, além do local do JavaScript, da configuração e do CSS da visualização. Atualize os valores no manifesto. Eles serão usados para fornecer ao usuário final informações sobre a visualização.

Edite src/manifest.json para descrever sua visualização. Confira um exemplo de manifesto abaixo.

src/manifest.json

{
  "name": "Bar Chart",
  "organization": "[My name]",
  "description": "Bar chart",
  "logoUrl": "https://storage.googleapis.com/community-visualizations-codelabs/barchart/bar_chart.png",
  "organizationUrl": "https://github.com/googledatastudio/",
  "supportUrl": "http://github.com/googledatastudio/community-visualizations",
  "privacyPolicyUrl": "http://github.com/googledatastudio/community-visualizations",
  "termsOfServiceUrl": "http://github.com/googledatastudio/community-visualizations",
  "packageUrl": "",
  "devMode": "DEVMODE_BOOL",
  "components": [
    {
      "id": "Bar chart",
      "name": "Bar chart",
      "description": "My first Community Visualization",
      "iconUrl": "https://storage.googleapis.com/community-visualizations-codelabs/table/table_icon.png",
      "resource": {
        "js": "YOUR_GCS_BUCKET/index.js",
        "config": "YOUR_GCS_BUCKET/index.json",
        "css": "YOUR_GCS_BUCKET/index.css"
      }
    }
  ]
}

11. Implantar a visualização

Em src/index.js, mude a constante LOCAL para "false". A visualização no navegador vai parar de funcionar. A linha de código alterada está em negrito. Essa booleana configura se o código deve usar um arquivo de dados "local" ou os dados recebidos do Data Studio.

src/index.js (abridged)

const d3 = require('d3');
const dscc = require('@google/dscc');
const local = require('./localMessage.js');

// change this to 'true' for local development
// change this to 'false' before deployment
export const LOCAL = false;

const drawViz = (message) => {...}

Em seguida, no terminal, execute:

npm run build:dev
npm run push:dev

O comando build:dev agrupa suas dependências do JavaScript em uma saída não minimizada e substitui os valores no manifesto para desativar o armazenamento em cache e apontar para o bucket "dev" que você configurou anteriormente.

O comando push:dev faz upload dos recursos de visualização para o bucket "dev" que você configurou na etapa 1 e imprime o local do bucket no console.

Atualize o relatório do Data Studio. Um gráfico de barras vai aparecer. Tente mudar as opções de dados e estilo no painel de propriedades. Mudar os dados vai mudar as barras. No entanto, o seletor de estilo de cor da barra ainda não vai funcionar.

12. Usar as seleções de cores do Editor de relatórios no gráfico de barras

Para editar o código localmente, primeiro atualize a variável const LOCAL em src/index.js para true. Em seguida, adicione uma nova função chamada styleVal() e atualize o código em drawViz(). Seu src/index.js vai ficar assim:

src/index.js

const d3 = require('d3');
const dscc = require('@google/dscc');
const local = require('./localMessage.js');

// change this to 'true' for local development
// change this to 'false' before deploying
export const LOCAL = false;

// parse the style value
const styleVal = (message, styleId) => {
  if (typeof message.style[styleId].defaultValue === "object") {
    return message.style[styleId].value.color !== undefined
      ? message.style[styleId].value.color
      : message.style[styleId].defaultValue.color;
  }
  return message.style[styleId].value !== undefined
    ? message.style[styleId].value
    : message.style[styleId].defaultValue;
};

const drawViz = message => {
  const margin = { left: 20, right: 20, top: 20, bottom: 20 };
  const height = dscc.getHeight() - 10;
  const width = dscc.getWidth();

  const chartHeight = height - margin.top - margin.bottom;
  const chartWidth = width - margin.left - margin.right;

  // remove existing svg
  d3.select("body")
    .selectAll("svg")
    .remove();

  // make a canvas
  const svg = d3
    .select("body")
    .append("svg")
    .attr("width", width)
    .attr("height", height);

  // make an svg for the bar chart
  const chartSvg = svg
    .append("svg")
    .attr("x", margin.left)
    .attr("y", margin.top)
    .attr("width", chartWidth)
    .attr("height", chartHeight);

  // xScale to distribute bars
  const xScale = d3
    .scaleBand()
    .domain(message.tables.DEFAULT.map(d => d.dimension[0]))
    .range([0, chartWidth])
    .paddingInner(0.3);

  // yScale to size bars
  const yScale = d3
    .scaleLinear()
    .domain([0, d3.max(message.tables.DEFAULT.map(d => d.metric[0]))])
    .range([0, chartHeight]);

  // get the user-selected bar color
  let barColor = styleVal(message, "barColor");

  // add bars
  const bars = chartSvg
    .append("g")
    .attr("class", "bars")
    .selectAll("rect.bars")
    .data(message.tables.DEFAULT)
    .enter()
    .append("rect")
    .attr("x", d => xScale(d.dimension[0]))
    .attr("y", d => chartHeight - yScale(d.metric[0]))
    .attr("width", xScale.bandwidth())
    .attr("height", d => yScale(d.metric[0]))
    .attr("fill", barColor);

  // add text
  const text = svg
    .append("g")
    .selectAll("text")
    .data(message.tables.DEFAULT)
    .enter()
    .append("text")
    .attr(
      "x",
      d => xScale(d.dimension[0]) + xScale.bandwidth() / 2 + margin.left
    )
    .attr("y", height - margin.bottom / 4)
    .attr("text-anchor", "middle")
    .attr("fill", barColor)
    .text(d => d.dimension[0]);
};

// renders locally
if (LOCAL) {
  drawViz(local.message);
} else {
  dscc.subscribeToData(drawViz, {transform: dscc.objectTransform});
}

Salve src/index.js e volte para a sessão do navegador local. Veja o app sendo executado localmente e, em seguida, mude a constante LOCAL para false.

Faça upload dos arquivos atualizados para o Google Cloud Storage executando:

npm run build:dev
npm run push:dev

Atualize o relatório do Data Studio. Agora você pode mudar a cor das barras.

fd4e436a6e8dd58b.gif

13. Implantações de produção

Implantações de produção

Quando estiver satisfeito com a visualização, verifique se a constante LOCAL em src/index.js é "false" e execute.

npm run build:prod
npm run push:prod

Isso vai implantar seus arquivos no local do bucket do GCS "prod". Além disso, o armazenamento em cache será ativado, e o JavaScript agrupado será minimizado adequadamente.

Assim como antes, o local da implantação será impresso no console. Use esse "manifest path" para carregar sua visualização "prod" em um relatório do Data Studio.

Parabéns! Você acabou de criar sua primeira visualização da comunidade com a ferramenta dscc-gen.

14. Próximas etapas

Ampliar sua visualização

Faça mais com as visualizações da comunidade

Outros recursos

Confira abaixo diversos recursos que podem ajudar você a se aprofundar no material abordado neste codelab.

Tipo de recurso

Recursos do usuário

Recursos para desenvolvedores

Documentação

Central de Ajuda

Documentação para desenvolvedores

Notícias e atualizações

Inscreva-se no Data Studio > Configurações do usuário

Lista de e-mails para desenvolvedores

Fazer perguntas

Fórum de usuários

Stack Overflow [google-data-studio]Fórum de desenvolvedores do Data Studio

Vídeos

Data Studio no YouTube

Em breve!

Exemplos

Galeria de relatórios

Repositório de código aberto