使用“测量”作为切片器在 Power BI 中无法正常工作

问题描述 投票:0回答:1

我有一个 3 级矩阵:

  1. 一级经销商;

  2. 二级合约名称;

  3. 第三级年份层次结构:年、季度和月。

我有措施

Revenue = SUM ( 'Fact Invoice'[Invoice Amount] )

我创建了收入度量作为过滤器源视频

我创建了一个计算表:

Revenue Filter = GENERATESERIES(0, [Revenue], 100)

然后创建了这个措施:

Revenue Filter Measure = VAR MinValue = MIN ( 'Revenue Filter'[Value] ) 
VAR MaxValue = MAX ( 'Revenue Filter'[Value] ) 
VAR currentMeasure = [Revenue] 
RETURN IF ( currentMeasure >= MinValue && currentMeasure <= MaxValue, 1, 0 )

在视觉过滤器中,我将这个measure设置为1,以便切片器可以过滤矩阵,并且它正在过滤。

问题是它无法正确显示数据。

我尝试创建此措施:

Revenue Filter AGG measure = 
VAR MinValue =
    MIN ( 'Revenue Filter'[Value] )
VAR MaxValue =
    MAX ( 'Revenue Filter'[Value] )
VAR currentMeasure = [Revenue]
--VAR CurrentContract = MAX('Dim Contract'[Contract Intermediary Account Name 1])
 
RETURN
IF (
        ISINSCOPE('Dim Contract'[Contract Intermediary Account Name 1]),
        CALCULATE(
            IF (
                currentMeasure >= MinValue && currentMeasure <= MaxValue,
                1,
                0
            ),
            ALL('Date')
        )
        ,0
    )

然后在过滤器窗格中对其进行过滤= 1,为我提供正确的过滤值,但没有成功。

如下图所示,对于经销商 3,它是正确的,因为总数介于我在切片器中设置的值之间(2k - 5k 之间)。

但对于经销商 1 和 2 来说,这是不正确的,因为总数大于我在切片器中过滤的值。但是,由于其他级别的值与收入过滤器匹配,因此它们会出现。

也就是说,对于经销商 1,一切都应该为 0,因为总数与收入切片器过滤不对应。

经销商3也可能出现同样的问题,例如一个月300欧元,一月2891.36欧元,二月300欧元;这 300 欧元的价值也不应该出现。

样本数据:

Reseller,Contract Hierarchy,Year,Quarter,Month,Revenue
Reseller 2,Contract_1,2023,Q1,March,€ 3 692,09
Reseller 2,Contract_1,2023,Q1,February,€ 3 508,58
Reseller 3,Contract_3,2023,Q1,January,€ 2 891,36
Reseller 1,Contract_2,2023,Q2,May,€ 2 869,66
Reseller 2,Contract_2,2023,Q4,November,€ 2 187,18
Reseller 3,Contract_2,2023,Q4,October,€ 2 146,18

任何人都可以帮助我实现这个目标吗?

非常感谢!

powerbi dax powerbi-desktop
1个回答
0
投票

解决方案:

Revenue Filter AGG measure = 
    VAR MinValue = MIN ( 'Revenue Filter'[Value] )
    VAR MaxValue = MAX ( 'Revenue Filter'[Value] )
    VAR _currentRe = SELECTEDVALUE('Table'[Reseller])
    VAR currentMeasure = [Revenue]
    VAR _sumRe = CALCULATE(
        currentMeasure,
        FILTER(
            ALLSELECTED('Table'),
            'Table'[Reseller] = _currentRe
        )
    )
    RETURN
        IF(
            _sumRe <= _maxValue && _sumRe >= _minValue,
            IF(
                currentMeasure  <= _maxValue && currentMeasure  >= _minValue,
                1,
                0
            ),
            0
        )

结果如下:

© www.soinside.com 2019 - 2024. All rights reserved.