Føj understøttelse af bogmærker til visualiseringer i Power BI-rapporter
Med bogmærker i Power BI-rapporter kan du hente og gemme en konfigureret visning af en rapportside. Derefter kan du hurtigt og nemt gå tilbage til den gemte visning, når du vil. Bogmærket gemmer hele konfigurationen, herunder valg og filtre.
Du kan få flere oplysninger om bogmærker under Brug bogmærker til at dele indsigt og oprette historier i Power BI.
Visualiseringer, der understøtter bogmærker
En Power BI-visualisering, der understøtter bogmærker, skal kunne gemme og angive de korrekte oplysninger, når det er nødvendigt. Hvis din visualisering interagerer med andre visualiseringer, vælger datapunkter eller filtrerer andre visualiseringer, skal du gemme tilstanden med bogmærket i visualiseringens filterState-egenskaber .
Bemærk
Oprettelse af en visualisering, der understøtter bogmærker, kræver:
- Visual API version 1.11.0 eller nyere for visualiseringer, der ikke er filtreret, og som bruger
SelectionManager
. - Visual API version 2.6.0 eller nyere til filtervisualiseringer.
- Hvis du vil finde ud af, hvilken version du bruger, skal du se
apiVersion
i filen pbiviz.json .
Sådan interagerer Power BI-visualiseringer med Power BI i bogmærker i rapporter
Lad os antage, at du vil oprette flere bogmærker på en rapportside, hvor hvert bogmærke har forskellige datapunkter markeret.
Først skal du vælge et eller flere datapunkter i din visualisering. Visualiseringen overfører dine valg til værten. Vælg derefter Tilføj i ruden Bogmærke. Power BI gemmer de aktuelle valg for det nye bogmærke.
Gør dette flere gange for at oprette nye bogmærker. Når du har oprettet bogmærkerne, kan du skifte mellem dem.
Hver gang du vælger et bogmærke, gendanner Power BI det gemte filter eller den gemte markeringstilstand og overfører det til visualiseringerne. Visualiseringerne i rapporten fremhæves eller filtreres i henhold til den tilstand, der er gemt i bogmærket. Hvis du vil gendanne den korrekte tilstand, skal din visualisering overføre den korrekte markeringstilstand til værten (f.eks. farverne på gengivne datapunkter).
Den nye markeringstilstand (eller det nye filter) kommunikeres via options.jsonFilters
egenskaben i update
metoden . jsonFilters
kan være enten Advanced Filter
eller Tuple Filter
.
- Hvis visualiseringen indeholder markerede datapunkter, skal du nulstille markeringen til markeringen for det valgte bogmærke ved hjælp af tilbagekaldsfunktionen
registerOnSelectCallback
iISelectionManager
. - Hvis din visualisering bruger filtre til at vælge data, skal du nulstille filterværdierne til de tilsvarende værdier i det valgte bogmærke.
Visualiseringer med markering
Bemærk
InteractivityService frarådes.
Hvis din visualisering interagerer med andre visualiseringer ved hjælp af Markering, kan du tilføje understøttelse af bogmærker på en af to måder:
- Brug via InteractivityService til at administrere valg.
applySelectionFromFilter
Denne metode frarådes. - Via SelectionManager.
Brug InteractivityService til at gendanne bogmærkevalg – frarådes
Hvis din visualisering bruger InteractivityService, behøver du ikke andre handlinger for at understøtte bogmærkerne i din visualisering.
Når du vælger et bogmærke, håndterer værktøjet automatisk visualiseringens markeringstilstand.
Brug SelectionManager til at gendanne bogmærkevalg
Du kan gemme og tilbagekalde bogmærkevalg ved hjælp af metoden ISelectionManager.registerOnSelectCallback
på følgende måde:
Når du vælger et bogmærke, kalder Power BI metoden for visualiseringen callback
med de tilsvarende valg.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
//called when a selection was set by Power BI
});
);
Lad os antage, at du har oprettet et datapunkt i metoden visualTransform for din visualisering.
datapoints
ser sådan ud:
visualDataPoints.push({
category: categorical.categories[0].values[i],
color: getCategoricalObjectValue<Fill>(categorical.categories[0], i, 'colorSelector', 'fill', defaultColor).solid.color,
selectionId: host.createSelectionIdBuilder()
.withCategory(categorical.categories[0], i)
.createSelectionId(),
selected: false
});
Du har visualDataPoints
nu som dine datapunkter, og matrixen ids
overføres til funktionen callback
.
På dette tidspunkt skal visualiseringen sammenligne matrixen ISelectionId[]
med valgene i matrixen visualDataPoints
og derefter markere de tilsvarende datapunkter som valgt.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
visualDataPoints.forEach(dataPoint => {
ids.forEach(bookmarkSelection => {
if (bookmarkSelection.equals(dataPoint.selectionId)) {
dataPoint.selected = true;
}
});
});
});
);
Når du har opdateret datapunkterne, afspejler de den aktuelle markeringstilstand, der er gemt i objektet filter
. Når datapunkterne derefter gengives, svarer markeringstilstanden for den brugerdefinerede visualisering til bogmærkets tilstand.
Visualiseringer med et filter
Lad os antage, at visualiseringen opretter et datafilter efter datointerval. Du har startDate
og endDate
som start- og slutdatoer for intervallet.
Visualiseringen opretter et avanceret filter og kalder værtsmetoden applyJsonFilter
for at filtrere data efter de relevante betingelser.
Målet er den tabel, der bruges til filtrering.
import { AdvancedFilter } from "powerbi-models";
const filter: IAdvancedFilter = new AdvancedFilter(
target,
"And",
{
operator: "GreaterThanOrEqual",
value: startDate
? startDate.toJSON()
: null
},
{
operator: "LessThanOrEqual",
value: endDate
? endDate.toJSON()
: null
});
this.host.applyJsonFilter(
filter,
"general",
"filter",
(startDate && endDate)
? FilterAction.merge
: FilterAction.remove
);
Hver gang du vælger et bogmærke, får den brugerdefinerede visualisering et update
kald.
update
I metoden kontrollerer visualiseringen filteret i objektet:
const filter: IAdvancedFilter = FilterManager.restoreFilter(
&& options.jsonFilters
&& options.jsonFilters[0] as any
) as IAdvancedFilter;
Hvis objektet filter
ikke er null, gendanner visualiseringen filterbetingelserne fra objektet:
const jsonFilters: AdvancedFilter = this.options.jsonFilters as AdvancedFilter[];
if (jsonFilters
&& jsonFilters[0]
&& jsonFilters[0].conditions
&& jsonFilters[0].conditions[0]
&& jsonFilters[0].conditions[1]
) {
const startDate: Date = new Date(`${jsonFilters[0].conditions[0].value}`);
const endDate: Date = new Date(`${jsonFilters[0].conditions[1].value}`);
// apply restored conditions
} else {
// apply default settings
}
Derefter ændrer visualiseringen sin interne tilstand, så den stemmer overens med de aktuelle betingelser. Den interne tilstand omfatter datapunkter og visualiseringsobjekter (linjer, rektangler osv.).
Visualiseringen Tidslinjeudsnit ændrer områdevælgeren til de tilsvarende dataområder.
Gem filtertilstanden for visualiseringen
Ud over at gemme betingelserne for filteret for bogmærket kan du også gemme andre filteraspekter.
Tidslinjeudsnitsværktøjet gemmer f.eks. egenskabsværdierne Granularity
som en filtertilstand. Det gør det muligt at ændre tidslinjens granularitet (dage, måneder, år osv.), når du ændrer bogmærker.
Egenskaben filterState
gemmer et filteraspekt som en egenskab. Visualiseringen kan gemme forskellige filterState
værdier i bogmærker.
Hvis du vil gemme en egenskabsværdi som en filtertilstand, skal du angive objektegenskaben som "filterState": true
i den capabilities.json fil.