Power BI如何向报表传递参数

3

我有一个Power BI报告,其中有几个参数,我需要将报告嵌入网页,并希望通过嵌入的URL或Power BI JavaScript库设置这些参数。这是否可行?基本上,我想从托管报告的页面传递一些数据到报告中,并在M中访问该数据。是否有任何机制允许此操作?

1个回答

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

};

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

享受吧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接