3 votes

Power BI passe des paramètres au rapport

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 ?

0voto

vvvv4d Points 96

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X