2017-04-11 48 views
0

我是DAX的新手,对过滤措施有疑问。正如你可以在附件中看到的,我想只为2018年特定年份的过滤措施

 Volume LY Volume CY 
2016 65.024.635 
2017 65.024.635 63.602.450 
2018 63.602.450 21.597.407 

我想过滤用的指标(Counter)链接过滤两种措施,volume CY(当年)和volume LY。该计数器的值在[0-3]范围内。每年有学期,例如当前学年有0和1学期,2017年 - 2017年2月和3日,2016年 - 4年和5年。在这种情况下,我想为计数器选择1,并且应在2018年过滤semester <= 1

 Volume LY Volume CY 
2018 63.602.450 21.597.407 

我若过滤措施volume CY

FILTER(ALLSELECTED(Table);Table[Semester]<=MAX('Table2'[Counter])); 

然后测量Volume LY自动被过滤为semester <= 1和它不会致使显示值LY。我的问题是:如何使用过滤器函数获取当前两年度的值?

测量音量本年度:

Volume_CY:=CALCULATE(
[Volume]; 
'Scenario'[Scenario1]=1; 
FILTER(Table;Table[Semester]<=MAX('Table2'[Counter]))) 

测量卷LY:

Volume LY:= CALCULATE(
    [Volume_CY]; 
    FILTER(ALLSELECTED(Table);Table[Semester]<=MAX('Table2'[Counter])); 
    FILTER(ALL(Table[Year])) 

下面是这两个指标与计数器1和方案1的结果:正如你可以看到它doesn't显示LY值应该是63.602.450。

Scenario 1 
Counter 1 

     Volume LY Volume CY 
2018    21.597.407 
Total    21.597.407 

现在我有这样的结果:

 Volume CY Volume LY 
20151 77.222.12 77.222.12 
20152 88.868.719 88.868.719 
20161 87.987.22 87.987.22 
20162 92.906.793 92.906.793 
20171 101.102.12 101.102.12 
20172 105.029.725 105.029.725 

而这正是i'm期待:

 Volume CY Volume LY 
20151 77.222.12 
20152 88.868.719 49.123.12 
20161 87.987.22 77.222.12 
20162 92.906.793 88.868.719 
20171 101.102.12 87.987.22 
20172 105.029.725 92.906.793 
+0

请问您可以分享您的表关系模式吗? – user5226582

+0

嗨桌子和桌子2之间没有关系 –

+0

我们可以复制一个小例子来重现吗? – user5226582

回答

0

编辑:

考虑下面的源数据:

year, Volume CY 
20151, 77222.12 
20152, 88868.719 
20161, 87987.22 
20162, 92906.793 
20171, 101102.12 
20172, 105029.725 

预期的结果可能有以下计算列来实现:

Volume LY = CALCULATE(SUM(Table[Volume CY]), 
    ALL(Table1), 
    Table[year] = EARLIER(Table[year])-10) 

导致:

year, Volume CY, Volume LY 
20151, 77222.12, 
20152, 88868.719, 
20161, 87987.22, 77222.12 
20162, 92906.793, 88868.719 
20171, 101102.12, 87987.22 
20172, 105029.725, 92906.793 

其中关于 “year” 列尊重过滤器。


(以下旧答案)

滚动总和:

year semester volume 
2016 1   123 
2017 3   1345 
2018 5   3465 
2016 2   3465 
2017 4   3465 
2018 6   634 

计算列:

VCY = CALCULATE(SUM(Table1[volume]), 
    ALL(Table1), 
    Table1[semester] <= EARLIER(Table1[semester])) 

VLY = CALCULATE(SUM(Table1[volume]), 
    ALL(Table1), 
    Table1[semester] <= EARLIER(Table1[semester]) - 2) 

结果:

year, semester, volume, VCY, VLY 
2016, 1,  123, 123, 
2016, 2,  3465, 3588, 
2017, 3,  1345, 4933, 123 
2017, 4,  3465, 8398, 3588 
2018, 5,  3465, 11863, 4933 
2018, 6,  634, 12497, 8398 

逐年滚动总和:

VCY = 
VAR RowYear = Table1[year] 
RETURN CALCULATE(SUM(Table1[volume]), 
    ALL(Table1), 
    table1[year] = RowYear, 
    Table1[semester] <= EARLIER(Table1[semester])) 

VLY = 
VAR RowYear = Table1[year]-1 
RETURN 
CALCULATE(SUM(Table1[volume]), 
    ALL(Table1), 
    table1[year] = RowYear, 
    Table1[semester] <= EARLIER(Table1[semester])-2) 

结果:

year, semester, volume, VCY, VLY 
2016, 1,  123, 123, 
2016, 2,  3465, 3588, 
2017, 3,  1345, 1345, 123 
2017, 4,  3465, 4810, 3588 
2018, 5,  3465, 3465, 1345 
2018, 6,  634, 4099, 4810 
+0

嗨,我已编辑我的问题上面。请看一看。现在我想在学期的基础上有LY值。 –

+0

你应该显示你的数据和预期的结果(并不一定是真实的数据,只是一个例子) – user5226582

+0

嗨数据是在我的问题上面。这与你的相似。而不是现在2016年下半年的20162。我不能回到-1年。 LY卷应该指半年。我该怎么做? –

0

这是结果:

 Volume CY Volume LY 
20151 77.222.12 77.222.12 
20152 88.868.719 88.868.719 
20161 87.987.22 87.987.22 
20162 92.906.793 92.906.793 
20171 101.102.12 101.102.12 
20172 105.029.725 105.029.725 

而这正是i'm期待:

 Volume CY Volume LY 
20151 77.222.12 
20152 88.868.719 49.123.12 
20161 87.987.22 77.222.12 
20162 92.906.793 88.868.719 
20171 101.102.12 87.987.22 
20172 105.029.725 92.906.793 

如果我在某个具体的年份/半年过滤20162它应该显示如下:

  Volume CY Volume LY 
    20162 92.906.793 88.868.719 

这是i'm与得到:`FILTER(ALL(表),表(年)= MAX(表(年)-10)) - >的Volume CY的总计已丢失!

    Volume CY Volume LY 
       20152 88.868.719 49.123.12 
       20162 92.906.793 88.868.719 
       20172 105.029.725 92.906.793 
Grand Total      186.687.824 
+0

你的例子有20152然后20162;有没有20161? – user5226582

+0

请看看这个:[如何创建一个最小,完整和可验证的示例](https://stackoverflow.com/help/mcve) – user5226582

+0

是的,还有前半部分数据。这在下半场被过滤了。 –