Öğretici: Power BI daire kartı görseli geliştirme

Bu öğreticide, daire içinde biçimlendirilmiş ölçü değeri görüntüleyen daire kartı adlı bir Power BI görseli geliştirin. Daire kartı görseli dolgu renginin ve ana hat kalınlığının özelleştirilmesini destekler.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Görseliniz için bir geliştirme projesi oluşturun.
  • D3 görsel öğeleriyle görselinizi geliştirin.
  • Görselinizi verileri işecek şekilde yapılandırın.
  • Görselinizi boyut değişikliklerine uyum sağlayacak şekilde yapılandırın.
  • Görseliniz için uyarlamalı renk ve kenarlık ayarlarını yapılandırın.

Dekont

Bu görselin tam kaynak kodu için bkz . daire kartı Power BI görseli.

Önkoşullar

Power BI görselinizi geliştirmeye başlamadan önce bu bölümde her şeyin listelendiğini doğrulayın.

Geliştirme projesi oluşturma

Bu bölümde, daire kartı görseli için bir proje oluşturacaksınız.

Dekont

Bu öğreticide, Power BI görselini geliştirmek için Visual Studio Code (VS Code) kullanılır.

  1. VS Code'da yeni bir terminal açın ve projenizi oluşturmak istediğiniz klasöre gidin.

  2. PowerShell terminaline aşağıdaki komutu girin:

    pbiviz new CircleCard
    
  3. VS Code gezgininde CircleCard klasörünü açın. (Dosya>Klasör Aç).

    Screenshot of VS code window opened to the circle card folder.

    Bu dosyaların her birinin işlevinin ayrıntılı açıklaması için bkz . Power BI görsel proje yapısı.

  4. Terminal penceresini denetleyin ve circleCard dizininde olduğunuzu onaylayın. Power BI görsel araçları bağımlılıklarını yükleyin.

    npm install
    

    Bahşiş

    Görselinizde hangi bağımlılıkların yüklü olduğunu görmek için package.json dosyasını denetleyin.

  5. Daire kartı görselini başlatın.

    pbiviz start
    

    Görseliniz artık bilgisayarınızda barındırılırken çalışıyor.

    Önemli

    Öğreticinin sonuna kadar PowerShell penceresini kapatmayın. Görselin çalışmasını durdurmak için Ctrl+C girin ve toplu işi sonlandırmanız istenirse Y yazın ve enter tuşuna basın.

görseli Power BI hizmeti

Görseli Power BI hizmeti test etmek için ABD Satış Analizi raporunu kullanacağız. Bu raporu indirebilir ve Power BI hizmeti yükleyebilirsiniz.

Görseli test etmek için kendi raporunuzu da kullanabilirsiniz.

Dekont

Devam etmeden önce görsel geliştirici ayarlarını etkinleştirdiğinizden emin olun.

  1. PowerBI.com oturum açın ve ABD Satış Analizi raporunu açın.

  2. Düzenle'yi seçin.

    Screenshot of the edit option in Power B I service.

  3. Power BI hizmeti arabiriminin en altındaki Yeni sayfa düğmesine tıklayarak test için yeni bir sayfa oluşturun.

    Screenshot of the new page button in Power B I service.

  4. Görselleştirmeler bölmesinde Geliştirici Görseli'ni seçin.

    Screenshot of the developer visual in the visualizations pane.

    Bu görsel, bilgisayarınızda çalıştırdığınız özel görseli temsil eder. Yalnızca özel görsel hata ayıklama ayarı etkinleştirildiğinde kullanılabilir.

  5. Rapor tuvaline bir görsel eklendiğini doğrulayın.

    Screenshot of the new visual added to the report.

    Bu, güncelleştirme yönteminin çağrılma sayısını gösteren basit bir görseldir. Bu aşamada görsel herhangi bir veri almaz.

    Dekont

    Görsel bağlantı hata iletisi görüntülerse, tarayıcınızda yeni bir sekme açın, adresine https://localhost:8080/assetsgidin ve tarayıcınızı bu adresi kullanması için yetki verin.

    Screenshot of the new visual displaying a connection error.

  6. Yeni görsel seçiliyken Alanlar bölmesine gidin, Satış'ı genişletin ve Miktar'ı seçin.

    Screenshot of the Power B I service quantity field in the sales table in the U S sales analysis report.

  7. Görselin nasıl yanıt verdiğini test etmek için görseli yeniden boyutlandırın ve görseli her yeniden boyutlandırdığınızda Güncelleştirme sayısı değerinin arttığını fark edin.

    Screenshot of the new visual displaying a different update count number, after being resized.

Görsel öğeler ve metin ekleme

Bu bölümde görselinizi daireye dönüştürmeyi ve metin görüntülemesini sağlamayı öğreneceksiniz.

Görseller dosyasını değiştirme

visual.ts dosyasını ayarlayın.

Bahşiş

Okunabilirliği geliştirmek için, kod parçacıklarını projenize her kopyaladığınızda belgeyi biçimlendirmeniz önerilir. VS kodunda herhangi bir yere sağ tıklayın ve Belgeyi Biçimlendir'i seçin (veya Alt+Shift+F girin).

  1. VS Code'da, Gezgin bölmesinde src klasörünü genişletin ve visual.ts dosyasını seçin.

    Screenshot of accessing the visual.ts file in V S code.

  2. MIT Lisansı açıklaması altındaki tüm kodu kaldırın.

    Önemli

    visual.ts dosyasının üst kısmındaki açıklamalara dikkat edin. Power BI görsel paketlerini kullanma izni, Massachusetts Institute of Technology (MIT) Lisansı koşulları altında ücretsiz olarak verilir. Sözleşmenin bir parçası olarak, açıklamaları dosyanın en üstüne bırakmanız gerekir.

  3. Gereken kitaplıkları ve modülleri içeri aktarın ve d3 kitaplığı için tür seçimini tanımlayın:

    "use strict";
    
    import "./../style/visual.less";
    import powerbi from "powerbi-visuals-api";
    import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
    import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
    import IVisual = powerbi.extensibility.visual.IVisual;
    import DataView = powerbi.DataView;
    import IVisualHost = powerbi.extensibility.IVisualHost;
    import * as d3 from "d3";
    type Selection<T extends d3.BaseType> = d3.Selection<T, any, any, any>;
    

    Dekont

    D3 JavaScript kitaplığı kurulumunuzun bir parçası olarak yüklenmediyse şimdi yükleyin. PowerShell'den komutunu çalıştırın npm i d3@latest --save

    İçeri aktardığınız öğeler arasında şunlar olduğuna dikkat edin:

    • IVisualHost - Görsel ana bilgisayarla (Power BI) etkileşime geçmek için kullanılan özellikler ve hizmetler koleksiyonu.
    • D3 kitaplığı - Veri temelli belgeler oluşturmak için JavaScript kitaplığı.
  4. İçeri aktarmaların altında boş bir görsel sınıfı oluşturun. Görsel sınıfı, tüm görsellerin başladığı IVisual arabirimini uygular:

    export class Visual implements IVisual {
    
    }
    

    Görsel sınıfına nelerin girdiği hakkında bilgi için bkz . Visual API. Sonraki üç adımda bu sınıfı tanımlayacağız.

  5. Görsel sınıfın başına sınıf düzeyinde özel yöntemler ekleyin:

    private host: IVisualHost;
    private svg: Selection<SVGElement>;
    private container: Selection<SVGElement>;
    private circle: Selection<SVGElement>;
    private textValue: Selection<SVGElement>;
    private textLabel: Selection<SVGElement>;
    

    Bu özel yöntemlerden bazılarının Seçim türünü kullandığına dikkat edin.

  6. Oluşturucu yönteminde daire ve metin öğelerini tanımlayın. Bu yöntem, görsel örneği oluşturulurken çağrılır. D3 Ölçeklenebilir Vektör Grafikleri (SVG), üç şekil oluşturmayı sağlar: daire ve iki metin öğesi:

    constructor(options: VisualConstructorOptions) {
        this.svg = d3.select(options.element)
            .append('svg')
            .classed('circleCard', true);
        this.container = this.svg.append("g")
            .classed('container', true);
        this.circle = this.container.append("circle")
            .classed('circle', true);
        this.textValue = this.container.append("text")
            .classed("textValue", true);
        this.textLabel = this.container.append("text")
            .classed("textLabel", true);
    }
    
  7. Güncelleştirme yönteminde genişliği ve yüksekliği tanımlayın. Bu yöntem, yeni bir değer veya yeniden boyutlandırma gibi veri veya konak ortamında her değişiklik olduğunda çağrılır.

    public update(options: VisualUpdateOptions) {
        let width: number = options.viewport.width;
        let height: number = options.viewport.height;
        this.svg.attr("width", width);
        this.svg.attr("height", height);
        let radius: number = Math.min(width, height) / 2.2;
        this.circle
            .style("fill", "white")
            .style("fill-opacity", 0.5)
            .style("stroke", "black")
            .style("stroke-width", 2)
            .attr("r", radius)
            .attr("cx", width / 2)
            .attr("cy", height / 2);
        let fontSizeValue: number = Math.min(width, height) / 5;
        this.textValue
            .text("Value")
            .attr("x", "50%")
            .attr("y", "50%")
            .attr("dy", "0.35em")
            .attr("text-anchor", "middle")
            .style("font-size", fontSizeValue + "px");
        let fontSizeLabel: number = fontSizeValue / 4;
        this.textLabel
            .text("Label")
            .attr("x", "50%")
            .attr("y", height / 2)
            .attr("dy", fontSizeValue / 1.2)
            .attr("text-anchor", "middle")
            .style("font-size", fontSizeLabel + "px");
    }
    
  8. visual.ts dosyasını kaydedin.

(İsteğe bağlı) Görseller dosyasındaki kodu gözden geçirme

visual.ts dosyasındaki son kodun aşağıdaki gibi göründüğünü doğrulayın:

/*
*  Power BI Visual CLI
*
*  Copyright (c) Microsoft Corporation
*  All rights reserved.
*  MIT License
*
*  Permission is hereby granted, free of charge, to any person obtaining a copy
*  of this software and associated documentation files (the ""Software""), to deal
*  in the Software without restriction, including without limitation the rights
*  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
*  copies of the Software, and to permit persons to whom the Software is
*  furnished to do so, subject to the following conditions:
*
*  The above copyright notice and this permission notice shall be included in
*  all copies or substantial portions of the Software.
*
*  THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
*  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
*  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
*  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
*  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
*  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
*  THE SOFTWARE.
*/
"use strict";

import "./../style/visual.less";
import powerbi from "powerbi-visuals-api";
import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
import IVisual = powerbi.extensibility.visual.IVisual;
import DataView = powerbi.DataView;
import IVisualHost = powerbi.extensibility.IVisualHost;
import * as d3 from "d3";
type Selection<T extends d3.BaseType> = d3.Selection<T, any, any, any>;

export class Visual implements IVisual {
    private host: IVisualHost;
    private svg: Selection<SVGElement>;
    private container: Selection<SVGElement>;
    private circle: Selection<SVGElement>;
    private textValue: Selection<SVGElement>;
    private textLabel: Selection<SVGElement>;
    
    constructor(options: VisualConstructorOptions) {
        this.svg = d3.select(options.element)
            .append('svg')
            .classed('circleCard', true);
        this.container = this.svg.append("g")
            .classed('container', true);
        this.circle = this.container.append("circle")
            .classed('circle', true);
        this.textValue = this.container.append("text")
            .classed("textValue", true);
        this.textLabel = this.container.append("text")
            .classed("textLabel", true);
    }
    
    public update(options: VisualUpdateOptions) {
        let width: number = options.viewport.width;
        let height: number = options.viewport.height;
        this.svg.attr("width", width);
        this.svg.attr("height", height);
        let radius: number = Math.min(width, height) / 2.2;
        this.circle
            .style("fill", "white")
            .style("fill-opacity", 0.5)
            .style("stroke", "black")
            .style("stroke-width", 2)
            .attr("r", radius)
            .attr("cx", width / 2)
            .attr("cy", height / 2);
        let fontSizeValue: number = Math.min(width, height) / 5;
        this.textValue
            .text("Value")
            .attr("x", "50%")
            .attr("y", "50%")
            .attr("dy", "0.35em")
            .attr("text-anchor", "middle")
            .style("font-size", fontSizeValue + "px");
        let fontSizeLabel: number = fontSizeValue / 4;
        this.textLabel
            .text("Label")
            .attr("x", "50%")
            .attr("y", height / 2)
            .attr("dy", fontSizeValue / 1.2)
            .attr("text-anchor", "middle")
            .style("font-size", fontSizeLabel + "px");
    }
}

Yetenek dosyasını değiştirme

Daire kartı görseli, Biçim bölmesinde hiçbir nesne oluşturmayan basit bir görseldir. Bu nedenle, dosyanın nesneler bölümünü güvenle kaldırabilirsiniz.

  1. Projenizi VS Code'da (Dosya>Açık Klasör) açın.

  2. capabilities.json dosyasını seçin.

    Screenshot of accessing the capabilities.json file in V S code.

  3. Nesneler dizisinin tamamını kaldırın.
    dataRoles ile dataViewMappings arasında boş satır bırakmayın.

  4. capabilities.json dosyasını kaydedin.

Daire kartı görselini yeniden başlatma

Görselin çalışmasını durdurun ve yeniden başlatın.

  1. Görseli başlattığınız PowerShell penceresinde Ctrl+C yazın. Toplu işi sonlandırmanız istenirse Y girin ve enter tuşuna basın.

  2. PowerShell'de görseli yeniden başlatın.

    pbiviz start
    

Eklenen öğelerle görseli test edin

Görselin yeni eklenen öğeleri görüntülediğini doğrulayın.

  1. Power BI hizmeti'da Power BI US Sales Analysis raporunu açın. Daire kartı görselini geliştirmek için farklı bir rapor kullanıyorsanız bu rapora gidin.

  2. Ölçü kutusuna bir değer sürükleyin ve görselin daire şeklinde olduğundan emin olun.

    Screenshot of the circle card visual shaped as a circle.

    Görselde hiçbir şey görüntülenmiyorsa Alanlar bölmesinde Quantity alanını geliştirici görseline sürükleyin.

  3. Görseli yeniden boyutlandırın.

    Dairenin ve metnin görselin boyutlarına uyacak şekilde ölçeklendirildiğini unutmayın. Görseli yeniden boyutlandırdığınızda güncelleştirme yöntemi çağrılır ve sonuç olarak görsel öğeleri yeniden ölçeklendirilir.

Otomatik yeniden yüklemeyi etkinleştirme

Proje değişikliklerini her kaydettiğinizde görselin otomatik olarak yeniden yüklendiğinden emin olmak için bu ayarı kullanın.

  1. Power BI ABD Satış Analizi raporuna (veya daire kartı görselinizi içeren projeye) gidin.

  2. Daire kartı görselini seçin.

  3. Kayan araç çubuğunda Otomatik Yeniden Yüklemeyi Değiştir'i seçin.

    Screenshot of clicking the toggle auto reload option, in the circle card visual floating toolbar.

Verileri işlemek için görseli alma

Bu bölümde, veri rollerini ve veri görünümü eşlemelerini tanımlarsınız. Ayrıca, görüntülendiği değerin adını görüntülemek için görseli değiştirirsiniz.

Yetenek dosyasını yapılandırma

Veri rolü, nesneler ve veri görünümü eşlemelerini tanımlamak için capabilities.json dosyasını değiştirin.

  • Veri rolünü tanımlama

    dataRoles dizisini tür ölçüsünün tek bir veri rolüyle tanımlayın. Bu veri rolü ölçü olarak adlandırılır ve Ölçü olarak görüntülenir. Bir ölçü alanının veya toplanmış bir alanın geçirilmesine izin verir.

    1. VS Code'da capabilities.json dosyasını açın.

    2. dataRoles dizisinin içindeki tüm içeriği kaldırın.

    3. dataRoles dizisine aşağıdaki kodu ekleyin.

      {
          "displayName": "Measure",
          "name": "measure",
          "kind": "Measure"
      }
      
    4. capabilities.json dosyasını kaydedin.

  • Veri görünümü eşlemesini tanımlama

    dataViewMappings dizisinde measure adlı bir alan tanımlayın. Bu alan veri rolüne geçirilebilir.

    1. VS Code'da capabilities.json dosyasını açın.

    2. dataViewMappings dizisinin içindeki tüm içeriği kaldırın.

    3. dataViewMappings dizisine aşağıdaki kodu ekleyin.

      {
          "conditions": [
              { "measure": { "max": 1 } }
          ],
          "single": {
              "role": "measure"
          }
      }
      
    4. capabilities.json dosyasını kaydedin.

capabilities.json dosyanızın aşağıdaki gibi göründüğünü onaylayın:

{
    "dataRoles": [
        {
            "displayName": "Measure",
            "name": "measure",
            "kind": "Measure"
        }
    ],
    "dataViewMappings": [
        {
            "conditions": [
                { "measure": { "max": 1 } }
            ],
            "single": {
                "role": "measure"
            }
        }
    ],
    "privileges": []
}

(İsteğe bağlı) Yetenekler dosya kodu değişikliklerini gözden geçirin

Daire kartı görselinin ölçü alanını görüntülediğini doğrulayın ve Veri Görünümünü Göster seçeneğini kullanarak yaptığınız değişiklikleri gözden geçirin.

  1. Power BI hizmeti'da Power BI US Sales Analysis raporunu açın. Daire kartı görselini geliştirmek için farklı bir rapor kullanıyorsanız bu rapora gidin.

  2. Daire kartı görselinin artık Ölçü başlıklı bir alanla yapılandırılabildiğine dikkat edin. Alanlar bölmesindeki öğeleri Ölçü alanına sürükleyip bırakabilirsiniz.

    Screenshot of the circle card measure filed, in the Power BI service visualization pane.

    Dekont

    Görsel proje henüz veri bağlama mantığını içermiyor.

  3. Kayan araç çubuğunda Dataview'ı Göster'i seçin.

    Screenshot of the show dataview button, located in the circle card floating toolbar.

  4. Ekranı genişletmek için üç noktayı seçin ve değeri görüntülemek için tek noktayı seçin.

    Screenshot of the value figure as it's displayed in the circle card show dataview option.

  5. Meta verileri genişletin, sonra sütunlar dizisini genişletin ve format ve displayName değerlerini gözden geçirin.

    Screenshot of the format and display name values as displayed in the circle card show dataview option.

  6. Görsele geri dönmek için görselin üzerinde kayan araç çubuğunda Veri Görünümünü Göster'i seçin.

Görseli verileri kullanacak şekilde yapılandırma

Şimdiye kadar görsel işlenir ancak veri görüntülemez. Bu bölümde visual.ts dosyasında değişiklik yapacaksınız, böylece daire kartı görseli verileri kullanabilir.

  1. VISUAL.ts dosyasını VS Code'da açın.

  2. Güncelleştirme yönteminde:

    • aşağıdaki deyimini ilk deyim olarak ekleyin. deyimi dataView'ı kolay erişim için bir değişkene atar ve dataView nesnesine başvurmak için değişkeni bildirir.

      let dataView: DataView = options.dataViews[0];
      
    • .text("Value") öğesini şu kod satırıyla değiştirin:

      .text(<string>dataView.single.value)
      
    • .text("Label") öğesini şu kod satırıyla değiştirin:

      .text(dataView.metadata.columns[0].displayName)
      
  3. visual.ts dosyasını kaydedin.

  4. Power BI hizmeti görseli gözden geçirin.

Görsel artık seçili veri alanının adını ve değerini görüntüler.

Screenshot of a circle card visual displaying the quantity value.

Artık çalışan bir Power BI görseli oluşturdunuz. Biçimlendirme seçeneklerini ekleyebilir veya hemen kullanmak üzere olduğu gibi paketleyebilirsiniz.