2017-03-03 16 views
0

我有一个表格模型,其中建立了一些M:M关系。我创建了一个像M_A = CALCULATE(DISTINCTCOUNT('TableA'[ColA1]))这样的测量,当我使用DimDate列,TableB和TableC列时,这种测量在数据透视表中很好地切片。SSMS中的DAX与Excel中的数据透视表

但是,当我尝试在SSMS中发出像下面这样的DAX查询时,它给了我一个错误。

EVALUATE(

SUMMARIZE

(
     FILTER(DimDate,[ColDate3]>VALUE("1/1/2016")) 
     ,[ColDate1] 
     ,[ColDate2] 
     ,[ColB1] --OR [ColC1] for that matter 
     ,"SomeName" 
     ,[M_A] 
    ) 
))ORDER BY [ColDate1],[ColDate2] DESC ` 

我不明白的是Excel如何可以被所有DimDate,表B和表C柱切这项措施,但是当我运行上面的查询,这里是我的消息从ssms获得。

执行查询... 查询(1,9)在输入表中找不到'SUMMARIZE'函数中指定的'ColB1'列。 运行完成

有没有一种方法可以让我运行一个探查器并拦截哪些数据透视表传递给dax引擎,这样我就可以在ssms上复制查询并理解我在构造我的查询时做错了什么?

非常感谢您的帮助!

example diagram

回答

1

是,运行SQL事件探查器,只连接到分析服务,而不是从下拉数据库引擎;但是,跟踪将捕获MDX语句而不是DAX,因为Excel会通过MDX与SSAS通话。如果您从power bi桌面执行相同的操作并采用跟踪,您将在DAX中获得查询。

您还可以安装OLAP Pivot Table Extensions,它会告诉您Excel将发送给SSAS以查找给定数据透视表的MDX查询。