Bagikan melalui


Tutorial: Membuat visual Power BI menggunakan React

Sebagai pengembang, Anda dapat membuat visual Power BI Anda sendiri. Visual ini dapat digunakan oleh Anda, organisasi Anda, atau oleh pihak ketiga.

Dalam tutorial ini, Anda mengembangkan visual Power BI menggunakan React. Visual menampilkan nilai pengukuran yang diformat di dalam lingkaran. Visual memiliki ukuran adaptif dan memungkinkan Anda untuk menyesuaikan pengaturannya.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Buat proyek pengembangan untuk visual Anda.
  • Kembangkan visual Anda menggunakan React.
  • Konfigurasikan visual Anda untuk memproses data.
  • Konfigurasikan visual Anda untuk beradaptasi dengan perubahan ukuran.
  • Konfigurasikan warna adaptif dan pengaturan batas untuk visual Anda.

Catatan

Untuk kode sumber lengkap visual ini, lihat visual Power BI kartu lingkaran React.

Prasyarat

Sebelum Anda mulai mengembangkan visual Power BI, verifikasi bahwa Anda memiliki semua yang tercantum di bagian ini.

Membuat proyek pengembangan

Di bagian ini, Anda membuat proyek untuk visual kartu lingkaran React.

  1. Buka PowerShell dan navigasikan ke folder tempat Anda ingin membuat proyek.

  2. Masukkan perintah berikut:

    pbiviz new ReactCircleCard
    
  3. Navigasikan ke folder proyek.

    cd ReactCircleCard
    
  4. Mulai visual kartu lingkaran React. Visual Anda sekarang berjalan saat sedang dihosting di komputer Anda.

    pbiviz start
    

    Penting

    Untuk menghentikan visual berjalan, di PowerShell masukkan Ctrl+C dan jika diminta untuk mengakhiri pekerjaan batch, masukkan Y, dan tekan Enter.

Menampilkan kartu lingkaran React di layanan Power BI

Untuk menguji visual di layanan Power BI, kita akan menggunakan laporan Analisis Penjualan AS. Anda dapat mengunduh laporan ini dan mengunggahnya ke layanan Power BI.

Anda juga dapat menggunakan laporan Anda sendiri untuk menguji visual.

Catatan

Sebelum melanjutkan, verifikasi bahwa Anda mengaktifkan mode pengembang visual.

  1. Masuk ke PowerBI.com dan buka laporan Analisis Penjualan AS.

  2. Pilih Edit.

    Cuplikan layar opsi edit di layanan Power BI.

  3. Buat halaman baru untuk pengujian, dengan mengklik tombol Halaman baru di bagian bawah antarmuka layanan Power BI.

    Cuplikan layar tombol halaman baru di layanan Power BI.

  4. Dari panel Visualisasi, pilih Visual Pengembang.

    Cuplikan layar visual pengembang di panel visualisasi.

    Visual ini mewakili visual kustom yang Anda jalankan di komputer Anda. Ini hanya tersedia saat pengaturan penelusuran kesalahan visual kustom diaktifkan.

  5. Verifikasi bahwa visual ditambahkan ke kanvas laporan.

    Cuplikan layar visual baru yang ditambahkan ke laporan.

    Ini adalah visual sederhana yang menampilkan berapa kali metode pembaruannya telah dipanggil. Pada tahap ini, visual tidak mengambil data apa pun.

    Catatan

    Jika visual menampilkan pesan kesalahan koneksi, buka tab baru di browser Anda, navigasi ke https://localhost:8080/assets, dan otorisasi browser Anda untuk menggunakan alamat ini.

    Cuplikan layar visual baru yang menampilkan kesalahan koneksi.

  6. Saat visual baru dipilih, buka panel Data , perluas Penjualan, dan pilih Kuantitas.

    Cuplikan layar bidang kuantitas layanan Power BI dalam tabel penjualan dalam laporan analisis penjualan AS.

  7. Untuk menguji bagaimana visual merespons, ubah ukurannya dan perhatikan bahwa nilai Jumlah pembaruan bertambah setiap kali Anda mengubah ukuran visual.

    Cuplikan layar visual baru menampilkan jumlah jumlah pembaruan yang berbeda, setelah diubah ukurannya.

Menyiapkan React di proyek Anda

Di bagian ini, Anda mempelajari cara menyiapkan React untuk proyek visual Power BI Anda.

Buka PowerShell dan hentikan visual agar tidak berjalan dengan memasukkan Ctrl+C. Jika diminta untuk mengakhiri tugas batch, masukkan Y, dan tekan Enter.

Menginstal React

Untuk menginstal dependensi React yang diperlukan, buka PowerShell di folder ReactCircleCard Anda, dan jalankan perintah berikut:

npm i react react-dom

Menginstal definisi jenis React

Untuk menginstal definisi jenis untuk React, buka PowerShell di folder reactCircleCard Anda dan jalankan perintah berikut:

npm i @types/react @types/react-dom

Membuat kelas komponen React

Ikuti langkah-langkah ini untuk membuat kelas komponen React.

  1. Buka Visual Studio Code dan navigasikan ke folder reactCircleCard.

  2. Buat file baru dengan memilih File>File Baru.

  3. Salin kode berikut ke dalam file.

    import * as React from "react";
    
    export class ReactCircleCard extends React.Component<{}>{
        render(){
            return (
                <div className="circleCard">
                    Hello, React!
                </div>
            )
        }
    }
    
    export default ReactCircleCard;
    
  4. Pilih Simpan Sebagai dan navigasikan ke folder src.

  5. Simpan file sebagai berikut:

    • Di bidang Nama file, masukkan komponen.
    • Dari menu drop-down Simpan sebagai jenis, pilih TypeScript React.

Menambahkan React ke file visual

Ganti kode dalam file visual.ts dengan kode yang memungkinkan penggunaan React.

  1. Di folder src, buka visual.ts dan ganti kode dalam file dengan kode berikut:

    "use strict";
    import powerbi from "powerbi-visuals-api";
    
    import DataView = powerbi.DataView;
    import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
    import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
    import IVisual = powerbi.extensibility.visual.IVisual;
    
    // Import React dependencies and the added component
    import * as React from "react";
    import * as ReactDOM from "react-dom";
    import ReactCircleCard from "./component";
    
    import "./../style/visual.less";
    
    export class Visual implements IVisual {
    
        constructor(options: VisualConstructorOptions) {
    
        }
    
        public update(options: VisualUpdateOptions) {
    
        }
    }
    

    Catatan

    Karena pengaturan Power BI TypeScript default tidak mengenali file React tsx, Visual Studio Code menyorot component sebagai kesalahan.

  2. Untuk merender komponen, tambahkan elemen HTML target ke visual.ts. Elemen ini ada HTMLElement di VisualConstructorOptions, yang diteruskan ke konstruktor.

    1. Di folder src, buka visual.ts.

    2. Tambahkan kode berikut ke kelas Visual:

    private target: HTMLElement;
    private reactRoot: React.ComponentElement<any, any>;
    
    1. Tambahkan kode berikut ke konstruktor VisualConstructorOptions:
    this.reactRoot = React.createElement(ReactCircleCard, {});
    this.target = options.element;
    
    ReactDOM.render(this.reactRoot, this.target);
    

    Sekarang file visual.ts Anda akan terlihat seperti ini:

    "use strict";
    import powerbi from "powerbi-visuals-api";
    
    import DataView = powerbi.DataView;
    import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
    import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
    import IVisual = powerbi.extensibility.visual.IVisual;
    import * as React from "react";
    import * as ReactDOM from "react-dom";
    import ReactCircleCard from "./component";    
    
    import "./../style/visual.less";
    
    export class Visual implements IVisual {
        private target: HTMLElement;
        private reactRoot: React.ComponentElement<any, any>;
    
        constructor(options: VisualConstructorOptions) {
            this.reactRoot = React.createElement(ReactCircleCard, {});
            this.target = options.element;
    
            ReactDOM.render(this.reactRoot, this.target);
        }
    
        public update(options: VisualUpdateOptions) {
    
        }
    }
    
  3. Simpan visual.ts.

Mengedit file tsconfig

Edit tsconfig.json untuk bekerja dengan React.

  1. Di folder reactCircleCard, buka tsconfig.json dan tambahkan dua baris ke awal compilerOptions item.

    "jsx": "react",
    "types": ["react", "react-dom"],
    

    File tsconfig.json Anda sekarang akan terlihat seperti ini, dan component kesalahan di visual.ts harus hilang.

    {
        "compilerOptions": {
            "jsx": "react",
            "types": ["react", "react-dom"],
            "allowJs": false,
            "emitDecoratorMetadata": true,
            "experimentalDecorators": true,
            "target": "es6",
            "sourceMap": true,
            "outDir": "./.tmp/build/",
            "moduleResolution": "node",
            "declaration": true,
            "lib": [
                "es2015",
                "dom"
            ]
        },
        "files": [
            "./src/visual.ts"
        ]
    }
    
  2. Simpan tsconfig.json.

Menguji visual Anda

Buka PowerShell di folder CircleCardVisual, dan jalankan proyek Anda:

pbiviz start

Saat Anda menambahkan Visual Pengembang baru ke laporan Anda di layanan Power BI, terlihat seperti ini:

Cuplikan layar memperlihatkan pesan hello React di visual pengembang yang baru dibuat di layanan Power B I.

Mengonfigurasi bidang data visual Anda

Konfigurasikan file kemampuan visual Anda sehingga hanya satu bidang data yang dapat dikirimkan ke bidang Mengukur data visual.

  1. Di Visual Studio Code, dari folder reactCircleCard , buka capabilities.json.

  2. ReactCircleCard menampilkan satu nilai, Measure Data. Hapus objek Category Data dari dataRoles.

    Setelah menghapus objek Category Data, kunci dataRoles terlihat seperti ini:

    "dataRoles": [
        {
            "displayName": "Measure Data",
            "name": "measure",
            "kind": "Measure"
        }
    ],
    
  3. Hapus semua konten kunci objects (Anda akan mengisinya nanti).

    Setelah Anda menghapus kontennya, objects kunci terlihat seperti ini:

    "objects": {},
    
  4. dataViewMappings Ganti properti dengan kode berikut. max: 1 dalam measure menentukan bahwa hanya satu bidang data yang dapat dikirimkan ke bidang Mengukur data visual.

    "dataViewMappings": [
        {
            "conditions": [
                {
                    "measure": {
                        "max": 1
                    }
                }
            ],
            "single": {
                "role": "measure"
            }
        }
    ]
    
  5. Simpan perubahan yang Anda buat pada capabilities.json.

  6. Verifikasi bahwa pbiviz start berjalan dan dalam layanan Power BI, refresh visual Kartu Lingkaran React Anda. Bidang Ukur data hanya dapat menerima satu bidang data, seperti yang ditentukan oleh max: 1.

    Cuplikan layar memperlihatkan bidang ukur Data di kartu lingkaran react di layanan Power B I.

Memperbarui gaya visual

Di bagian ini, Anda mengubah bentuk visual menjadi lingkaran. Gunakan file visual.less untuk mengontrol gaya visual Anda.

  1. Dari folder gaya, buka visual.less.

  2. Ganti konten visual.less dengan kode berikut.

    .circleCard {
        position: relative;
        box-sizing: border-box;
        border: 1px solid #000;
        border-radius: 50%;
        width: 200px;
        height: 200px;
    }
    
    p {
        text-align: center;
        line-height: 30px;
        font-size: 20px;
        font-weight: bold;
    
        position: relative;
        top: -30px;
        margin: 50% 0 0 0;
    }
    
  3. Simpan visual.less.

Atur visual Anda untuk menerima properti dari Power BI

Di bagian ini Anda mengonfigurasi visual untuk menerima data dari Power BI, dan mengirim pembaruan ke instans dalam file component.tsx .

Merender data menggunakan React

Anda dapat merender data menggunakan React. Komponen dapat menampilkan data dari statusnya sendiri.

  1. Di Visual Studio Code, dari folder reactCircleCard, buka component.tsx.

  2. Ganti konten component.tsx dengan kode berikut.

    import * as React from "react";
    
    export interface State {
        textLabel: string,
        textValue: string
    }
    
    export const initialState: State = {
        textLabel: "",
        textValue: ""
    }
    
    export class ReactCircleCard extends React.Component<{}, State>{
        constructor(props: any){
            super(props);
            this.state = initialState;
        }
    
        render(){
            const { textLabel, textValue } = this.state;
    
            return (
                <div className="circleCard">
                    <p>
                        {textLabel}
                        <br/>
                        <em>{textValue}</em>
                    </p>
                </div>
            )
        }
    }
    
  3. Simpan component.tsx.

Mengatur visual Anda untuk menerima data

Visual menerima data sebagai argumen metode update. Di bagian ini, Anda memperbarui metode ini untuk menerima data.

Kode berikut memilih textLabel dan textValue dari DataView, dan jika data ada, perbarui status komponen.

  1. Di Visual Studio Code, dari folder src, buka visual.ts.

  2. Ganti baris import ReactCircleCard from "./component"; dengan kode berikut:

    import { ReactCircleCard, initialState } from "./component";
    
  3. Tambahkan kode berikut ke metode update.

    if(options.dataViews && options.dataViews[0]){
        const dataView: DataView = options.dataViews[0];
    
        ReactCircleCard.update({
            textLabel: dataView.metadata.columns[0].displayName,
            textValue: dataView.single.value.toString()
        });
    } else {
        this.clear();
    }
    
  4. Buat metode clear dengan menambahkan kode berikut di bawah metode update.

    private clear() {
        ReactCircleCard.update(initialState);
    }
    
  5. Simpan visual.ts

Mengatur visual Anda untuk mengirim data

Di bagian ini, Anda memperbarui visual untuk mengirim pembaruan ke instans dalam file komponen .

  1. Di Visual Studio Code, dari folder src, buka component.tsx.

  2. Tambahkan kode berikut ke kelas ReactCircleCard:

    private static updateCallback: (data: object) => void = null;
    
    public static update(newState: State) {
        if(typeof ReactCircleCard.updateCallback === 'function'){
            ReactCircleCard.updateCallback(newState);
        }
    }
    
    public state: State = initialState;
    
    public componentWillMount() {
            ReactCircleCard.updateCallback = (newState: State): void => { this.setState(newState); };
    }
    
    public componentWillUnmount() {
        ReactCircleCard.updateCallback = null;
    }
    
  3. Simpan component.tsx.

Menampilkan perubahan pada visual

Uji visual Kartu Lingkaran React Anda untuk melihat perubahan yang Anda buat.

  1. Verifikasi bahwa pbiviz start sedang berjalan, dan di layanan Power BI, refresh visual Kartu Lingkaran React Anda.

  2. Tambahkan Penjualan ke bidang Mengukur data visual.

Cuplikan layar nilai penjualan yang ditampilkan dalam visual kartu lingkaran react di layanan Power BI.

Membuat visual Anda dapat diubah

Saat ini, visual Anda memiliki lebar dan tinggi tetap. Untuk membuat visual dapat diubah ukurannya size, Anda perlu menentukan variabel dalam file visual.ts dan component.tsx. Di bagian ini, Anda membuat visual dapat diubah besar.

Setelah Anda menyelesaikan langkah-langkah yang diuraikan di bagian ini, diameter lingkaran dalam visual Anda akan sesuai dengan lebar atau ukuran tinggi minimal, dan Anda akan dapat mengubah ukurannya dalam layanan Power BI.

Mengonfigurasi file visual.ts

Dapatkan ukuran viewport visual saat ini dari objek options.

  1. Di Visual Studio Code, dari folder src, buka visual.ts.

  2. Sisipkan kode ini untuk mengimpor antarmuka IViewport.

    import IViewport = powerbi.IViewport;
    
  3. Tambahkan properti viewport berikut ke kelas visual.

    private viewport: IViewport;
    
  4. Dalam metode update, sebelum ReactCircleCard.update, tambahkan kode berikut.

    this.viewport = options.viewport;
    const { width, height } = this.viewport;
    const size = Math.min(width, height);
    
  5. Dalam metode update, di ReactCircleCard.update, tambahkan size.

    size,
    
  6. Simpan visual.ts.

Mengonfigurasi file component.tsx

  1. Di Visual Studio Code, dari folder src, buka component.tsx.

  2. Tambahkan kode berikut ke export interface State.

    size: number
    
  3. Tambahkan kode berikut ke export const initialState: State.

    size: 200
    
  4. Dalam metode , render buat perubahan berikut pada kode:

    1. Tambahkan size ke const { textLabel, textValue, size } = this.state;. Pernyataan ini sekarang akan terlihat seperti ini:

      const { textLabel, textValue, size } = this.state;
      
    2. Tambahkan kode berikut di atas return.

      const style: React.CSSProperties = { width: size, height: size };
      
    3. Ganti baris pengembalian pertama <div className="circleCard"> dengan:

      <div className="circleCard" style={style}>
      
  5. Simpan component.tsx.

Mengonfigurasi file visual

  1. Di Visual Studio Code, dari folder gaya, buka visual.less.

  2. Di .circleCard, ganti width dan height dengan min-width dan min-height.

    min-width: 200px;
    min-height: 200px;
    
  3. Simpan visual.less.

Membuat visual Power BI Anda dapat disesuaikan

Di bagian ini, Anda menambahkan kemampuan untuk menyesuaikan visual Anda, memungkinkan pengguna membuat perubahan pada warna dan ketebalan batasnya.

Menambahkan warna dan ketebalan ke file kemampuan

Tambahkan ketebalan warna dan batas ke object properti di capabilities.json.

  1. Di Visual Studio Code, dari folder reactCircleCard, buka capabilities.json.

  2. Tambahkan pengaturan berikut ke properti objects.

    "circle": {
        "properties": {
           "circleColor": {
                "type": {
                    "fill": {
                        "solid": {
                            "color": true
                        }
                    }
                }
            },
            "circleThickness": {
                "type": {
                    "numeric": true
                }
            }
        }
    }
    
  3. Simpan capabilities.json.

Menambahkan kelas pengaturan pemformatan lingkaran ke file pengaturan

Circle Tambahkan pengaturan pemformatan ke settings.ts. Untuk informasi selengkapnya cara membuat pengaturan model pemformatan, lihat memformat util.

  1. Di Visual Studio Code, dari folder src, buka settings.ts.

  2. Ganti kode di setting.ts dengan kode berikut:

    "use strict";
    
    import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";
    
    import FormattingSettingsCard = formattingSettings.SimpleCard;
    import FormattingSettingsSlice = formattingSettings.Slice;
    import FormattingSettingsModel = formattingSettings.Model;
    
    /**
    * Circle Formatting Card
    */
    class CircleCardSettings extends FormattingSettingsCard {
        circleColor = new formattingSettings.ColorPicker({
            name: "circleColor", // circle color name should match circle color property name in capabilities.json
            displayName: "Color",
            description: "The fill color of the circle.",
            show: true,
            value: { value: "white" }
        });
    
        circleThickness = new formattingSettings.NumUpDown({
            name: "circleThickness", // circle thickness name should match circle color property name in capabilities.json
            displayName: "Thickness",
            description: "The circle thickness.",
            show: true,
            value: 2
        });
    
        name: string = "circle"; // circle card name should match circle object name in capabilities.json
        displayName: string = "Circle";
        show: boolean = true;
        slices: Array<FormattingSettingsSlice> = [this.circleColor, this.circleThickness];
    }
    
    /**
    * visual settings model class
    *
    */
    export class VisualFormattingSettingsModel extends FormattingSettingsModel {
        // Create formatting settings model circle formatting card
        circleCard = new CircleCardSettings();
    
        cards = [this.circleCard];
    }
    
  3. Simpan settings.ts.

Menambahkan metode untuk menerapkan pengaturan visual

Tambahkan metode yang getFormattingModel digunakan untuk menerapkan pengaturan visual dan impor yang diperlukan ke file visual.ts .

  1. Di Visual Studio Code, dari folder src, buka visual.ts.

  2. Tambahkan pernyataan import ini di bagian atas visual.ts.

    import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel";
    import { VisualFormattingSettingsModel } from "./settings";
    
  3. Tambahkan deklarasi berikut ke Visual.

    private formattingSettings: VisualFormattingSettingsModel;
    private formattingSettingsService: FormattingSettingsService;
    
  4. Tambahkan metode getFormattingModel ke Visual.

    public getFormattingModel(): powerbi.visuals.FormattingModel {
        return this.formattingSettingsService.buildFormattingModel(this.formattingSettings);
    }
    
  5. Visual Di kelas , tambahkan baris kode berikut ke untuk constructor menginisialisasiformattingSettingsService

        this.formattingSettingsService = new FormattingSettingsService();
    
    
  6. Visual Di kelas , tambahkan kode berikut ke untuk update memperbarui pengaturan pemformatan visual ke nilai properti pemformatan terbaru.

    1. Tambahkan kode ini ke pernyataan if setelah const size = Math.min(width, height);.

      this.formattingSettings = this.formattingSettingsService.populateFormattingSettingsModel(VisualFormattingSettingsModel, options.dataViews[0]);
      const circleSettings = this.formattingSettings.circleCard;
      
    2. Tambahkan kode ini ke ReactCircleCard.update setelah size:

      borderWidth: circleSettings.circleThickness.value,
      background: circleSettings.circleColor.value.value,
      }
      
  7. Simpan visual.ts.

Mengedit file komponen

Edit file komponen sehingga dapat merender perubahan pada warna visual dan ketebalan batas.

  1. Di Visual Studio Code, dari folder src, buka component.tsx.

  2. Tambahkan nilai-nilai ini ke State:

    background?: string,
    borderWidth?: number
    
  3. Dalam metode render, ganti baris kode berikut:

    1. const { textLabel, textValue, size } = this.state; dengan:

      const { textLabel, textValue, size, background, borderWidth } = this.state;
      
    2. const style: React.CSSProperties = { width: size, height: size }; dengan:

      const style: React.CSSProperties = { width: size, height: size, background, borderWidth };
      
  4. Simpan component.tsx.

Meninjau perubahan

Bereksperimenlah dengan warna visual dan ketebalan batas, yang sekarang dapat Anda kontrol.

  1. Verifikasi bahwa pbiviz start sedang berjalan, dan di layanan Power BI, refresh visual Kartu Lingkaran React Anda.

  2. Pilih tab Format dan perluas Lingkaran.

  3. Sesuaikan pengaturan Warna dan Ketebalan visual, dan tinjau efeknya pada visual.

Cuplikan layar visual kartu lingkaran react di layanan Power B I, memperlihatkan opsi format ketebalan warna dan batas.