Crea visualizaciones de la comunidad de Data Studio con dscc-gen

1. Introducción

Google Data Studio te permite crear paneles interactivos y dinámicos con visualizaciones de datos atractivas de forma gratuita. Las visualizaciones de la comunidad son una función de Data Studio que le permite crear visualizaciones personalizadas con JavaScript que se integran en sus informes de Data Studio.

Qué aprenderás

En este codelab, aprenderás lo siguiente:

  • Cómo funciona una visualización de la comunidad en Google Data Studio
  • Cómo compilar una visualización de la comunidad con nuestra herramienta de plantilla de línea de comandos
  • Cómo usar bibliotecas de visualización de JavaScript para compilar visualizaciones de la comunidad
  • Cómo integrar la visualización de la comunidad en un panel de Data Studio

Requisitos

Para completar este codelab, necesitarás lo siguiente:

  • Acceso a Internet, un navegador web, una terminal y tu editor de texto favorito
  • Una Cuenta de Google
  • Acceso a un bucket de Google Cloud Storage
  • Conocimientos de JavaScript, Node.js y la línea de comandos

En este codelab, se supone lo siguiente:

  • Ya creaste una visualización de la comunidad (primer codelab del vínculo TODO)
  • Conoces Google Cloud Storage.

Para comenzar, haz una copia de este informe haciendo clic en 14575f934e800122.png en la esquina superior derecha. Mantenlo abierto en otra pestaña a medida que avances en el codelab.

2. Encuesta rápida

¿Por qué elegiste este codelab?

Me interesa la visualización de datos en general. Quiero obtener más información sobre Data Studio Quiero crear mi propia visualización de la comunidad. Estoy intentando integrar Data Studio en otra plataforma. Me interesan las soluciones de Google Cloud.

¿Cómo planeas usar este codelab/instructivo?

Léelo y completa los ejercicios. Pasar solo por alto .

¿Cómo calificaría su experiencia con Data Studio?

Nunca lo escuché hablar de eso Sé lo que es, pero no lo uso. Lo uso con frecuencia. Soy un usuario experto.

¿Cuál de las siguientes opciones describe mejor tus antecedentes?

Desarrollador Negocio / analista de datos Científico de datos / ingeniero de datos Analista financiero Experto en marketing, redes sociales y estadísticas digitales Analista de negocios Diseñador Otro .

Dirígete a la siguiente página para enviar la información de la encuesta.

3. Desarrollo de la visualización de la comunidad con dscc-gen

dscc-gen

dscc-gen es una herramienta de línea de comandos que proporciona plantillas y flujos de trabajo bien definidos para las visualizaciones y los conectores de comunidades. La plantilla de visualización de la comunidad proporciona una visualización de trabajo y un flujo de trabajo que te permite ver de inmediato los cambios en el código de la visualización y las secuencias de comandos para validar, crear e implementar tus visualizaciones.

Configuración

dscc-gen usa gsutil en secuencias de comandos de implementación, npm y webpack para compilar el código JavaScript de visualización de la comunidad.

  1. Instala npm en tu computadora local
  2. Revisa la guía de inicio rápido de gsutil y configura un bucket de Google Cloud Storage.
  3. Navega a un directorio local en el que quieras ubicar tu proyecto.

4. Inicia un nuevo proyecto de visualización de la comunidad de dscc-gen

Abre una terminal y ejecuta el comando:

npx @google/dscc-gen viz

dscc-gen te pedirá un nombre de proyecto, como “dev” ubicación de almacenamiento de GCS y un atributo “prod” ubicación de almacenamiento. Ingresa la ubicación como un URI con el protocolo gs, p.ej., gs://my-gs-project/example-dev Una “ubicación” puede ser un bucket de Cloud Storage o una carpeta dentro de ese bucket. Ambas ubicaciones de almacenamiento deben ser diferentes. La herramienta validará que tengas acceso a los valores que ingreses. Si las ubicaciones no existen, se crearán para ti.

Una vez que dscc-gen crea una nueva Visualización de la comunidad, imprime instrucciones para comenzar. Tu terminal se verá de la siguiente manera (tu entrada en cursiva en negrita):

$ 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!

Editarás los archivos en src/, específicamente index.js, index.json y index.css, para escribir tu visualización.

Los archivos en dist/ te permiten obtener una vista previa de tu visualización de manera local en un navegador. webpack.config.js se usa para ejecutar la visualización de manera local. README.md proporciona una descripción general de los comandos y archivos de plantilla.

5. Obtén una vista previa de tu visualización de manera local

Sigue las instrucciones sugeridas y ejecuta los siguientes comandos en la terminal:

cd <folder name>

npm run start

Se abrirá un navegador con una página web similar a esta:

2f219993dfb676d4.png

Obtén más información en el siguiente paso.

6. [Información] Cómo está previsto que funcione el flujo de trabajo de dscc-gen

La plantilla de visualización de dscc-gen incluye una visualización funcional, así como instrucciones para usarla. Esta es la funcionalidad principal:

Actualiza tu mensaje local: La plantilla incluye un mensaje de muestra, pero es probable que no refleje el caso de uso que quieres admitir. Debes descargar datos de muestra que reflejen la visualización que deseas crear.

Flujo de trabajo de desarrollo local: Usa los datos de Actualiza tus datos locales para escribir y probar el código de forma local.

Creación y implementar la visualización: Compila tu código y súbelo a tus buckets de Google Cloud Storage.

Carga tu visualización en Data Studio: Agrega la visualización a tu informe de Data Studio.

7. Define una configuración

El archivo de configuración es el contrato entre tú (el desarrollador de visualización) y el editor de informes que usa la visualización. Define las opciones disponibles una vez que la visualización se carga en Data Studio.

Para esta visualización de gráfico de barras, la configuración tendrá una dimensión y una métrica, así como un elemento de estilo que permite que el editor de informes cambie el estilo del gráfico de barras.

Reemplaza el contenido de src/index.json con lo siguiente. Asegúrate de incluir todos los corchetes. Si vuelves a escribirlo, asegúrate de prestar atención a la diferencia entre las llaves y las llaves, y la estructura de anidación.

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. Descargar mensaje actualizado

Para actualizar tus datos almacenados de forma local, ejecuta el siguiente comando:

npm run update_message

Tu terminal debería verse de la siguiente manera:

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

Este comando implementa una visualización en Data Studio que imprime los datos recibidos en una visualización local. Las secuencias de comandos imprimen la ubicación de implementación de tu visualización (resaltada anteriormente). Usarás esta ubicación para cargar tu visualización en Data Studio.

Para cargar tu visualización, abre el informe que copiaste anteriormente.

  1. Ir a "Editar informe"
  2. Haz clic en “Visualizaciones y componentes de la comunidad”. en la barra de herramientas

e927f8fbd49979a5.png

  1. Haz clic en "Explorar más".

c236b0cfcc68ce2c.png

  1. Haz clic en “Crear tu propia visualización”.
  2. Ingresa la ruta de acceso del manifiesto (la ubicación gs://... impresa en tu terminal) y haz clic en Enviar

26588c6c8382a3b.png

  1. Haz clic en la tarjeta renderizada para agregarla a tu informe

La visualización debe renderizar un JSON similar al siguiente:

a08a61345fe12837.png

Para copiar todo el mensaje, haz clic con el botón derecho, selecciona todo y reemplaza el contenido de src/localMessage.js con lo que acabas de copiar. Guarda el archivo.

La visualización que se ejecuta localmente en tu navegador no debería aparecer más, y si miras en la consola, verás un error.

9. Escribe JavaScript para un gráfico de barras

Primero, ejecuta el siguiente comando para agregar d3.js como dependencia.

npm install d3

Luego, reemplaza src/index.js por el siguiente código. Los cambios realizados en el último paso aparecen en negrita.

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});
}

Si el servidor local aún se está ejecutando, verifica tu navegador. Ahora, la página web de desarrollo local debería mostrar un gráfico de barras como el que se muestra a continuación.

2cb9f9d8d1bd2063.png

10. Actualiza el manifiesto (opcional)

El manifiesto de la visualización contiene metadatos sobre tu visualización, así como la ubicación de JavaScript, config y CSS de la visualización. Actualiza los valores en tu manifiesto; se utilizarán para proporcionar a los usuarios finales información sobre tu visualización.

Edita src/manifest.json para describir tu visualización. A continuación, se incluye un manifiesto de muestra.

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. Implementa la visualización

En src/index.js, cambia const LOCAL a “false”. La visualización en tu navegador debería dejar de funcionar. La línea de código modificada está en negrita. Este booleano configura si el código debe usar o no un parámetro "local" o los recibidos de 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) => {...}

Luego, en tu terminal, ejecuta lo siguiente:

npm run build:dev
npm run push:dev

El comando build:dev empaqueta tus dependencias de JavaScript en un resultado sin reducir y reemplaza los valores en tu manifiesto para inhabilitar el almacenamiento en caché y apuntar a “dev”. que configuraste antes.

El comando push:dev sube tus recursos de visualización a “dev”. que configuraste en el paso 1 y, luego, imprime la ubicación del bucket en la consola.

Actualizar el informe de Data Studio Deberías ver un gráfico de barras. Intenta cambiar las opciones de datos y estilo en el panel de propiedades. Si cambias los datos, se cambiarán las barras. Sin embargo, el selector de estilo de color de la barra aún no funcionará.

12. Usar las selecciones de color del editor de informes en el gráfico de barras

Para editar el código de forma local, primero actualiza la variable const LOCAL en src/index.js a true. Luego, agrega una nueva función llamada styleVal() y actualiza el código endrawViz(). Tu src/index.js debería verse de la siguiente manera:

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});
}

Guarda src/index.js y, luego, regresa a la sesión local de tu navegador. Observa que se ejecuta de manera local; luego, cambia const LOCAL a false.

Sube tus archivos actualizados a Google Cloud Storage con el siguiente comando:

npm run build:dev
npm run push:dev

Actualiza tu informe de Data Studio. Ahora deberías poder cambiar el color de las barras.

fd4e436a6e8dd58b.gif

13. Implementaciones de producción

Implementaciones de producción

Una vez que estés conforme con la visualización, asegúrate de que const LOCAL en src/index.js sea falso y, luego, ejecuta.

npm run build:prod
npm run push:prod

Esta acción implementará tus archivos en el entorno de producción Ubicación del bucket de GCS. Además, se habilitará el almacenamiento en caché y se reducirá el paquete de JavaScript de forma apropiada.

Al igual que antes, la ubicación de la implementación se imprimirá en la consola. Usa esta “ruta del manifiesto” para cargar tu archivo "prod" en un informe de Data Studio.

¡Felicitaciones! Acabas de crear tu primera visualización de la comunidad con la herramienta dscc-gen.

14. Próximos pasos

Amplía tu visualización

Haz más tareas con las visualizaciones de la comunidad

Recursos adicionales

A continuación, se muestran varios recursos a los que puedes acceder para ayudarte a profundizar en el material que vimos en este codelab.

Tipo de recurso

Funciones del usuario

Funciones para desarrolladores

Documentación

Centro de ayuda

Documentación para desarrolladores

Noticias y Actualizaciones

Regístrese en Data Studio > Configuración del usuario

Lista de distribución de desarrolladores

Haz preguntas

Foro de usuarios

Stack Overflow [google-data-studio]Foro de desarrolladores de Data Studio

Videos

Data Studio en YouTube

Próximamente

Ejemplos

Galería de informes

Repositorio de código abierto