J'ai un rapport Power BI qui a plusieurs paramètres, j'ai besoin d'intégrer le rapport dans une page Web et je voudrais définir ces paramètres via l'URL d'intégration ou la bibliothèque JavaScript Power BI. Est-ce possible ? Fondamentalement, j'aimerais faire passer certaines données de la page qui héberge le rapport au rapport et accéder à ces données dans M. Existe-t-il un mécanisme pour permettre cela ?
Réponse
Trop de publicités?Vous pouvez utiliser la bibliothèque javascript pour appliquer des filtres. Supposons que vous avez un rapport PowerBI et quelques données d'état dans une table appelée "Sample Data with State" qui a une colonne nommée "State" et vous voulez utiliser l'API javascript pour filtrer par les valeurs d'état.
HTML
<p>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#Parameters" aria-expanded="false" aria-controls="collapseExample">
Parameters
</button>
</p>
<div class="collapse" id="Parameters">
<div class="card card-body">
<div id="state-picker"></div>
</div>
<br/>
</div>
Javascript
report.on("loaded", function (event) {
report.on('loaded', function() {
report.render();
populateStatePicker();
$("#state-picker input").click(setStateFilter);
});
var selectStates = function (states) {
$("#state-picker input").each(function () {
var state = $(this).prop('id');
var selectState = (states.indexOf(state) > -1);
$(this).prop('checked', selectState);
});
setStateFilter();
}
var unselectAllStates = function () {
$("#state-picker input:checked").each(function () {
$(this).prop('checked', false);
});
setStateFilter();
}
var populateStatePicker = function () {
var states = ['AK', 'AL', 'AR', 'AZ', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME', 'MI', 'MN', 'MO', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VA', 'VT', 'WA', 'WI', 'WV', 'WY'];
$("#state-picker").empty();
for (var index = 0; index < states.length; index++) {
var state = states[index];
$("#state-picker")
.append($("<div>", { class: "state-container" })
.append($("<input>", { id: state, name: state, type: "checkbox", class: "state-checkbox" }))
.append($("<label>", { for: state, class: "state-label" }).text(state))
);
}
}
var setStateFilter = function () {
var states = [];
$("#state-picker input:checked").each(function () {
states.push($(this).attr("name"));
});
if (states.length > 0) {
const basicStateFilter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Sample Data with State",
column: "State"
},
operator: "In",
values: states
}
// apply filter to report
report.setFilters([basicStateFilter]);
}
else {
report.removeFilters();
}
};
Cela vous donnera une boîte de paramètres sur l'interface utilisateur des valeurs d'état. Lorsque vous cliquez dessus, le rapport PowerBI met à jour ses filtres en fonction de ce que vous avez cliqué.
Profitez-en.