Ondersteuning voor bladwijzers toevoegen aan visuals in Power BI-rapporten

Met Bladwijzers voor Power BI-rapporten kunt u een geconfigureerde weergave van een rapportpagina vastleggen en opslaan. Vervolgens kunt u snel en eenvoudig teruggaan naar de opgeslagen weergave wanneer u wilt. De bladwijzer slaat de volledige configuratie op, inclusief selecties en filters.

Zie Bladwijzers gebruiken om inzichten te delen en verhalen te bouwen in Power BI voor meer informatie over bladwijzers.

Visuals die bladwijzers ondersteunen

Een Power BI-visual die bladwijzers ondersteunt, moet de juiste informatie kunnen opslaan en opgeven wanneer dat nodig is. Als uw visual communiceert met andere visuals, gegevenspunten selecteert of andere visuals filtert, moet u de status met bladwijzers opslaan in de filterState-eigenschappen van de visual.

Notitie

Voor het maken van een visual die bladwijzers ondersteunt, is het volgende vereist:

Hoe Power BI-visuals communiceren met Power BI in rapportbladwijzers

Stel dat u meerdere bladwijzers wilt maken op een rapportpagina, waarbij elke bladwijzer verschillende gegevenspunten heeft geselecteerd.

Selecteer eerst een of meer gegevenspunten in uw visual. De visual geeft uw selecties door aan de host. Selecteer Vervolgens Toevoegen in het deelvenster Bladwijzer. Power BI slaat de huidige selecties voor de nieuwe bladwijzer op.

Doe dit meerdere keren om nieuwe bladwijzers te maken. Nadat u de bladwijzers hebt gemaakt, kunt u schakelen tussen de bladwijzers.

Telkens wanneer u een bladwijzer selecteert, herstelt Power BI het opgeslagen filter of de selectiestatus en geeft deze door aan de visuals. De visuals in het rapport worden gemarkeerd of gefilterd op basis van de status die is opgeslagen in de bladwijzer. Hiervoor moet uw visual de juiste selectiestatus doorgeven aan de host (bijvoorbeeld de kleuren van gerenderde gegevenspunten).

De nieuwe selectiestatus (of filter) wordt gecommuniceerd via de options.jsonFilters eigenschap in de update methode. De jsonFilters kan een Advanced Filter of Tuple Filter.

  • Als uw visual geselecteerde gegevenspunten bevat, stelt u de selectie opnieuw in op die van de geselecteerde bladwijzer met behulp van de callback-functie, registerOnSelectCallbackin ISelectionManager.
  • Als uw visual filters gebruikt om gegevens te selecteren, stelt u de filterwaarden opnieuw in op de bijbehorende waarden van de geselecteerde bladwijzer.

Visuals met selectie

Als uw visual communiceert met andere visuals met behulp van Selectie, kunt u op twee manieren bladwijzerondersteuning toevoegen:

InteractivityService gebruiken om bladwijzerselecties te herstellen

Als uw visual Gebruikmaakt van InteractivityService, hebt u geen andere acties nodig om de bladwijzers in uw visual te ondersteunen.

Wanneer u een bladwijzer selecteert, verwerkt het hulpprogramma automatisch de selectiestatus van de visual.

SelectionManager gebruiken om bladwijzerselecties te herstellen

Als u geen bladwijzers gebruikt InteractivityService, kunt u bladwijzerselecties als volgt opslaan en intrekken met behulp van de ISelectionManager.registerOnSelectCallback methode:

Wanneer u een bladwijzer selecteert, roept Power BI de callback methode van de visual aan met de bijbehorende selecties.

this.selectionManager.registerOnSelectCallback(
    (ids: ISelectionId[]) => {
        //called when a selection was set by Power BI
    });
);

Stel dat u een gegevenspunt hebt gemaakt in de visualTransform-methode van uw visual.

Het datapoints ziet er als volgt uit:

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
});

U hebt visualDataPoints nu als uw gegevenspunten en de ids matrix doorgegeven aan de callback functie.

Op dit moment moet de visual de ISelectionId[] matrix vergelijken met de selecties in uw visualDataPoints matrix en vervolgens de bijbehorende gegevenspunten markeren als geselecteerd.

this.selectionManager.registerOnSelectCallback(
    (ids: ISelectionId[]) => {
        visualDataPoints.forEach(dataPoint => {
            ids.forEach(bookmarkSelection => {
                if (bookmarkSelection.equals(dataPoint.selectionId)) {
                    dataPoint.selected = true;
                }
            });
        });
    });
);

Nadat u de gegevenspunten hebt bijgewerkt, geven ze de huidige selectiestatus weer die in het filter object is opgeslagen. Wanneer de gegevenspunten vervolgens worden weergegeven, komt de selectiestatus van de aangepaste visual overeen met de status van de bladwijzer.

Visuals met een filter

Als u bladwijzers in visuals met een filter wilt ondersteunen, gebruikt u InteractivityService.

Stel dat de visual een filter van gegevens maakt op datumbereik. U hebt startDate en als de begin- en endDate einddatum van het bereik.

De visual maakt een geavanceerd filter en roept de hostmethode applyJsonFilter aan om gegevens te filteren op basis van de relevante voorwaarden.

Het doel is de tabel die wordt gebruikt voor filteren.

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
);

Telkens wanneer u een bladwijzer selecteert, krijgt de aangepaste visual een update aanroep.

In de update methode controleert de visual het filter in het object:

const filter: IAdvancedFilter = FilterManager.restoreFilter(
    && options.jsonFilters
    && options.jsonFilters[0] as any
) as IAdvancedFilter;

Als het filter object niet null is, herstelt de visual de filtervoorwaarden van het object:

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
}

Daarna wordt de interne status van de visual aangepast aan de huidige voorwaarden. De interne status bevat de gegevenspunten en visualisatieobjecten (lijnen, rechthoeken, enzovoort).

Belangrijk

In het bovenstaande scenario met rapportbladwijzers mag de visual niet worden aangeroepen applyJsonFilter om de andere visuals te filteren. Ze worden al gefilterd op Power BI.

De visual Tijdlijnslicer wijzigt de bereikkiezer in de bijbehorende gegevensbereiken.

De filterstatus van de visual opslaan

Naast het opslaan van de voorwaarden van het filter voor de bladwijzer, kunt u ook andere filteraspecten opslaan.

De tijdlijnslicer slaat bijvoorbeeld de Granularity eigenschapswaarden op als filterstatus. Hiermee kan de granulariteit van de tijdlijn (dagen, maanden, jaren, enzovoort) worden gewijzigd wanneer u bladwijzers wijzigt.

De filterState eigenschap slaat een filteraspect op als een eigenschap. De visual kan verschillende filterState waarden opslaan in bladwijzers.

Als u een eigenschapswaarde wilt opslaan als een filterstatus, stelt u de objecteigenschap in op "filterState": true het bestand capabilities.json .