Opplæring: Utvikle et sirkelkort i Power BI
I denne opplæringen skal du utvikle et visualobjekt i Power BI som heter sirkelkort, som viser en formatert målverdi i en sirkel. Sirkelkortet støtter tilpassing av fyllfargen og tykkelsen på omrisset.
I denne opplæringen lærer du hvordan du kan:
- opprette et utviklingsprosjekt for visualobjektet
- utvikle visualobjektet med visuelle D3-elementer
- konfigurere visualobjektet til å behandle data
- Konfigurer visualobjektet til å tilpasse seg størrelsesendringer.
- Konfigurer adaptive farge- og kantlinjeinnstillinger for visualobjektet.
Obs!
Hvis du vil ha den fullstendige kildekoden for dette visualobjektet, kan du se sirkelkortet til Power BI-visualobjektet.
Forutsetninger
Før du begynner å utvikle visualobjektet i Power BI, må du bekrefte at du har alt som er oppført i denne delen.
En Power BI Pro- eller Premium per bruker-konto (PPU). Hvis du ikke har en, kan du registrere deg for en gratis prøveversjon.
Visual Studio Code (VS Code). VS Code er et ideelt integrert utviklingsmiljø (IDE) for utvikling av JavaScript- og TypeScript-programmer.
Windows PowerShell versjon 4 eller senere (for Windows). Eller Terminal (for OSX).
Et miljø som er klart for utvikling av et Power BI-visualobjekt. Konfigurer miljøet for å utvikle et Power BI-visualobjekt.
Denne opplæringen bruker rapporten US Analysis Report (salgsanalyse for USA) . Du kan laste ned denne rapporten og laste den opp til Power Bi-tjeneste, eller bruke din egen rapport. Hvis du trenger mer informasjon om Power BI-tjenesten og opplasting av filer, kan du se opplæringen Kom i gang med oppretting i Power BI-tjenesten.
Opprett et utviklingsprosjekt
I denne delen skal du opprette et prosjekt for sirkelkortvisualobjektet.
Obs!
I denne opplæringen brukes Visual Studio Code (VS Code) til å utvikle visualobjektet i Power BI.
Åpne en ny terminal i VS Code , og gå til mappen du vil opprette prosjektet i.
Skriv inn følgende kommando i PowerShell-terminalen:
pbiviz new CircleCard
Åpne CircleCard-mappen i VS Code Explorer. (Fil>Åpne mappe).
Hvis du vil ha en detaljert forklaring av funksjonen for hver av disse filene, kan du se prosjektstrukturen i Power BI-visualobjektet.
Kontroller terminalvinduet, og bekreft at du er i circleCard-katalogen. Installer avhengighetene for verktøyene for Power BI-visualobjekter.
npm install
Tips
Hvis du vil se hvilke avhengigheter som er installert i visualobjektet, kan du se package.json-filen .
Start sirkelkortet.
pbiviz start
Visualobjektet kjører nå mens det driftes på datamaskinen.
Viktig
Ikke lukk PowerShell-vinduet før slutten av opplæringen. Hvis du vil stoppe kjøringen av visualobjektet, skriver du inn CTRL+C , og hvis du blir bedt om å avslutte den satsvise jobben, skriver du inn Y og trykker ENTER.
Vis visualobjektet i Power Bi-tjeneste
Hvis du vil teste visualobjektet i Power Bi-tjeneste, bruker vi den amerikanske salgsanalyserapporten. Du kan laste ned denne rapporten og laste den opp til Power BI-tjenesten.
Du kan også bruke din egen rapport til å teste visualobjektet.
Obs!
Før du fortsetter, må du kontrollere at du har aktivert utviklerinnstillingene for visualobjekter.
Logg deg på PowerBI.com, og åpne rapporten US Sales Analysis (salgsanalyse for USA) .
Velg Rediger.
Opprett en ny side for testing ved å klikke på Ny side-knappen nederst i grensesnittet til Power BI-tjenesten.
Velg Utviklervisualobjekt i Visualiseringer-ruten.
Dette visualobjektet representerer det egendefinerte visualobjektet du kjører på datamaskinen. Det er bare tilgjengelig når innstillingen egendefinert feilsøking av visualobjekt er aktivert.
Bekreft at det ble lagt til et visualobjekt i rapportlerretet.
Dette er et enkelt visualobjekt som viser hvor mange ganger oppdateringsmetoden er kalt opp. Visualobjektet henter ikke data på dette stadiet.
Obs!
Hvis visualobjektet viser en feilmelding for tilkobling, åpner du en ny fane i nettleseren, navigerer til
https://localhost:8080/assets
og gir nettleseren tillatelse til å bruke denne adressen.Mens du velger det nye visualobjektet, kan du gå til Felter-ruten, utvide Sales (salg) og velge Quantity (antall) .
Hvis du vil teste hvordan visualobjektet svarer, endrer du størrelsen på det og legger merke til at Update count (oppdateringsantall) stiger i verdi hver gang du endrer størrelse på visualobjektet.
Legg til visuelle elementer og tekst
I denne delen lærer du hvordan du gjør visualobjektet til en sirkel og får det til å vise tekst.
Endre filen for visualobjektet
Konfigurer visual.ts-filen .
Tips
For å forbedre lesbarheten anbefales det at du formaterer dokumentet hver gang du kopierer kodesnutter til prosjektet ditt. Høyreklikk hvor som helst i VS Code, og velg Formater dokument (ALT+SKIFT+F).
Utvid src-mappen i Utforsker-ruten i VS Code, og velg filen visual.ts.
Fjern all koden under MIT License-kommentaren.
Viktig
Legg merke til kommentarene øverst i visual.ts-filen. Tillatelse til å bruke pakkene for visualobjekter i Power BI gis gratis under vilkårene i MIT (Massachusetts Institute of Technology)-lisensen. Som en del av avtalen må du legge inn kommentarer øverst i filen.
Importer bibliotekene og modulene som kreves, og definer typevalget for d3-biblioteket:
"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>;
Obs!
Hvis D3 JavaScript-biblioteket ikke ble installert som en del av installasjonen, må du installere det nå. Kjør fra PowerShell
npm i d3@latest --save
Legg merke til at blant elementene du importerte, er:
- IVisualHost – en samling av egenskaper og tjenester som brukes til å samhandle med verten for visualobjektet (Power BI).
- D3-bibliotek – JavaScript-bibliotek for oppretting av datadrevne dokumenter.
Opprett en tom visuell klasse under importen. Visualobjektklassen implementerer IVisual-grensesnittet der alle visualobjekter begynner:
export class Visual implements IVisual { }
Hvis du vil ha informasjon om hva som går inn i visualobjektklassen, kan du se Visual API. I de neste tre trinnene skal vi definere denne klassen.
Legg til private metoder på klassenivå i begynnelsen av visualobjektklassen :
private host: IVisualHost; private svg: Selection<SVGElement>; private container: Selection<SVGElement>; private circle: Selection<SVGElement>; private textValue: Selection<SVGElement>; private textLabel: Selection<SVGElement>;
Legg merke til at noen av disse private metodene bruker valgtypen.
Definer sirkel- og tekstelementene i konstruktørmetoden . Denne metoden kalles når visualobjektet startes. Med D3 Scalable Vector Graphics (SVG) kan du opprette tre figurer: en sirkel og to tekstelementer:
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); }
Definer bredden og høyden i oppdateringsmetoden. Denne metoden kalles hver gang det er en endring i data- eller vertsmiljøet, for eksempel en ny verdi eller endring av størrelse.
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"); }
Lagre visual.ts-filen.
(Valgfritt) Se gjennom koden i visualobjektfilen
Kontroller at den endelige koden i visuals.ts-filen ser slik ut:
/*
* 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");
}
}
Endre egenskapsfilen
Sirkelkortvisualobjektet er et enkelt visualobjekt som ikke oppretter objekter i Format-ruten. Derfor kan du trygt fjerne objektdelen av filen.
Åpne prosjektet i VS Code (Fil>Åpne mappe).
Velg capabilities.json-filen.
Fjern hele objektmatrisen .
Ikke la noen tomme linjer være mellom dataRoles og dataViewMappings.Lagre capabilities.json-filen.
Start sirkelkortet på nytt
Stans kjøringen av visualobjektet, og start det på nytt.
Skriv inn CTRL+C i PowerShell-vinduet der du startet visualobjektet. Hvis du blir bedt om å avslutte den satsvise jobben, skriver du inn Y og trykker ENTER.
Start visualobjektet på nytt i PowerShell.
pbiviz start
Test visualobjektet med de tillagte elementene
Kontroller at visualobjektet viser de nylig tillagte elementene.
Åpne rapportenPower BI US Sales Analysis (salgsanalyse for USA) i Power BI-tjenesten. Hvis du bruker en annen rapport til å utvikle sirkelkortet, går du til denne rapporten.
Dra en verdi til Mål-boksen , og kontroller at visualobjektet er formet som en sirkel.
Hvis visualobjektet ikke viser noe, drar du Quantity (antall) -feltet fra feltruten inn i utviklervisualobjektet.
Endre størrelsen på visualobjektet.
Legg merke til at sirkelen og teksten skaleres til dimensjonen for visualobjektet. Oppdateringsmetoden kalles opp når du endrer størrelse på visualobjektet, og derfor skaleres elementene i visualobjektet på nytt.
Aktiver automatisk innlasting
Bruk denne innstillingen for å sikre at visualobjektet automatisk lastes inn på nytt hver gang du lagrer endringer i prosjektet.
Gå til rapporten Power BI US Sales Analysis (salgsanalyse for USA) (eller til prosjektet som har sirkelkortet ditt).
Velg sirkelkortet.
Velg Aktiver/deaktiver automatisk innlasting på den flytende verktøylinjen.
Få visualobjektet til å behandle data
I denne delen definerer du dataroller og datavisningstilordninger. Du kan også endre visualobjektet til å vise navnet på verdien det viser.
Konfigurer egenskapsfilen
Endre capabilities.json-filen for å definere datarollen, objektene og datavisningstilordningene.
Definer datarollen
Definer dataRoles-matrisen med én datarolle av typen mål. Denne datarollen kalles mål og vises som Mål. Den gjør det mulig å sende et målfelt eller et felt som skal summeres.
Åpne capabilities.json-filen i VS Code.
Fjern alt innholdet i dataRoles-matrisen .
Sett inn denne koden i dataRoles-matrisen.
{ "displayName": "Measure", "name": "measure", "kind": "Measure" }
Lagre capabilities.json-filen.
Definer datavisningstilordningen
Definer et felt kalt mål i dataViewMappings-matrisen . Dette feltet kan sendes til datarollen.
Åpne capabilities.json-filen i VS Code.
Fjern alt innholdet i dataViewMappings-matrisen .
Sett inn følgende kode i dataViewMappings-matrisen.
{ "conditions": [ { "measure": { "max": 1 } } ], "single": { "role": "measure" } }
Lagre capabilities.json-filen.
Bekreft at capabilities.json-filen ser slik ut:
{
"dataRoles": [
{
"displayName": "Measure",
"name": "measure",
"kind": "Measure"
}
],
"dataViewMappings": [
{
"conditions": [
{ "measure": { "max": 1 } }
],
"single": {
"role": "measure"
}
}
],
"privileges": []
}
(Valgfritt) Se gjennom kodeendringer i egenskapsfilen
Kontroller at sirkelkortet viser målfeltet, og se gjennom endringene du har gjort, ved hjelp av alternativet Vis datavisning.
Åpne rapportenPower BI US Sales Analysis (salgsanalyse for USA) i Power BI-tjenesten. Hvis du bruker en annen rapport til å utvikle sirkelkortet, går du til denne rapporten.
Legg merke til at sirkelkortet nå kan konfigureres med et felt kalt mål. Du kan dra og slippe elementer fra Felter-ruten til Mål-feltet.
Obs!
Det visuelle prosjektet inneholder ikke logikk for databinding ennå.
Velg Vis datavisning på den flytende verktøylinjen.
Velg de tre prikkene for å utvide visningen, og velg enkel for å vise verdien.
Utvid metadata, deretter matrisen columns, og se gjennom verdiene format og displayName.
Hvis du vil veksle tilbake til visualobjektet, kan du velge Vis datavisning i verktøylinjen som flyter over visualobjektet.
Konfigurer visualobjektet til å bruke data
Så langt gjengis visualobjektet, men viser ingen data. I denne delen skal du gjøre endringer i visual.ts-filen , slik at sirkelkortvisualobjektet kan bruke data.
Åpne visual.ts-filen i VS Code.
I oppdateringsmetoden :
Legg til denne setningen som den første setningen. Setningen tilordner dataView til en variabel for enkel tilgang og erklærer at variabelen skal referere til dataView-objektet.
let dataView: DataView = options.dataViews[0];
Erstatt .text("Value") med denne kodelinjen:
.text(<string>dataView.single.value)
Erstatt .text("Label") med denne kodelinjen:
.text(dataView.metadata.columns[0].displayName)
Lagre visual.ts-filen.
Se gjennom visualobjektet i Power BI-tjenesten.
Visualobjektet viser nå navnet og verdien til det valgte datafeltet.
Du har nå opprettet et power bi-visualobjekt som fungerer. Du kan legge til formateringsalternativer i den, eller du kan pakke den som den er for umiddelbar bruk.