Power BI传递参数以进行报告

时间:2018-05-31 14:19:27

标签: powerbi powerbi-embedded

我有一个包含多个参数的Power BI报告,我需要将报告嵌入到网页中,并希望通过嵌入URL或Power BI JavaScript库设置这些参数。这可能吗?从根本上说,我想将承载报告的页面中的一些数据传递给报告并访问M中的数据。是否有任何机制允许这样做?

1 个答案:

答案 0 :(得分:0)

您可以使用javascript库来应用过滤器。假设您有一个PowerBI报告和一个名为“带有状态的示例数据”的表中的一些状态数据,该表具有一个名为“状态”的列,并且您想使用javascript API按状态值进行过滤。

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

};

这将在状态值的UI上为您提供一个参数框。单击它们时,PowerBI报告将根据您单击的内容更新其过滤器。

享受。