Del via


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.

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 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.