dscc-gen ile Data Studio Topluluk Görselleştirmeleri oluşturma

1. Giriş

Google Data Studio, mükemmel veri görselleştirmelerine sahip dinamik, etkileşimli kontrol panellerini ücretsiz olarak oluşturmanızı sağlar. Topluluk görselleştirmeleri, Data Studio raporlarınızla entegre olan JavaScript ile özel görselleştirmeler oluşturmanıza olanak tanıyan bir Data Studio özelliğidir.

Neler öğreneceksiniz?

Bu codelab'de şunları öğreneceksiniz:

  • Google Data Studio Topluluk Görselleştirme'nin işleyiş şekli
  • Komut satırı şablon aracımızla Topluluk Görselleştirmesi oluşturma
  • Topluluk Görselleştirmeleri oluşturmak için JavaScript görselleştirme kitaplıkları nasıl kullanılır?
  • Topluluk Görselleştirmenizi Data Studio kontrol paneline entegre etme

Gerekenler

Bu codelab'i tamamlamak için şunlar gerekir:

  • İnternete, web tarayıcısına, terminale ve favori metin düzenleyicinize erişin
  • Google Hesabı
  • Google Cloud Storage paketine erişim
  • Javascript, Node.js ve komut satırı hakkında bilgi

Bu codelab'de şunlar varsayılır:

  • Zaten bir Topluluk Görselleştirmesi oluşturdunuz (TODO ilk codelab'i bağlayın)
  • Google Cloud Storage hakkında bilgi sahibi olanlar

Başlamak için sağ üst köşedeki bu raporun bir kopyasını 14575f934e800122.png tıklayın. Codelab'de ilerlerken bu sekmeyi başka bir sekmede açık tutun.

2. Kısa Anket

Neden bu codelab'i seçtiniz?

Genel olarak veri görselleştirmeyle ilgileniyorum. Data Studio hakkında daha fazla bilgi edinmek istiyorum Kendi Topluluk Görselleştirmemi oluşturmak istiyorum. Data Studio'yu başka bir platformla entegre etmeye çalışıyorum. Google Cloud çözümleriyle ilgileniyorum.

Bu codelab/eğitimi nasıl kullanmayı planlıyorsunuz?

Okuyun ve alıştırmaları tamamlayın Yalnızca hızlı göz atma

Data Studio deneyiminizi nasıl değerlendirirsiniz?

Hiç duymadım Ne olduğunu biliyorum ancak kullanmıyorum. Düzenli olarak kullanıyorum. Uzman bir kullanıcıyım.

Arka planınızı en iyi nasıl tanımlarsınız?

Geliştirici İşletme / Veri Analisti Veri Bilimci / Veri Mühendisi Mali uzman Pazarlama / Sosyal Medya / Dijital Analiz Uzmanı İş analisti Tasarımcı Diğer

Anket bilgilerini göndermek için sonraki sayfaya gidin.

3. dscc-gen ile topluluk görselleştirmesi geliştirme

dscc-gen

dscc-gen, Topluluk Görselleştirmeleri ve Topluluk Bağlayıcıları için ayrıntılı şablonlar ve iş akışları sağlayan bir komut satırı aracıdır. Topluluk Görselleştirme şablonu, görselleştirme kodu değişikliklerinizi ve görselleştirmelerinizi doğrulamak, oluşturmak ve dağıtmak için kullanabileceğiniz komut dosyalarını hemen görmenizi sağlayan, çalışan bir görselleştirme ve iş akışı sağlar.

Kurulum

dscc-gen, dağıtım komut dosyalarında gsutil'i, Topluluk Görselleştirme JavaScript kodu oluşturmak için ise npm ve webpack'i kullanır.

  1. npm'yi yerel bilgisayarınıza yükleyin
  2. gsutil hızlı başlangıç kılavuzunu inceleyin ve bir Google Cloud Storage paketi oluşturun
  3. Projenizi bulmak istediğiniz yerel dizine gidin.

4. Yeni bir dscc genel topluluk görselleştirme projesi başlatın

Bir terminal penceresi açın ve şu komutu çalıştırın:

npx @google/dscc-gen viz

dscc-gen, sizden "dev" adında bir proje adı ister. GCS depolama konumu ve "üretim" depolama alanı konumu. Konumu gs protokolüyle URI olarak girin, ör. gs://my-gs-project/example-dev. Bir "konum" bir Cloud Storage paketi veya bu paketin içinde yer alan bir klasör olabilir. İki depolama konumu farklı olmalıdır. Araç, girdiğiniz değerlere erişiminizin olduğunu doğrular. Konum mevcut değilse bunlar sizin için oluşturulur.

dscc-gen, yeni bir Topluluk Görselleştirmesi oluşturduktan sonra, nasıl başlayacağınıza ilişkin talimatları yazdırır. Terminaliniz şuna benzer şekilde görünecektir (girişiniz kalın italik harflerle yazılmıştır):

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

Görselleştirmenizi yazmak için src/ uygulamasındaki dosyaları, özellikle de index.js, index.json ve index.css dosyalarını düzenleyeceksiniz.

dist/ klasöründeki dosyalar, görselleştirmenizi bir tarayıcıda yerel olarak önizlemenize olanak tanır. Görselleştirmenin yerel olarak çalıştırılması için webpack.config.js kullanılır. README.md, şablon dosyaları ve komutlara genel bir bakış sunar.

5. Görselleştirmenizi yerel olarak önizleyin

Önerilen talimatları uygulayın ve terminalinizde aşağıdaki komutları çalıştırın:

cd <folder name>

npm run start

Tarayıcı, aşağıdakine benzer bir web sayfasıyla açılır:

2f219993dfb676d4.png

Sonraki adımda daha fazla bilgi edinebilirsiniz.

6. [Bilgi] dscc-oluşturma iş akışının işleyiş şekli

Dscc oluşturma şablonu, çalışan bir görselleştirme ve şablonun nasıl kullanılacağına dair talimatlarla birlikte gelir. Ana işlevleri şunlardır:

Yerel mesajınızı güncelleyin: Örnek mesaj şablona dahil edilir ancak muhtemelen desteklemek istediğiniz kullanım alanını yansıtmamaktadır. Oluşturmak istediğiniz görselleştirmeyi yansıtan örnek verileri indirmeniz gerekir.

Yerel geliştirme iş akışı: Yerel verilerinizi güncelleme sayfasındaki verileri kullanarak kodunuzu yerel olarak yazıp test edin.

Oluştur ve görselleştirmenizi dağıtın: Kodunuzu derleyin ve Google Cloud Storage paketlerinize yükleyebilirsiniz.

viz'inizi Data Studio'ya yükleme: Görselleştirmeyi Data Studio raporunuza ekleyin.

7. Yapılandırma tanımlayın

Yapılandırma dosyası, siz (viz geliştiricisi) ve görselleştirmeyi kullanan rapor düzenleyici arasındaki sözleşmedir. Görselleştirme Data Studio'ya yüklendikten sonra kullanılabilen seçenekleri tanımlar.

Bu çubuk grafik görselleştirmesi için yapılandırmada bir boyut ve bir metriğin yanı sıra rapor düzenleyicinin çubuk grafik stilini değiştirmesine olanak tanıyan bir stil öğesi bulunur.

src/index.json içeriğini aşağıdakiyle değiştirin. Tüm köşeli parantezleri eklediğinizden emin olun. Yeniden yazarsanız köşeli ve kıvrık ayraçlar ile iç içe yerleştirme yapısı arasındaki farka dikkat ettiğinizden emin olun.

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. Güncellenen mesajı indir

Yerel olarak depolanan verilerinizi güncellemek için şu komutu çalıştırın:

npm run update_message

Terminal şu şekilde görünmelidir:

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

Bu komut, alınan verileri yerel bir görselleştirmeye yazdıran bir görselleştirmeyi Data Studio'ya dağıtır. Komut dosyaları, görselleştirmenizin dağıtım konumunu yazdırır (yukarıda vurgulanmıştır). Data Studio'da görselleştirmenizi yüklemek için bu konumu kullanacaksınız.

Görselleştirmenizi yüklemek için daha önce kopyaladığınız raporu açın.

  1. "Raporu düzenle"ye gidin
  2. "Topluluk görselleştirmeleri ve bileşenleri"ni tıklayın araç çubuğunda

e927f8fbd49979a5.png

  1. "Daha fazlasını keşfet"i tıklayın

c236b0cfcc68ce2c.png

  1. "Kendi görselleştirmenizi oluşturun"u tıklayın
  2. Manifest yolunuzu (terminalinizde yazdırılan gs://... konumu) girin ve Gönder'i tıklayın

26588c6c8382a3b.png

  1. Oluşturulan kartı raporunuza eklemek için tıklayın.

Görselleştirme şu şekilde JSON oluşturacaktır:

a08a61345fe12837.png

Sağ tıklayıp tümünü seçerek iletinin tamamını kopyalayın ve src/localMessage.js içeriğini az önce kopyaladığınızla değiştirin. Dosyayı kaydedin.

Tarayıcınızda yerel olarak çalışan görselleştirme artık görünmeyecektir. Konsola bakarsanız bir hata görürsünüz.

9. Çubuk grafik için JavaScript yazma

Öncelikle, d3.js'yi bağımlılık olarak eklemek için aşağıdaki komutu çalıştırın.

npm install d3

Ardından, src/index.js öğesini aşağıdaki kodla değiştirin. Son adımda yapılan değişiklikler kalın harflerle yazılmıştır.

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

Yerel sunucu hâlâ çalışıyorsa tarayıcınızı kontrol edin. Yerel geliştirme web sayfası şimdi aşağıdaki gibi bir çubuk grafik göstermelidir.

2cb9f9d8d1bd2063.png

10. Manifest güncelleme (isteğe bağlı)

Görselleştirme manifest'iniz görselleştirmenizle ilgili meta verilerin yanı sıra görselleştirme JavaScript'inizin, yapılandırmanızın ve CSS'nizin konumunu içerir. Manifest dosyanızdaki değerleri güncelleyin. Bu değerler, görselleştirmenizle ilgili son kullanıcı bilgilerini sağlamak için kullanılacaktır.

Görselleştirmenizi açıklamak için src/manifest.json dosyasını düzenleyin. Aşağıda örnek bir manifesto verilmiştir.

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. Görselleştirmeyi dağıtma

src/index.js ayarında const LOCAL değerini "false" (yanlış) olarak değiştirin. Tarayıcınızdaki görselleştirme artık çalışmaz. Değiştirilen kod satırı kalın harflerle gösterilir. Bu boole, kodun bir "local" değeri kullanıp kullanmayacağını yapılandırır veri dosyası veya Data Studio'dan alınan veriler kullanılabilir.

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

Ardından terminalinizde şu komutu çalıştırın:

npm run build:dev
npm run push:dev

build:dev komutu, JavaScript bağımlılıklarınızı küçültülmüş bir çıkışta paketler ve önbelleğe almayı devre dışı bırakmak ve "dev" komutuna işaret etmek için manifest dosyanızdaki değerleri değiştirir paketinden çıkış yapacaksınız.

push:dev komutu, görselleştirme kaynaklarınızı "dev"e yükler paketi yer alır ve paket konumunu konsola yazdırır.

Data Studio raporunu yenileyin. Bir çubuk grafik göreceksiniz. Özellik panelindeki veri ve stil seçeneklerini değiştirmeyi deneyin. Verileri değiştirdiğinizde çubuklar da değişir. Ancak çubuk rengi stili seçici henüz çalışmamaktadır.

12. Çubuk grafikte rapor düzenleyici renk seçimlerini kullan

Kodu yerel olarak düzenlemek için önce src/index.js içindeki const LOCAL değişkenini true olarak güncelleyin. Daha sonra styleVal() adında yeni bir işlev ekleyin vedrawViz() içindeki kodu güncelleyin. src/index.js dosyanız şu şekilde görünmelidir:

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'yi kaydedin ve ardından yerel tarayıcı oturumunuza dönün. Yerel olarak çalıştığını görün ve ardından const LOCAL değerini false (yanlış) olarak değiştirin.

Güncellenen dosyalarınızı Google Cloud Storage'a yüklemek için şu komutu çalıştırın:

npm run build:dev
npm run push:dev

Data Studio raporunuzu yenileyin. Artık çubuklarınızın rengini değiştirebileceksiniz.

fd4e436a6e8dd58b.gif

13. Üretim dağıtımları

Üretim dağıtımları

Görselleştirmeniz istediğiniz gibi olduğunda, src/index.js içindeki const LOCAL'in yanlış olduğundan emin olun ve ardından çalıştırın.

npm run build:prod
npm run push:prod

Bu işlem, dosyalarınızı "prod"a dağıtır GCS paketi konumu. Buna ek olarak, önbellek etkinleştirilir ve paketlenen JavaScript uygun şekilde küçültülür.

Daha önce olduğu gibi, dağıtımınızın konumu konsolda yazdırılacak. Bu "manifest yolunu" kullan yüklemenizi öneririz. daha fazla bilgi edineceksiniz.

Tebrikler! dscc-gen aracıyla ilk Topluluk Görselleştirmenizi oluşturdunuz.

14. Sonraki adımlar

Görselleştirmenizi genişletin

Topluluk Görselleştirmeleriyle daha fazlasını yapın

Ek kaynaklar

Bu codelab'de ele alınan materyalleri daha yakından incelemenize yardımcı olacak çeşitli kaynakları aşağıda bulabilirsiniz.

Kaynak Türü

Kullanıcı özellikleri

Geliştirici özellikleri

Belgeler

Yardım Merkezi

Geliştirici Belgeleri

Haberler ve Güncellemeler

Data Studio'ya kaydolun > Kullanıcı Ayarları

Geliştirici Posta Listesi

Soru Sorma

Kullanıcı Forumu

Stack Overflow [google-data-studio]Data Studio Geliştirici Forumu

Videolar

YouTube'da Data Studio

Çok Yakında!

Örnekler

Rapor Galerisi

Açık Kaynak Kod Deposu