Создание визуализаций сообщества Data Studio с помощью dscc-gen

1. Введение

Google Data Studio позволяет бесплатно создавать динамические интерактивные панели мониторинга с красивыми визуализациями данных. Функция «Визуализации от сообщества» — это возможность Data Studio создавать собственные визуализации с помощью JavaScript, которые интегрируются с отчетами Data Studio.

Что вы узнаете

В этом практическом занятии вы узнаете:

  • Как работает визуализация данных в Google Data Studio Community.
  • Как создать визуализацию сообщества с помощью нашего инструмента командной строки для создания шаблонов
  • Как использовать библиотеки визуализации JavaScript для создания визуализаций, созданных сообществом.
  • Как интегрировать визуализацию сообщества в панель мониторинга Data Studio

Что вам понадобится

Для выполнения этого практического задания вам потребуется:

  • Доступ к интернету, веб-браузеру, терминалу и вашему любимому текстовому редактору.
  • Аккаунт Google
  • Доступ к хранилищу Google Cloud Storage.
  • Знание JavaScript, Node.js и работы с командной строкой.

В этом практическом занятии предполагается следующее:

  • Вы уже создали визуализацию сообщества (ссылка на первый код-лабораторный пример в TODO)
  • Знакомы с Google Cloud Storage?

Для начала создайте копию этого отчета , нажав на соответствующую кнопку. 14575f934e800122.png в правом верхнем углу. Держите его открытым в другой вкладке, пока выполняете задание.

2. Краткий опрос

Почему вы выбрали именно этот учебный семинар?

Меня интересует визуализация данных в целом. Я хочу узнать больше о Data Studio. Я хочу создать собственную визуализацию сообщества. Я пытаюсь интегрировать Data Studio с другой платформой. Меня интересуют решения Google Cloud.

Как вы планируете использовать этот практический пример/учебное пособие?

Прочитайте текст и выполните упражнения. Просматривать только бегло

Как бы вы оценили свой опыт работы с Data Studio?

Никогда о нём не слышал. Я знаю, что это такое, но я этим не пользуюсь. Я им регулярно пользуюсь. Я опытный пользователь.

Что лучше всего описывает ваше прошлое?

Разработчик Бизнес-аналитик / Аналитик данных Специалист по анализу данных / Инженер по анализу данных Финансовый аналитик Эксперт по маркетингу / социальным сетям / цифровой аналитике Бизнес-аналитик Дизайнер Другой

Перейдите на следующую страницу, чтобы отправить информацию для опроса.

3. Разработка средств визуализации сообщества с помощью dscc-gen

dscc-gen

dscc-gen — это инструмент командной строки, предоставляющий шаблоны и рабочие процессы для визуализаций сообщества и коннекторов сообщества. Шаблон визуализации сообщества предоставляет работающую визуализацию и рабочий процесс, позволяющий немедленно увидеть изменения в коде визуализации, а также скрипты для проверки, сборки и развертывания ваших визуализаций.

Настраивать

dscc-gen использует gsutil в скриптах развертывания, а также npm и webpack для сборки JavaScript-кода для визуализации сообщества.

  1. Установите npm на свой локальный компьютер.
  2. Пройдите краткое руководство по gsutil и настройте хранилище Google Cloud Storage.
  3. Перейдите в локальную директорию, где вы хотите разместить свой проект.

4. Запустите новый проект dscc-gen Community Visualization.

Откройте терминал и выполните команду:

npx @google/dscc-gen viz

dscc-gen запросит у вас имя проекта, местоположение хранилища GCS для версии «dev» и местоположение хранилища для версии «prod». Введите местоположение в виде URI с протоколом gs , например gs://my-gs-project/example-dev . «Местоположение» может быть либо корзиной Cloud Storage, либо папкой внутри этой корзины. Два местоположения хранилища должны быть разными. Инструмент проверит наличие у вас доступа к введенным значениям. Если местоположения не существуют, они будут созданы для вас.

После создания новой визуализации сообщества программой dscc-gen она выведет инструкции по началу работы. Ваш терминал будет выглядеть примерно так (ваш ввод выделен жирным курсивом ):

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

Вам предстоит отредактировать файлы в папке src/ — а именно, index.js , index.json и index.css — для создания визуализации.

Файлы в dist/ позволяют просматривать визуализацию локально в браузере. webpack.config.js используется для локального запуска визуализации. README.md содержит обзор файлов шаблонов и команд.

5. Предварительный просмотр визуализации локально.

Следуйте предложенным инструкциям и выполните следующие команды в терминале:

cd <folder name>

npm run start

В браузере откроется веб-страница, которая будет выглядеть примерно так:

2f219993dfb676d4.png

Узнайте больше на следующем шаге.

6. [Информация] Как должен работать рабочий процесс dscc-gen

Шаблон визуализации dscc-gen поставляется с работающей визуализацией и инструкциями по ее использованию. Вот основные функции:

Обновите ваше локальное сообщение: Пример сообщения включен в шаблон, но, вероятно, он не соответствует сценарию использования, который вы хотите реализовать. Вам следует загрузить примеры данных, отражающие визуализацию, которую вы хотите создать.

Локальный процесс разработки : используя данные из раздела «Обновите свои локальные данные» , пишите и тестируйте свой код локально.

Создайте и разверните свою визуализацию: соберите код и загрузите его в свои хранилища Google Cloud Storage.

Загрузите визуализацию в Data Studio: добавьте визуализацию в отчет Data Studio.

7. Определите конфигурацию.

Файл конфигурации — это соглашение между вами (разработчиком визуализации) и редактором отчетов, использующим визуализацию. Он определяет параметры, доступные после загрузки визуализации в Data Studio.

Для этой визуализации в виде столбчатой ​​диаграммы в конфигурации будет одно измерение и одна метрика, а также элемент стиля, позволяющий редактору отчетов изменять стиль столбчатой ​​диаграммы.

Замените содержимое файла src/index.json следующим содержимым. Убедитесь, что все скобки присутствуют. При повторном вводе обратите внимание на разницу между квадратными и фигурными скобками, а также на структуру вложенности.

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. Загрузите обновленное сообщение.

Для обновления локально сохранённых данных выполните следующую команду:

npm run update_message

В терминале должно отображаться примерно следующее:

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

Эта команда развертывает визуализацию в Data Studio, которая выводит полученные данные в локальную визуализацию. Скрипты выводят местоположение развертывания вашей визуализации (выделено выше). Вы будете использовать это местоположение для загрузки вашей визуализации в Data Studio.

Чтобы загрузить визуализацию, откройте отчет, который вы скопировали ранее.

  1. Перейдите в раздел «Редактировать отчет».
  2. Нажмите на кнопку «Визуализации и компоненты сообщества» на панели инструментов.

e927f8fbd49979a5.png

  1. Нажмите «Узнать больше»

c236b0cfcc68ce2c.png

  1. Нажмите «Создать собственную визуализацию».
  2. Введите путь к вашему манифесту (адрес gs://... , отображаемый в терминале) и нажмите «Отправить».

26588c6c8382a3b.png

  1. Нажмите на отобразившуюся карточку, чтобы добавить её в отчёт.

Визуализация должна отображать JSON-данные, которые выглядят примерно так:

a08a61345fe12837.png

Скопируйте всё сообщение, щёлкнув правой кнопкой мыши и выделив всё, и замените содержимое файла src/localMessage.js скопированным текстом. Сохраните файл.

Визуализация, запущенная локально в вашем браузере, больше не должна отображаться, и если вы посмотрите в консоль, то увидите ошибку.

9. Напишите код JavaScript для построения столбчатой ​​диаграммы.

Сначала выполните следующую команду, чтобы добавить d3.js в качестве зависимости.

npm install d3

Затем замените src/index.js следующим кодом. Изменения, внесенные на предыдущем шаге, выделены жирным шрифтом.

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

Если локальный сервер всё ещё работает, проверьте свой браузер. На локальной веб-странице для разработчиков теперь должна отображаться гистограмма, как показано ниже.

2cb9f9d8d1bd2063.png

10. Обновить манифест (необязательно)

В вашем манифесте визуализации содержатся метаданные о вашей визуализации, а также местоположение JavaScript-кода, конфигурации и CSS-файлов визуализации. Обновите значения в вашем манифесте — они будут использоваться для предоставления конечному пользователю информации о вашей визуализации.

Отредактируйте файл src/manifest.json, чтобы описать вашу визуализацию. Пример манифеста приведен ниже.

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. Разверните визуализацию.

В src/index.js измените значение параметра const LOCAL на "false". Визуализация в браузере должна перестать работать. Измененная строка кода выделена жирным шрифтом. Этот логический параметр определяет, следует ли использовать локальный файл данных или данные, полученные из 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) => {...}

Затем в терминале выполните следующую команду:

npm run build:dev
npm run push:dev

Команда build:dev объединяет ваши зависимости JavaScript в неминифицированный выходной файл и заменяет значения в вашем манифесте, чтобы отключить кэширование и указать на сегмент "dev", который вы настроили ранее.

Команда push:dev загружает ваши ресурсы визуализации в контейнер "dev", который вы настроили на шаге 1, и выводит местоположение контейнера в консоль.

Обновите отчет Data Studio. Вы должны увидеть столбчатую диаграмму. Попробуйте изменить данные и параметры стиля на панели свойств. Изменение данных изменит столбцы. Однако селектор стиля цвета столбцов пока работать не будет.

12. Используйте выбор цветов в редакторе отчетов для гистограммы.

Чтобы отредактировать код локально, сначала измените значение переменной `const LOCAL` в src/index.js на true . Затем добавьте новую функцию с именем styleVal() и обновите код в функции `drawViz()`. Ваш файл `src/index.js` должен выглядеть примерно так:

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

Сохраните файл src/index.js, затем вернитесь в локальную сессию браузера. Убедитесь, что он работает локально, а затем снова измените значение const LOCAL на false .

Загрузите обновленные файлы в Google Cloud Storage, выполнив следующую команду:

npm run build:dev
npm run push:dev

Обновите отчет в Data Studio. Теперь вы сможете изменить цвет столбцов.

fd4e436a6e8dd58b.gif

13. Развертывание в производственной среде

Развертывание в производственной среде

Когда вас устроит визуализация, убедитесь, что параметр const LOCAL в src/index.js имеет значение false, а затем запустите программу.

npm run build:prod
npm run push:prod

Это позволит развернуть ваши файлы в вашем "производственном" сегменте GCS. Кроме того, будет включено кэширование, а встроенный JavaScript будет соответствующим образом минифицирован.

Как и прежде, местоположение вашего развертывания будет отображено в консоли. Используйте этот "путь в манифесте", чтобы загрузить визуализацию "prod" в отчет Data Studio.

Поздравляем! Вы только что создали свою первую визуализацию сообщества с помощью инструмента dscc-gen.

14. Дальнейшие шаги

Расширьте возможности визуализации.

Расширьте возможности визуализации данных, созданной сообществом.

Дополнительные ресурсы

Ниже представлены различные ресурсы, которые помогут вам глубже изучить материал, рассматриваемый в этом практическом занятии.

Тип ресурса

Пользовательские функции

Функции для разработчиков

Документация

Центр поддержки

Документация для разработчиков

Новости и обновления

Зарегистрируйтесь в Data Studio > Настройки пользователя

Список рассылки для разработчиков

Задавайте вопросы

Пользовательский форум

Stack Overflow [google-data-studio] Форум разработчиков Data Studio

Видео

Data Studio на YouTube

Вскоре!

Примеры

Галерея отчетов

Репозиторий открытого исходного кода