【问题标题】:Power BI pass parameters to reportPower BI 传递参数以报告
【发布时间】:2019-07-13 04:27:43
【问题描述】:

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

【问题讨论】:

    标签: powerbi powerbi-embedded


    【解决方案1】:

    您可以使用 javascript 库来应用过滤器。假设您在名为“Sample Data with State”的表中有一个 PowerBI 报告和一些状态数据,该表有一个名为“State”的列,并且您希望使用 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("已加载", 函数(事件){

    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 报告将根据您单击的内容更新其过滤器。

    享受吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 2019-04-17
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多