首页 > 解决方案 > DAX:如何覆盖评估上下文的一个组件

问题描述

我正在创建一个折线图和堆积柱形图,并且应该在该线上绘制的度量有问题。x 轴是时间(每个月一个条目)。我有两个切片器,图表上的条形图是正确的。

我们希望这条线是一个常数值,代表 1 月份计划的预算。所以我想继续使用过滤器中的切片器值,但想覆盖时间上下文。我试过了:

    Annual Budget = CALCULATE (
                        'Measures'[Annual OP],
                         KEEPFILTERS(Month('Date'[Date] = 1))
                    )

我在这里尝试做的是保留切片器过滤器,然后强制日期过滤器始终使用第 1 个月。我看到的是年度预算仍然每月更改并且等于每个月的年度 OP 值。

标签: powershellfilterdax

解决方案


由于没有样本数据,我们可以创建一个小模型,希望能有所帮助。

销售表

日期 数量 产品
2020-01-01 10 1
2020-01-02 20 2
2020-02-05 15 1
2020-02-06 25 2
2020-03-04 50 1

带有 MonthNumber 和 WeekDayNumber 的日历表,仅用于测试切片器

Calendar = 
ADDCOLUMNS( 
    CALENDAR( "2020-01-01", "2020-03-31"), 
    "Month Number", MONTH( [Date] ),
    "WeekDayNumber", WEEKDAY( [Date] ) 
) 

然后 Date 列上的关系创建模型

数据模型

然后 [销售额] 度量

Sales Amount = SUM( Sales[Amount] )

现在我们可以编写一个度量来计算切片器当前选择中第一个 Calendar[MonthNumber] 的销售额,为此我们使用ALLSELECTED

First Month Sales Amount = 
VAR FirstMonth = CALCULATE( MIN ( Calendar[Month Number] ), ALLSELECTED( 'Calendar' ) )
RETURN
CALCULATE (
    [Sales Amount],
    'Calendar'[Month Number] = FirstMonth
)

如果月份总是一月而不是切片器选择的第一个,那么我们可以写一个不同的度量

January Sales Amount = 
CALCULATE (
    [Sales Amount],
    'Calendar'[Month Number] = 1 
)

现在我们可以创建一个折线图和堆积柱形图,其中第一个月或一月的销售金额度量为线,销售金额为列,在销售[产品]上有一个切片器,在日历[月份]上有一个切片器和一个切片器在日历 [WeekdayNumber] 上。

由于我们想使用行 aa 引用列,我们想使用相同的 Y 轴,因此我们将 Y 轴的属性“显示辅助”设置为关闭

显示次要关闭

现在图表的行为与预期一样,根据切片器选择进行相应更改

图一

图 2


推荐阅读