我使用PowerBI(2020年10月),我有一个带有下拉日期切片器的仪表板。我有两个问题:
-
我需要将切片器的值传递给存储过程,以将其用作where条件。我的意思是查询已在存储过程中使用,由切片器中选取的日期过滤。
-
我需要保持更新切片器的值。我的意思是,如果今天是2021/08/10,这个日期会自动显示在切片机中,明天就会自动变成2020/08/11。
如果有人能提供一些解决方案,那就太好了。
Thanks in advance
1)。如果使用存储过程,则必须创建2个参数来选择数据范围。类似的事情发生在我之前,所以我从存储过程切换到mysql或sql视图。我设法通过连接查询获得数据并对其进行优化。因为如果你使用视图,你有一些限制。如果你有正确的需求硬编码下限日期,如果你使用视图,它就像mysql表一样。
2)。如果您在过滤器中有日期切片器,您可以将其更改为相对于选定时间的日期,那么您的上限日期将相应地更新。
经过几个小时的测试,我强烈认为这是不是可以使用参数和DirectQuery调用SQL存储过程,受PowerBI仪表板中用户控件的影响。
- 这很容易在PowerBI报表生成器中完成。
- 您可以在PowerBI中创建参数,这些参数会影响sql存储过程中的参数值,但用户无法在仪表板中对其进行调整。
调用SQL SP的语法为:
let
Source = Sql.Database("[server]", "[database]", [Query="EXEC direct.sp_[stored procedure] '" & DateTime.ToText(prmStartDatum) & "', '" & DateTime.ToText(prmEindDatum) & "'", CommandTimeout=#duration(0, 0, 10, 0), HierarchicalNavigation=true, MultiSubnetFailover=true])
in
Source
得到的错误是:
Microsoft SQL:关键字'EXEC'附近语法错误。不正确的')'附近的语法
如果这个问题解决了,这将是对PowerBI仪表板的一个巨大改进。