Power BI 嵌入式,直接查询,无法刷新。

6

我已经在Web应用程序中实现了Power BI嵌入,并使用Azure SQL作为数据源进行直接查询。

数据库由Webjobs更新,如果我保持打开的Power BI嵌入式Web应用程序,则除非我触发查询(例如更改选项卡或使用切片器进行过滤),否则我不会看到可视化效果与新数据刷新。 在文档中,我找到了以下内容:

“如果在可视化中没有用户交互,例如在仪表板中,则每十五分钟左右自动刷新数据。”

我是否正确理解,在我的情况下,打开的可视化效果应该无需用户交互即可刷新?

你能指出它没有自动更新的原因吗? 此外,您是否知道一种不需要用户交互即可控制直接查询刷新时间的方法,比“每15分钟左右”更精确?

在检查Power BI桌面上的连接属性时,我确保它指示“直接查询”。

1个回答

2
据我所知,嵌入式报告不会自动刷新。然而,如果您正在使用 Power BI JS 框架(https://github.com/Microsoft/PowerBI-JavaScript)从 Workspace Collection 嵌入您的报告,则可以在报告对象上使用 refresh() 方法手动获取最新的数据,前提是您的报告使用直接查询。
该方法仅存在于框架的 2.2.0 版本中,并在最新版本(当前为 2.2.1)中被删除,原因是正在进行有关计费的进一步测试(请参见 https://github.com/Microsoft/PowerBI-JavaScript/commit/5230b2f96b10a1104efecdffe78255b9788526b8)。
然而,在我的测试中,我发现刷新方法并不会影响会话计数。您可以最多每15秒刷新一次(由服务器设置的限制)。这可能会改变,因为该方法在2.2.1中已被删除,但是目前使用2.2.0似乎仍然有效。
以下是一个简单粗暴的示例,它将在分配的会话内每分钟刷新报告:
powerbi.embed(reportContainer, embedConfig);
report = powerbi.get(reportContainer);

window.setInterval(function () {
     report.refresh();
}, 60 * 1000);

如果会话过期(目前为1小时),则需要请求一个新的JWT令牌,并使用新令牌重新加载报告。
如果您计划保持报告超过分配的会话时间,则可能希望实施一些关于会话到期的检查。

1
只是为了完整回答,如果您嵌入了一个仪表板,则不需要调用refresh()方法(即使实时数据集也会被刷新)。正如cmyers所说,一小时后您需要刷新JWT令牌。 - guiferviz
@guiferviz 你有没有想过为什么仪表板自动更新时报告不会自动更新呢? - Rima
由于相同的原因,在Power BI服务(app.powerbi.com)中也不会更新报告。我想这是一个设计决策。您必须记住,Power BI嵌入式的行为与在线服务相同。 - guiferviz
只是想补充一下,PowerBI-JavaScript团队已经重新加入了刷新方法。 - My Stack Overfloweth

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