如何获取嵌入式 Power BI 报表正在使用的 table(s)?

How can I get what table(s) an embedded Power BI report is using?

我想像这样动态创建自定义过滤器:

const filter = {
    $schema: "http://powerbi.com/product/schema#basic",
    target: {
        table: "tableName",
        column: "columnName"
    },
    operator: "In",
    values: ["value1", "value2"]
};

为此,我需要知道当前显示的报告使用的 table 名称。有没有办法通过 Power BI Embedded JS 来请求这个 API?

编辑: 使用 dataSelected 事件,我可以解析出 selected 数据点的 table。

report.on('dataSelected', function (event) {
    console.log(event.detail.dataPoints[0].values[0].target.table);
});

是否可以通过编程方式 select 所有数据来触发 dataSelected 事件,以便我可以检索 table? (我知道这很恶心)

获取数据功能刚刚在 Power BI Embedded JS SDK 中发布: https://github.com/Microsoft/PowerBI-JavaScript/wiki/Export-Data

这允许您从报表的特定视觉对象中获取数据行(汇总或基础)。

这也应该 return 原来的 table 列,这样您就可以使您的过滤器更健壮,并减少 'dataselected' 事件侦听器等变通方法。

只需使用:

// Exports visual data
visual.exportData(models.ExportDataType.Summarized, 100)
  .then(function (data) {
    Log.log(data);
  })