所有上下文删除不适用

发布于 2025-02-07 18:41:08 字数 861 浏览 1 评论 0原文

我定义了下表:

以下措施无法正常工作:

VAR lt_MAX_DATE =
    FILTER(
        ALL(    dim_CALENDAR[DATE]  )   ,
        dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )
    )

VAR lv_MAX_YEAR_DAY =
    CALCULATE(
        VALUES( dim_CALENDAR[YEAR_DAY]  )   ,
        ALL(    dim_CALENDAR  ) ,
        lt_MAX_DATE
    )

RETURN
    lv_MAX_YEAR_DAY

我得到:

在我看来,对于最大日期的两个行,我应该获得10,但事实并非如此。
我的问题是:为什么dim_calendar [年]上下文即使我已经使用了all()函数?

感谢您的帮助。

I have defined the following table :
enter image description here

The following measure does not work as expected :

VAR lt_MAX_DATE =
    FILTER(
        ALL(    dim_CALENDAR[DATE]  )   ,
        dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )
    )

VAR lv_MAX_YEAR_DAY =
    CALCULATE(
        VALUES( dim_CALENDAR[YEAR_DAY]  )   ,
        ALL(    dim_CALENDAR  ) ,
        lt_MAX_DATE
    )

RETURN
    lv_MAX_YEAR_DAY

as I get :
enter image description here

In my mind, I should get 10 for both rows of the Max Date ALL column, but this is not the case.
My question is : why does a dim_CALENDAR[YEAR] context apply even though I have used the ALL() function?

Thank you for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凉墨 2025-02-14 18:41:08

如果您想要dax测量来返回 maxyear maxyear 的最大 无论 目前在过滤器上下文中都可以看到,您都可以在许多方面实现它。其中两个如下。

Measure1 = 
VAR mxYr =
    CALCULATE ( MAX ( dim_Calendar[Year] ), ALL ( dim_Calendar[Year] ) )
RETURN
    CALCULATE (
        MAX ( dim_Calendar[Year_day] ),
        dim_Calendar[Year]=mxYr
    )


Measure2 = 
VAR mxYr =
    CALCULATE ( MAX ( dim_Calendar[Year] ), ALL ( dim_Calendar[Year] ) )
RETURN
    CALCULATE (
        MAX ( dim_Calendar[Year_day] ),
        TREATAS ( { mxYr }, dim_Calendar[Year] )
    )

If you want the DAX measure to return the max Year_day of maxYear by ignoring no matter what year is currently visible in the filter context, you can achieve it in many ways. Two of them are as below.

Measure1 = 
VAR mxYr =
    CALCULATE ( MAX ( dim_Calendar[Year] ), ALL ( dim_Calendar[Year] ) )
RETURN
    CALCULATE (
        MAX ( dim_Calendar[Year_day] ),
        dim_Calendar[Year]=mxYr
    )


Measure2 = 
VAR mxYr =
    CALCULATE ( MAX ( dim_Calendar[Year] ), ALL ( dim_Calendar[Year] ) )
RETURN
    CALCULATE (
        MAX ( dim_Calendar[Year_day] ),
        TREATAS ( { mxYr }, dim_Calendar[Year] )
    )

Solution

绝對不後悔。 2025-02-14 18:41:08

该表达式

VAR lt_MAX_DATE =
    FILTER(
        ALL(    dim_CALENDAR[DATE]  )   ,
        dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )
    )

与此表达式相同

VAR YEARinMatrixRow = SELECTEDVALUE[dim_CALENDAR[YEAR]]
VAR lt_MAX_DATE =
    CALCULATETABLE (
        FILTER(
            ALL(    dim_CALENDAR[DATE]  )   ,
            dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )
        )
        ,dim_CALENDAR[YEAR] = YEARinMatrixRow 
    )

,表达式的结果是所选年份的最后日期。您会得到一行过滤。

第二个表达式通过DAX优先级过滤表

ALL(    dim_CALENDAR  ) 
,lt_MAX_DATE 

,第一个工作所有(dim_calendar),然后应用过滤器-lt_max_date,

因此,您可以在矩阵行中获得DIM_CALENDAR表,只需在一年的最后一天过滤,具有值的单个值(DIM_CALENDAR [YEAR_DAY])。

您可以通过-lt_max_date

normaly越过所有(dim_calendar),您将使用lv_max_year_day语法遇到错误。计算返回标量值,而值()函数即使使用1个单元格也返回表。

This expression

VAR lt_MAX_DATE =
    FILTER(
        ALL(    dim_CALENDAR[DATE]  )   ,
        dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )
    )

is the same as

VAR YEARinMatrixRow = SELECTEDVALUE[dim_CALENDAR[YEAR]]
VAR lt_MAX_DATE =
    CALCULATETABLE (
        FILTER(
            ALL(    dim_CALENDAR[DATE]  )   ,
            dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )
        )
        ,dim_CALENDAR[YEAR] = YEARinMatrixRow 
    )

So, the result of the expression is the last date of the selected (in Row) year. You get a Row filtering.

The second expression filters the table by

ALL(    dim_CALENDAR  ) 
,lt_MAX_DATE 

According to DAX priorities, first works ALL(dim_CALENDAR) , then you apply filter - lt_MAX_DATE

So, you get the dim_CALENDAR table, simply filtered by the last day of the year in a matrix row where you get a single value with the VALUES( dim_CALENDAR[YEAR_DAY] ).

You overite ALL( dim_CALENDAR ) by the - lt_MAX_DATE

Normaly, you will get an error with lv_MAX_YEAR_DAY syntax. Calculate returns scalar value, while VALUES() function returns a table even with 1 cell.

鯉魚旗 2025-02-14 18:41:08

正如@mik所说,您正在限制上下文

dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )

As @Mik says, you are restricting the context with

dim_CALENDAR[DATE]  =   MAX(    dim_CALENDAR[DATE]  )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文