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

1. Wprowadzenie

Studio danych Google umożliwia bezpłatne tworzenie dynamicznych, interaktywnych paneli z atrakcyjnymi wizualizacjami danych. Wizualizacje utworzone przez społeczność to funkcja Studia danych, która umożliwia tworzenie niestandardowych wizualizacji w JavaScript, które można zintegrować z raportami Studia danych.

Czego się nauczysz

Z tego laboratorium dowiesz się:

  • Jak działa wizualizacja utworzona przez społeczność w Studiu danych Google
  • Jak utworzyć wizualizację utworzoną przez społeczność za pomocą naszego 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 i terminala oraz ulubiony edytor tekstu;
  • konto Google,
  • Dostęp do zasobnika Cloud Storage w Google Cloud
  • Znajomość języka JavaScript, Node.js i wiersza poleceń.

W tym ćwiczeniu zakładamy, że:

  • Masz już utworzoną wizualizację utworzoną przez społeczność (TODO link first codelab)
  • znajomość Google Cloud Storage,

Aby rozpocząć, skopiuj ten raport , klikając 14575f934e800122.png w prawym górnym rogu. Podczas wykonywania ćwiczeń z programowania pozostaw ją otwartą na innej karcie.

2. Krótka ankieta

Dlaczego wybierasz ten codelab?

Interesuje mnie wizualizacja danych w ogóle. 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.

Jak zamierzasz korzystać z tego laboratorium/samouczka?

Przeczytaj i wykonaj ćwiczenia Tylko przejrzyj

Jak oceniasz korzystanie ze Studia danych?

Nigdy o nim nie słyszałem(-am). Wiem, co to jest, ale nie używam go. Używam go regularnie. Jestem zaawansowanym użytkownikiem.

Które z poniższych stwierdzeń najlepiej opisuje Twoje doświadczenie?

Programista Analityk biznesowy lub analityk danych Specjalista ds. badań danych lub inżynier danych Analityk finansowy Ekspert ds. marketingu, mediów społecznościowych lub analityki cyfrowej Analityk biznesowy Projektant Inne

Aby przesłać informacje z ankiety, przejdź na następną stronę.

3. Tworzenie wizualizacji utworzonych przez społeczność za pomocą dscc-gen

dscc-gen

dscc-gen to narzędzie wiersza poleceń, które udostępnia opinie na temat szablonów i przepływów pracy w przypadku wizualizacji utworzonych przez społeczność i oprogramowania sprzęgającego utworzonego przez społeczność. Szablon wizualizacji społecznościowej zawiera działającą wizualizację i przepływ pracy, który umożliwia natychmiastowe sprawdzenie zmian w kodzie wizualizacji, oraz skrypty do weryfikowania, tworzenia i wdrażania wizualizacji.

Konfiguracja

dscc-gen używa gsutil w skryptach wdrażania oraz npm i webpack do tworzenia kodu JavaScript wizualizacji utworzonych przez społeczność.

  1. Zainstaluj npm na komputerze lokalnym.
  2. Zapoznaj się z krótkim wprowadzeniem do gsutil i skonfiguruj zasobnik Google Cloud Storage.
  3. Przejdź do katalogu lokalnego, w którym chcesz umieścić 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, lokalizację pamięci GCS „dev” i lokalizację pamięci „prod”. Wpisz lokalizację jako identyfikator URI z protokołem gs, np. gs://my-gs-project/example-dev. „Lokalizacja” może być zasobnikiem Cloud Storage lub folderem w tym zasobniku. Obie lokalizacje pamięci muszą być różne. Narzędzie sprawdzi, czy masz dostęp do wpisanych wartości. Jeśli lokalizacje nie istnieją, zostaną utworzone.

Gdy dscc-gen utworzy nową wizualizację utworzoną przez społeczność, wyświetli instrukcje, jak zacząć z niej korzystać. Terminal będzie wyglądać mniej więcej tak (wpisane przez Ciebie dane są wytłuszczone 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ę, będziesz edytować pliki w src/, a konkretnie index.js, index.jsonindex.css.

Pliki w dist/ umożliwiają wyświetlenie podglądu wizualizacji lokalnie w przeglądarce. webpack.config.js służy do lokalnego uruchamiania wizualizacji. README.md zawiera omówienie plików szablonu i poleceń.

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

Otworzy się przeglądarka ze stroną internetową, która wygląda tak:

2f219993dfb676d4.png

Więcej informacji znajdziesz w następnym kroku.

6. [Info] Jak ma działać przepływ pracy dscc-gen

Szablon wizualizacji dscc-gen zawiera działającą wizualizację i instrukcje korzystania z niego. Oto główne funkcje:

Zaktualizuj lokalny komunikat: w szablonie znajduje się przykładowy komunikat, ale prawdopodobnie nie odzwierciedla on przypadku użycia, który chcesz obsługiwać. Pobierz przykładowe dane odzwierciedlające wizualizację, którą chcesz utworzyć.

Lokalny proces programowania: użyj danych produktów dostępnych lokalnie z sekcji Aktualizowanie danych lokalnych, aby napisać i przetestować kod lokalnie.

Tworzenie i wdrażanie wizualizacji: utwórz kod i prześlij go do zasobników Google Cloud Storage.

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

7. Definiowanie konfiguracji

Plik konfiguracyjny to umowa między Tobą (deweloperem wizualizacji) a edytorem raportu, który korzysta z wizualizacji. Określa opcje dostępne po załadowaniu wizualizacji do Studia danych.

W przypadku wizualizacji w postaci wykresu słupkowego konfiguracja będzie zawierać 1 wymiar i 1 rodzaj danych, a także element stylu, który umożliwi edytującemu raport zmianę stylu wykresu słupkowego.

Zastąp zawartość pliku src/index.json tym kodem: Pamiętaj, aby uwzględnić wszystkie nawiasy. Jeśli przepisujesz kod, zwróć uwagę na różnicę między nawiasami kwadratowymi i klamrowymi oraz na strukturę zagnieżdżenia.

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. Pobieranie zaktualizowanej wiadomości

Aby zaktualizować dane przechowywane lokalnie, uruchom:

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 Studio danych wizualizację, która drukuje otrzymane dane w lokalnej wizualizacji. Skrypty drukują lokalizację wdrożenia wizualizacji (zaznaczoną powyżej). Użyjesz tej lokalizacji, aby wczytać wizualizację w Studiu danych.

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

  1. Otwórz „Edytuj raport”.
  2. Na pasku narzędzi kliknij „Wizualizacje i komponenty utworzone przez społeczność”.

e927f8fbd49979a5.png

  1. Kliknij „Odkryj więcej”.

c236b0cfcc68ce2c.png

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

26588c6c8382a3b.png

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

Wizualizacja powinna renderować kod JSON, który wygląda mniej więcej tak:

a08a61345fe12837.png

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

Wizualizacja uruchomiona lokalnie w przeglądarce nie powinna się już wyświetlać, a w konsoli zobaczysz błąd.

9. Napisz kod JavaScript do wykresu słupkowego

Najpierw uruchom to polecenie, aby dodać d3.js jako zależność.

npm install d3

Następnie zastąp src/index.js tym kodem. Zmiany w stosunku do ostatniego kroku są wyróżnione pogrubieniem.

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 lokalny serwer nadal działa, sprawdź przeglądarkę. Na stronie lokalnego środowiska deweloperskiego powinien się teraz wyświetlać wykres słupkowy podobny do tego poniżej.

2cb9f9d8d1bd2063.png

10. Aktualizacja pliku manifestu (opcjonalnie)

Manifest wizualizacji zawiera metadane wizualizacji, a także lokalizację plików JavaScript, konfiguracyjnych i CSS wizualizacji. Zaktualizuj wartości w pliku manifestu – będą one używane do przekazywania użytkownikowi końcowemu informacji o wizualizacji.

Edytuj plik src/manifest.json, aby opisać wizualizację. 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. Wdrażanie wizualizacji

W pliku src/index.js zmień wartość stałej LOCAL na „false”. Wizualizacja w przeglądarce powinna przestać działać. Zmieniona linia kodu jest wyróżniona pogrubieniem. Ta wartość logiczna określa, czy kod ma używać „lokalnego” pliku danych, czy 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:

npm run build:dev
npm run push:dev

Polecenie build:dev łączy zależności JavaScript w nieskompresowany plik wyjściowy i zastępuje wartości w pliku manifestu, aby wyłączyć buforowanie i skierować do skonfigurowanego wcześniej zasobnika „dev”.

Polecenie push:dev przesyła zasoby wizualizacji do zasobnika „dev” skonfigurowanego w kroku 1 i wyświetla w konsoli lokalizację zasobnika.

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

12. Używanie w wykresie słupkowym kolorów wybranych w edytorze raportów

Aby edytować kod lokalnie, najpierw zaktualizuj zmienną const LOCAL w pliku src/index.js na true. Następnie dodaj nową funkcję o nazwie styleVal() i zaktualizuj kod w funkcji 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 lokalnej sesji przeglądarki. Uruchom go lokalnie, a następnie zmień wartość stałej LOCAL na false.

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

npm run build:dev
npm run push:dev

Odśwież raport Studia danych. Powinna być teraz możliwość zmiany koloru pasków.

fd4e436a6e8dd58b.gif

13. Wdrożenia w środowisku produkcyjnym

Wdrożenia w środowisku produkcyjnym

Gdy wizualizacja będzie gotowa, sprawdź, czy wartość const LOCAL w src/index.js to „false”, a potem uruchom kod.

npm run build:prod
npm run push:prod

Spowoduje to wdrożenie plików w lokalizacji zasobnika GCS „prod”. Dodatkowo włączone zostanie buforowanie, a dołączony kod JavaScript zostanie odpowiednio zminimalizowany.

Podobnie jak wcześniej, lokalizacja wdrożenia zostanie wydrukowana w konsoli. Użyj tej „ścieżki pliku manifestu”, aby wczytać wizualizację „prod” w raporcie Studio 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

Rozszerzanie wizualizacji

Więcej możliwości wizualizacji utworzonych przez społeczność

Dodatkowe materiały

Poniżej znajdziesz różne zasoby, które pomogą Ci pogłębić informacje przedstawione w tym module.

Typ zasobu

Funkcje dla użytkowników

Funkcje dla programistów

Dokumentacja

Centrum pomocy

Dokumentacja dla deweloperów

Wiadomości i aktualności

Zarejestruj się w Studio danych > Ustawienia użytkownika.

Lista adresowa deweloperów

Zadawanie pytań

Forum użytkowników

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

Filmy

Studio danych w YouTube

Już wkrótce

Przykłady

Galeria raportów

Repozytorium open source