可视化中如何根据参数刷新Power BI报表?

How to refresh Power BI report based on parameters in visualization?

如题。我想根据参数刷新 Power BI Desktop 报告,例如日期参数。我可以在查询编辑器中创建日期参数(和其他参数),所以情况并非如此。案例是如何根据在查询编辑器中创建的参数刷新 Power BI 报告(可视化)。可能吗?

这是一个例子:

这些是我的 Power BI 可视化中的过滤器。基于 year/month(用户可以在过滤器上选择月份、年份)报告应自动刷新 - 年份和月份(或日期)必须作为 SQL 参数传递。

不,自 2020 年 8 月 18 日起无法创建动态刷新计划。您可以在报告(桌面)中进行控制,也可以在线进行控制。就是这样。

我找到了解决办法。这里的关键是使用NativeQuery。步骤如下:

  1. 创建带参数的存储过程(例如 DateFromDateTo)并将数据导入 Power BI
  2. 在 PowerQuery 编辑器中创建 2 个参数。假设 startDateendDate。设置一些默认值:

  1. 转到'Advance Editor'更改M代码。正确的应该是这样的:
let
    Source = Sql.Database("ServerName", "Base2"),
    Query = Value.NativeQuery(
            Source, 
            "EXEC [dbo].[storedProcedure_XYZ] @DateFrom = '" & Date.ToText(startDate) & "', @DateTo = '" & Date.ToText(endDate) & "'")
    
in
    
Query    

@DateFrom@DateTo是SQL参数,PQ参数(startDate和endDate)必须赋值给它们以我上面展示的方式。

重要的是不能在'SQL statement field'中放入EXEC....语句导入数据(当然需要填写服务器名称等)。 我的意思是您可以先导入原始数据(请参阅第 1 点),但之后该字段应保持为空。整个工作现在由您的 M 代码使用本机查询完成。

  1. 在您的 'Advanced Editor' 中单击 'Ok' 后(参见第 3 点),您的 SQL 查询将与参数一起执行。现在您可以在 Power BI 中看到刷新的数据。

  2. 转到 Power BI 中的可视化层。单击 'Transform Data' 的向下小箭头并选择 'Edit Parameters':

  1. 现在输入参数值。

点击确定就可以了!您的 SQL 查询现在正在根据您从 PBI 可视化层传递的参数进行刷新,并且所有刷新的数据都将加载到您在 PBI 中的数据模型中 - 这意味着您的可视化将使用新数据自动更新。它不再是统计数据 - 现在是动态的:)

另一个好处是,您从 SQL 导入到 PQ 的基础 table 不会改变功能(因为它通常在您参数化查询时) - 它仍然存在table 即使您在基本查询中使用了参数。它减少了将数据加载到 PBI 数据模型中的问题,所有列都保留在它们的位置上,其中 none 被删除。它非常适合我。

我还关闭了本机查询批准(转到选项>安全),因为 PBI 不会要求您获得执行查询的权限。当您使用本机查询时,这是一件好事(请记住安全问题,这在这里很重要)。