首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >筛选特定年份的度量值

筛选特定年份的度量值
EN

Stack Overflow用户
提问于 2017-04-11 17:17:31
回答 2查看 486关注 0票数 0

我是DAX新手,有一个关于过滤措施的问题。正如您在附件中所看到的,我希望仅过滤2018年的volume CY (当前年份)和volume LY这两个度量。

代码语言:javascript
运行
复制
        Volume LY   Volume CY
2016    65.024.635
2017    65.024.635  63.602.450
2018    63.602.450  21.597.407

我想将过滤与一个指示器(Counter)链接起来。此计数器的值范围为0-3。每一年都有学期,例如本年度有学期0和1,2017 -2和3,2016 -4和5。在这种情况下,我想为计数器选择1,它应该过滤2018年的semester <= 1

代码语言:javascript
运行
复制
        Volume LY   Volume CY
2018    63.602.450  21.597.407

但是如果我用以下命令过滤度量volume CY

代码语言:javascript
运行
复制
FILTER(ALLSELECTED(Table);Table[Semester]<=MAX('Table2'[Counter]));

然后,测量Volume LY会自动过滤semester <= 1,并且不会显示LY的值。我的问题是:我如何使用过滤函数来获取本年度这两个指标的值?

测量当前年度的数量:

代码语言:javascript
运行
复制
Volume_CY:=CALCULATE(
[Volume];
'Scenario'[Scenario1]=1;
FILTER(Table;Table[Semester]<=MAX('Table2'[Counter])))

测量音量LY:

代码语言:javascript
运行
复制
  Volume LY:= CALCULATE(
    [Volume_CY];
    FILTER(ALLSELECTED(Table);Table[Semester]<=MAX('Table2'[Counter]));
    FILTER(ALL(Table[Year]))

这是计数器1和场景1的这两个测量的结果:正如你所看到的,它没有显示LY值,它应该是63.602.450。

代码语言:javascript
运行
复制
Scenario    1
Counter 1   

        Volume LY   Volume CY
2018               21.597.407
Total              21.597.407

现在我得到了这样的结果:

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

这就是我所期待的:

代码语言:javascript
运行
复制
        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
EN

回答 2

Stack Overflow用户

发布于 2017-04-12 14:53:23

编辑:

给定以下源数据:

代码语言:javascript
运行
复制
year,   Volume CY
20151,  77222.12
20152,  88868.719
20161,  87987.22
20162,  92906.793
20171,  101102.12
20172,  105029.725

使用以下计算列即可获得预期结果:

代码语言:javascript
运行
复制
Volume LY = CALCULATE(SUM(Table[Volume CY]),
  ALL(Table1),
  Table[year] = EARLIER(Table[year])-10)

这会导致:

代码语言:javascript
运行
复制
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“列上的过滤器。

(旧答案如下)

累计和:

代码语言:javascript
运行
复制
year    semester    volume
2016    1           123
2017    3           1345
2018    5           3465
2016    2           3465
2017    4           3465
2018    6           634

计算出的列:

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

结果如下:

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

每年滚动总和:

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

结果如下:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2017-04-18 16:42:31

这就是结果:

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

这就是我所期待的:

代码语言:javascript
运行
复制
        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,它应该显示如下:

代码语言:javascript
运行
复制
           Volume CY    Volume LY
   20162   92.906.793  88.868.719

这就是我要说的:`FILTER(ALL(Table);Table(Year)=MAX(Table(Year)-10)) --> 缺少CY卷的总计!

代码语言:javascript
运行
复制
                    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43341689

复制
相关文章

相似问题

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