excel - 对多维 SSAS 的 DAX 查询不正确
问题描述
当 Excel 连接到 SSAS 时,Excel会对多维数据集进行mdx查询并且它可以正常工作。
当 PowerBI 连接到 SSAS(实时连接)时,PowerBI 对多维数据集进行DAX查询并且它无法正常工作,因为“CurrenteMember”不起作用。
我在 SSAS 中有一个度量:
CREATE MEMBER CURRENTCUBE.[Measures].[Cumulative amount]
AS sum(
YTD([Time].[Year - Quarter - Month].CurrentMember)
, [Measures].[Fact]
)
当我从 Excel 连接到 OLAP 并在数据透视表中选择 8 月和 9 月时,Excel 对 ssas 进行 mdx 正确查询并且我看到了正确的值。
在 PowerBI 中,我有层次过滤器(年-季-月)和带有列的网格:[月]、[累计金额]。当我从 PowerBI 连接到 OLAP 并在层次结构中选择 8 月和 9 月时,PowerBI 会进行 DAX 查询:
EVALUATE
....
KEEPFILTERS(
FILTER(
KEEPFILTERS(
SUMMARIZE(
VALUES('Time'),
'Time'[Year.Key0],
'Time'[Year],
'Time'[Quarter.Key0],
'Time'[Quarter],
'Time'[Month.Key0],
'Time'[Month]
)
),
AND(
'Time'[Year.Key0] IN {DATE(2019, 1, 1)},
('Time'[Year], 'Time'[Quarter], 'Time'[Month]) IN {("y.2019", "3q 2019", "August 2019"),
("y.2019", "3q 2019", "September 2019")}
)
)
),
....
在这种情况下它不起作用:表中的值是空的,因此表是空的。如果我只选择层次结构中的一项(一个月或一个季度) - 它效果很好。
PowerBI 不能进行 mdx 查询吗?必须做什么才能正确执行对多维 SSAS 的 DAX 请求?
解决方案
感谢您提出的问题。
您应该知道问题不在 Power BI 生成的查询中。
你之前这么说:
当我从 Excel 连接到 OLAP 并在数据透视表中选择 8 月和 9 月时,Excel 对 ssas 进行 mdx 正确查询并且我看到了正确的值。
您的最终用户会感到困惑,结果显示是从年初至今到 8 月还是到 9 月。这就是问题所在。
我们需要知道 YTD() 函数只接受一个指定的成员并且只有一个。(九月或八月)这是合乎逻辑的方式。
Ytd( [ Member_Expression ] )
从与给定成员相同的级别返回一组同级成员,从第一个同级开始并以给定成员结束,受时间维度中的年份级别的约束。
但是有一种方法可以解决这个问题,我不推荐。
假设我们要显示最近一个月的 YTD 结果,如果用户选择多个月份(9 月、8 月、1 月),我们会将 9 月计算为 outed,因为它是最近的。
这可以通过使用两个函数来完成:Order 和 Item
CREATE MEMBER CURRENTCUBE.[Measures].[Cumulative amount]
AS sum(
YTD(
ORDER(
[Time].[Year - Quarter - Month],[Time].[Year - Quarter -Month].MEMBER_KEY,BDESC
).ITEM(0)
) ,
[Measures].[Fact]
)
推荐阅读
- amazon-s3 - 如何将数字海洋空间中的所有文件夹文件权限私有更改为公共?
- c# - 如何在没有麦克风的情况下录制静音
- python - 无法获得带有诅咒的钥匙
- ios - GMSMapView - 模仿谷歌地图应用程序的相机动画
- date - 如何在 Hyperledger Fabric 中获取动态日期时间?
- c# - 未找到范围 (scp) 中的 Azure AD 访问令牌
- hyperledger-fabric - 运行 composer-rest-server 命令后,composer 中出现“Cannot GET /explorer”错误
- php - 如何在 Symfony 3 的安全文件中使用选民
- sql - 在 VBA 中使用 SQL 查询导入 excel 数据会跳过第一行
- wordpress - ACF转PDF如何生成文件?