Tworzenie wizualizacji utworzonych przez społeczność w Studiu danych za pomocą dscc-gen

1. Wprowadzenie

Studio danych Google pozwala bezpłatnie tworzyć dynamiczne, interaktywne panele z atrakcyjnymi wizualizacjami danych. Wizualizacje utworzone przez społeczność to funkcja Studia danych umożliwiająca tworzenie niestandardowych wizualizacji za pomocą kodu JavaScript, które integrują się z raportami Studia danych.

Czego się nauczysz

Z tego ćwiczenia w Codelabs dowiesz się:

  • Jak działa wizualizacja utworzona przez społeczność w Studiu danych Google
  • Jak utworzyć wizualizację utworzoną przez społeczność za pomocą narzędzia do tworzenia szablonów wiersza poleceń
  • Jak używać bibliotek wizualizacji JavaScript do tworzenia wizualizacji utworzonych przez społeczność
  • Jak zintegrować wizualizację utworzoną przez społeczność z panelem Studia danych

Czego potrzebujesz

Aby ukończyć to ćwiczenie, potrzebujesz:

  • Dostęp do internetu, przeglądarki, terminala i ulubionego edytora tekstu
  • konto Google,
  • Dostęp do zasobnika Google Cloud Storage
  • znajomość języka JavaScript, Node.js i wiersza poleceń.

W tym ćwiczeniu w programowaniu zakładamy, że:

  • Masz już utworzoną wizualizację utworzoną przez społeczność (pierwsze ćwiczenia z programowania dotyczące TODO)
  • Znają Google Cloud Storage

Aby rozpocząć, utwórz kopię tego raportu , klikając 14575f934e800122.png w prawym górnym rogu. Podczas wykonywania ćwiczeń z programowania pozostaw go otwarte w innej karcie.

2. Krótka ankieta

Co skłoniło Cię do wybrania tego ćwiczenia z programowania?

Interesuje mnie ogólnie wizualizacja danych. Chcę dowiedzieć się więcej o Studiu danych Chcę utworzyć własną wizualizację utworzoną przez społeczność. Próbuję zintegrować Studio danych z inną platformą. Interesują mnie rozwiązania Google Cloud.

W jaki sposób zamierzasz korzystać z tego ćwiczenia lub samouczka?

Przeczytaj go i wykonaj ćwiczenia Tylko jazda na rolkach

Jak oceniasz korzystanie ze Studia danych?

Nigdy o tym nie słyszałem Wiem, co to jest, ale nie korzystam. Używam go regularnie. Jestem doświadczonym użytkownikiem.

Co najlepiej opisuje Twoją sytuację?

Deweloper Analityk biznesowy lub analityk danych Badacz danych / inżynier danych Analityk finansowy Marketing / media społecznościowe / ekspert ds. analityki internetowej Analityk biznesowy Projektant Inne

Przejdź na następną stronę, aby przesłać informacje o ankiecie.

3. Tworzenie wizualizacji utworzonej przez społeczność za pomocą narzędzia dscc-gen

dscc-gen

dscc-gen to narzędzie wiersza poleceń, które udostępnia sprawdzone szablony i przepływy pracy do tworzenia wizualizacji utworzonych przez społeczność i społecznościowe oprogramowanie sprzęgające. Szablon wizualizacji utworzony przez społeczność zawiera działającą wizualizację oraz przepływ pracy, dzięki któremu możesz natychmiast zobaczyć zmiany w kodzie wizualizacji, a także skrypty do weryfikacji, tworzenia i wdrażania wizualizacji.

Konfiguracja

dscc-gen używa polecenia gsutil w skryptach wdrożenia oraz npm i pakietu webpack do tworzenia kodu JavaScript wizualizacji przez społeczność.

  1. Zainstaluj npm na komputerze lokalnym
  2. Zapoznaj się z krótkim wprowadzeniem do narzędzia gsutil i skonfiguruj zasobnik Google Cloud Storage.
  3. Przejdź do katalogu lokalnego, w którym chcesz zlokalizować projekt.

4. Rozpocznij nowy projekt wizualizacji utworzonej przez społeczność dscc-gen

Otwórz terminal i uruchom polecenie:

npx @google/dscc-gen viz

dscc-gen poprosi Cię o nazwę projektu (czyli „dev” – Lokalizacja przechowywania danych GCS i „prod” lokalizację pamięci masowej. Wpisz lokalizację w postaci identyfikatora URI z protokołem gs, np. gs://my-gs-project/example-dev „Lokalizacja” może być zasobnikiem Cloud Storage lub folderem w tym zasobniku. Muszą być one różne. Narzędzie sprawdzi, czy masz dostęp do wpisanych wartości. Jeśli lokalizacje nie istnieją, utworzymy je za Ciebie.

Gdy zespół dscc-gen utworzy nową wizualizację utworzoną przez społeczność, wydrukuje on instrukcje, jak zacząć z niej korzystać. Terminal będzie wyglądać mniej więcej tak (wprowadzone dane są zapisane pogrubioną kursywą):

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

Aby utworzyć wizualizację, zmodyfikujesz pliki w usługach src/, a w szczególności index.js, index.json i index.css.

Pliki w usłudze dist/ umożliwiają wyświetlanie podglądu wizualizacji lokalnie w przeglądarce. Interfejs webpack.config.js służy do lokalnego uruchamiania wizualizacji. W README.md znajdziesz omówienie plików szablonów i polecenia.

5. Wyświetlanie podglądu wizualizacji lokalnie

Postępuj zgodnie z sugerowanymi instrukcjami i uruchom w terminalu te polecenia:

cd <folder name>

npm run start

W przeglądarce otworzy się strona internetowa podobna do tej:

2f219993dfb676d4.png

Więcej informacji znajdziesz w następnym kroku.

6. [Informacje] Jak działa przepływ pracy dscc-gen

Szablon wizualizacji dscc-gen zawiera działającą wizualizację oraz instrukcje korzystania z tego szablonu. Oto jej główna funkcjonalność:

Zaktualizować wiadomość lokalną: szablon zawiera przykładowy komunikat, ale prawdopodobnie nie odzwierciedla on konkretnego zastosowania. Musisz pobrać przykładowe dane odzwierciedlające wizualizację, którą chcesz utworzyć.

Proces programowania lokalnego: skorzystaj z danych opisanych w artykule Aktualizowanie danych lokalnych, aby lokalnie napisać i przetestować kod.

Tworzenie wdrożyć wizualizację: utwórz kod przesłać go do zasobników Google Cloud Storage.

Wczytaj wizualizację w Studiu danych: dodaj wizualizację do raportu Studia danych.

7. Zdefiniuj konfigurację

Plik konfiguracji to umowa między Tobą (deweloperem wizualizacji) a edytorem raportów korzystającym z wizualizacji. Definiuje opcje dostępne po wczytaniu wizualizacji do Studia danych.

Na potrzeby tej wizualizacji na wykresie słupkowym konfiguracja będzie zawierać 1 wymiar i 1 rodzaj danych, a także element stylu, który umożliwia edytorowi raportów zmianę stylu wykresu słupkowego.

Zamień zawartość pola src/index.json na taką: Pamiętaj, by uwzględnić wszystkie nawiasy. Jeśli chcesz ponownie wpisać ten tekst, zwróć uwagę na różnicę między nawiasami kwadratowymi i klamrowymi a strukturą zagnieżdżania.

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. Pobierz zaktualizowaną wiadomość

Aby zaktualizować dane przechowywane lokalnie, uruchom polecenie:

npm run update_message

Terminal powinien wyglądać mniej więcej tak:

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

To polecenie wdraża w Studiu danych wizualizację, która wyświetla otrzymane dane w wizualizacji lokalnej. Skrypty drukują lokalizację wdrożenia wizualizacji (wyróżnioną powyżej). Będziesz używać tej lokalizacji do wczytywania wizualizacji w Studiu danych.

Aby wczytać wizualizację, otwórz skopiowany wcześniej raport.

  1. Kliknij „Edytuj raport”
  2. Kliknij „Wizualizacje i komponenty utworzone przez społeczność”. na pasku narzędzi

e927f8fbd49979a5.png

  1. Kliknij „Zobacz więcej”.

c236b0cfcc68ce2c.png

  1. Kliknij „Utwórz własną wizualizację”.
  2. Wpisz ścieżkę pliku manifestu (lokalizację gs://... wyświetlaną w terminalu) i kliknij Prześlij

26588c6c8382a3b.png

  1. Kliknij wyrenderowaną kartę, aby dodać ją do raportu

Wizualizacja powinna wyrenderować kod JSON podobny do tego:

a08a61345fe12837.png

Skopiuj całą wiadomość, klikając prawym przyciskiem myszy i wybierając wszystko, a następnie zastąp zawartość pola src/localMessage.js skopiowaną treścią. Zapisz plik.

Wizualizacja uruchomiona lokalnie w przeglądarce nie powinna już być wyświetlana. W konsoli pojawi się komunikat o błędzie.

9. Pisanie kodu JavaScript na potrzeby wykresu słupkowego

Najpierw uruchom poniższe polecenie, aby dodać kod d3.js jako zależność.

npm install d3

Następnie zastąp src/index.js poniższym kodem. Zmiany dokonane w ostatnim kroku są pogrubione.

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

Jeśli serwer lokalny nadal działa, sprawdź przeglądarkę. Strona deweloperska powinna teraz zawierać wykres słupkowy, podobny do tego poniżej.

2cb9f9d8d1bd2063.png

10. Zaktualizuj plik manifestu (opcjonalnie)

Plik manifestu wizualizacji zawiera metadane wizualizacji oraz lokalizację jej kodu JavaScript, konfiguracji i CSS. Zaktualizuj wartości w pliku manifestu – będą one służyć do przekazywania użytkownikom informacji o wizualizacji.

Aby opisać wizualizację, edytuj plik src/manifest.json. Przykładowy plik manifestu znajdziesz poniżej.

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. Wdróż wizualizację

W src/index.js zmień ustawienie const LOCAL na „false”. Wizualizacja w przeglądarce powinna przestać działać. Zmieniony wiersz kodu jest pogrubiony. Ta wartość logiczna określa, czy w kodzie należy użyć wartości „local” pliku danych lub danych otrzymanych ze Studia danych.

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) => {...}

Następnie w terminalu uruchom polecenie:

npm run build:dev
npm run push:dev

Polecenie build:dev grupuje zależności JavaScriptu w niezminimalizowane dane wyjściowe i zastępuje wartości w pliku manifestu, aby wyłączyć buforowanie i wskazać „dev”. skonfigurowany wcześniej zasobnik.

Polecenie push:dev przesyła zasoby wizualizacji do narzędzia „dev” skonfigurowany w kroku 1 i wydrukuje w konsoli jego lokalizację.

Odśwież raport Studia danych. Powinien się wyświetlić wykres słupkowy. Spróbuj zmienić opcje danych i stylu w panelu właściwości. Zmiana danych spowoduje zmianę słupków. Jednak selektor stylu słupka nie będzie jeszcze działać.

12. Używanie kolorów edytora raportów na wykresie słupkowym

Aby edytować kod lokalnie, najpierw zmień stałą zmienną LOCAL w elemencie src/index.js na true. Następnie dodaj nową funkcję o nazwie styleVal() i zaktualizuj kod w drawViz(). Plik src/index.js powinien wyglądać tak:

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

Zapisz plik src/index.js, a następnie wróć do sesji przeglądarki lokalnej. Zobacz, jak działa lokalnie, a następnie zmień ustawienie const LOCAL na false.

Prześlij zaktualizowane pliki do Google Cloud Storage, uruchamiając polecenie:

npm run build:dev
npm run push:dev

Odśwież raport Studia danych. Zmiana koloru słupków powinna być już możliwa.

fd4e436a6e8dd58b.gif

13. Wdrożenia produkcyjne

Wdrożenia produkcyjne

Gdy wizualizacja spełnia Twoje oczekiwania, ustaw w polu src/index.js wartość LOCAL, a następnie ją uruchom.

npm run build:prod
npm run push:prod

Spowoduje to wdrożenie plików w środowisku produkcyjnym Lokalizacja zasobnika GCS. Dodatkowo zostanie włączone buforowanie, a dołączony kod JavaScript zostanie odpowiednio zminifikowany.

Tak jak wcześniej, lokalizacja wdrożenia zostanie wydrukowana w konsoli. Użyj tej „ścieżki manifestu” aby wczytać swoje urządzenie „prod” w raporcie Studia danych.

Gratulacje! Właśnie udało Ci się utworzyć pierwszą wizualizację utworzoną przez społeczność za pomocą narzędzia dscc-gen.

14. Dalsze kroki

Rozszerz wizualizację

Więcej możliwości dzięki wizualizacjom utworzonym przez społeczność

Dodatkowe materiały

Poniżej znajdziesz różne zasoby, z których możesz skorzystać, aby dokładniej zapoznać się z materiałami omówionymi w tym ćwiczeniu z programowania.

Typ zasobu

Funkcje użytkownika

Funkcje dla programistów

Dokumentacja

Centrum pomocy

Dokumentacja dla programistów

Wiadomości i Aktualizacje

Zarejestruj się w Studiu danych > Ustawienia użytkownika

Lista adresowa dewelopera

Zadawaj pytania

Forum użytkowników

Stack Overflow [google-data-studio]Forum dla programistów Studia danych

Filmy

Studio danych w YouTube

Już wkrótce

Przykłady

Galeria raportów

Repozytorium open source