Delen via


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:

  • Visual API-versie 1.11.0 of hoger voor niet-filtervisuals die gebruikmaken van SelectionManager.
  • Visual API-versie 2.6.0 of hoger voor filtervisuals.
  • Als u wilt achterhalen welke versie u gebruikt, controleert u het apiVersion bestand in het pbiviz.json .

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 zijn gemarkeerd of gefilterd op basis van de status die is opgeslagen in de bladwijzer. Als u de juiste status wilt herstellen, 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

Notitie

InteractivityService is afgeschaft.

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

InteractivityService gebruiken om bladwijzerselecties te herstellen - afgeschaft

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

U kunt 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, worden de huidige selectiestatus weergegeven die is opgeslagen in het filter object. Wanneer de gegevenspunten vervolgens worden weergegeven, komt de selectiestatus van de aangepaste visual overeen met de status van de bladwijzer.

Visuals met een filter

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

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 als filterstatus wilt opslaan, stelt u de objecteigenschap in als "filterState": true in het capabilities.json bestand.