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:
- Powerbi-visuals-utils-interactivityutils versie 3.0.0 of hoger voor filtervisuals en alle visuals die worden gebruikt
InteractivityService
. - Visual API-versie 1.11.0 of hoger voor niet-filtervisuals die in
SelectionManager
plaats vanInteractivityService
. - Als u wilt weten welke versie u gebruikt, controleert u het
apiVersion
bestand 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 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,
registerOnSelectCallback
inISelectionManager
. - 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:
- Gebruik de functie InteractivityService om selecties
applySelectionFromFilter
te beheren. Dit is de eenvoudigere en voorkeursmethode. - Als uw visual via SelectionManager geen gebruik maakt van InteractivityService.
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 .
Gerelateerde inhoud
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor