我正在研究SQL Server表格模型。
我正在努力将MDX方程转换成DAX方程。
我想要显示每个月的PC数量的变化(增量或递减)速度使用以下计算。
(当月PC数-上月PC数)/上月PC数
这是MDX方程,它在多维模型中工作得很好。
PC计数是最后一个非空值。
(([Date].[Fiscal QTR].CURRENTMEMBER, [Measures].[PC Count])
-
([Date].[Fiscal QTR].PREVMEMBER, [Measures].[PC Count]))
/
([Date].[Fiscal QTR].PREVMEMBER, [Measures].[PC Count])
我做了一个当月PC计数的DAX方程
PC Count:=
CALCULATE(
SUM([PC Count]),
FILTER(Time, Time[DateKey] = MAX(vwFact_PCCount[DateKey]))
)
这在网格视图(SSDT)和Performance Point中运行良好。但是,下面的MDX方程式对于上个月的PC计数在网格视图(SSDT)中运行良好,但此方程式在I底轴(月)的Performance Point中显示错误。
Previous Month Count:=CALCULATE(
SUM([PC Count]),
FILTER(Time, Time[DateKey] = FORMAT(DATE(LEFT(Max(vwFact_PCCount[DateKey]),4),
RIGHT(LEFT(Max(vwFact_PCCount[DateKey]),6),2)
,1)-1
, "yyyyMMdd") *1)
)
我不知道我上个月的计数公式出了什么问题。如何使用DAX获得此结果?
发布于 2013-01-08 14:12:46
您的“当前月份PC计数”表达式的编写使其始终是表中最近的月份。这与您在帖子中显示的MDX代码不同。
MDX -当月PC计数
([Date].[Calendar Month].CURRENTMEMBER, [Measures].[PC Count])
DAX -当月PC计数
SUM('table name'[PC Count])
在DAX中,“当前”的概念是contextual...See this thread在MSDN论坛上的一个很好的讨论。
下面的示例显示了使用AdventureWorksDW2012数据集的DAX中的当前/以前情况:
DEFINE
MEASURE 'Internet Sales'[SalesAmount_CurrMth] =
'Internet Sales'[Internet Total Sales]
MEASURE 'Internet Sales'[SalesAmount_PrevMth] =
CALCULATE (
'Internet Sales'[SalesAmount_CurrMth]
,PREVIOUSMONTH('Date'[Date])
)
EVALUATE (
FILTER(
ADDCOLUMNS (
SUMMARIZE (
'Date'
,'Date'[Calendar Year]
,'Date'[Month Name]
)
,"Current Month", 'Internet Sales'[SalesAmount_CurrMth]
,"Prior Month", 'Internet Sales'[SalesAmount_PrevMth]
)
,'Internet Sales'[SalesAmount_CurrMth] <> BLANK()
)
)
试试这个。
Previous Month Count :=
CALCULATE (
SUM('<insert table name here>'[PC Count])
,DATEADD('Date'[Date],-1, MONTH)
)
https://stackoverflow.com/questions/13114702
复制相似问题