Power BI内嵌,直接查询,不刷新

问题描述 投票:0回答:2

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

Azure SQL 数据库正在由 webjobs 更新,如果我保持打开 Power BI 嵌入式 Web 应用程序,我看不到新数据刷新的视觉效果,除非我触发查询,例如更改选项卡或使用切片器进行过滤。 在文档中我发现了以下内容:

“如果可视化中没有用户交互(例如仪表板),则数据大约每十五分钟自动刷新一次。”

我是否正确理解,在我的案例中,开放的视觉效果应该令人耳目一新,而不需要用户交互?

您能指出不自动更新的原因吗?您还知道一种通过直接查询而不需要用户交互来控制刷新时间的方法,它比“...大约每十五分钟...”更准确

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

powerbi azure-sql-database powerbi-embedded powerbi-datasource
2个回答
2
投票

据我了解,嵌入式报告不会自动刷新。但是,如果您使用 Power BI JS 框架 (https://github.com/Microsoft/PowerBI-JavaScript) 嵌入工作区集合中的报表,则可以在报表上使用

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,并且需要使用新令牌重新加载报告。

如果您计划使报告保持打开状态超过指定的会话时间,您可能需要在会话到期时实施一些检查。


0
投票

您可以通过在报表上设置自动刷新来实现此目的。我将其设置为每 60 秒一次。
报告设置

但请注意,嵌入式工作区有一个“最小刷新间隔”容量设置,默认值为 5 分钟。您需要将其设置为小于或等于您的报告值。 容量设置-最小刷新间隔

© www.soinside.com 2019 - 2024. All rights reserved.