首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDX方程转换为DAX方程

MDX方程转换为DAX方程
EN

Stack Overflow用户
提问于 2012-10-29 08:58:53
回答 1查看 1.2K关注 0票数 1

我正在研究SQL Server表格模型。

我正在努力将MDX方程转换成DAX方程。

我想要显示每个月的PC数量的变化(增量或递减)速度使用以下计算。

(当月PC数-上月PC数)/上月PC数

这是MDX方程,它在多维模型中工作得很好。

PC计数是最后一个非空值。

代码语言:javascript
复制
(([Date].[Fiscal QTR].CURRENTMEMBER, [Measures].[PC Count])
-
([Date].[Fiscal QTR].PREVMEMBER, [Measures].[PC Count]))
/
([Date].[Fiscal QTR].PREVMEMBER, [Measures].[PC Count])

我做了一个当月PC计数的DAX方程

代码语言:javascript
复制
PC Count:=
CALCULATE(
    SUM([PC Count]),
    FILTER(Time, Time[DateKey] = MAX(vwFact_PCCount[DateKey]))
)

这在网格视图(SSDT)和Performance Point中运行良好。但是,下面的MDX方程式对于上个月的PC计数在网格视图(SSDT)中运行良好,但此方程式在I底轴(月)的Performance Point中显示错误。

代码语言:javascript
复制
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获得此结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-08 22:12:46

您的“当前月份PC计数”表达式的编写使其始终是表中最近的月份。这与您在帖子中显示的MDX代码不同。

MDX -当月PC计数

代码语言:javascript
复制
([Date].[Calendar Month].CURRENTMEMBER, [Measures].[PC Count])

DAX -当月PC计数

代码语言:javascript
复制
SUM('table name'[PC Count])

在DAX中,“当前”的概念是contextual...See this thread在MSDN论坛上的一个很好的讨论。

下面的示例显示了使用AdventureWorksDW2012数据集的DAX中的当前/以前情况:

代码语言:javascript
复制
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()
    )
)

试试这个。

代码语言:javascript
复制
Previous Month Count :=
CALCULATE (
     SUM('<insert table name here>'[PC Count])
    ,DATEADD('Date'[Date],-1, MONTH)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13114702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档