在 Power BI 上使用 DAX 创建自定义指标

Create a custom indicator using DAX on power BI

FOR ALL POWER BI USERS

我根据下面给出的 table "Example" 创建了一个 table 视觉名称作为原始数据(类似于结果 table 除了 Ind 列)。我想使用 DAX 创建一个基于总计列的指标。

Company | Rev 2018      | Rev 2019       | Rev YoY(%) | 
-----------------------------------------------------------
A       |   440,980,812 |   321,015,626 | -27.20%     | 
B       |   587,171,150 |   248,150,205 | -57.74%     | 
C       |   693,692,632 |   255,633,145 | -63.15%     | 
D       |   753,951,313 |   266,033,862 | -64.71%     | 
E       |   387,652,076 |   393,439,270 |   1.49%     | 
Total   | 2,863,447,983 | 1,484,272,108 | -48.16%     | 

我的电流测量计算如下

Rev 2018 = CALCULATE(sum(Example[Rev]),Example[Year]=2018)
Rev 2019 = CALCULATE(sum(Example[Rev]),Example[Year]=2019)
Rev YoY(%) = ([Rev 2019]-[Rev 2018])/[Rev 2018]

我想创建一个指标 (Ind),如果该公司的 Rev YoY(%)(公司 A 为 -27.20%)大于等于 (>=) overall/total Rev,它将显示 1 YoY(%)(-48.16% of total),否则显示 0。它会根据切片器选择而变化(如果选择 Jan,更新值应根据 Jan 变化,对于其他选择如 Feb 、 Mar 也类似等)。

截至目前,该值基于 YTD values.Based 一月、二月等月,收入和 YoY 值将更新,同时指标度量也应更新。

最终结果如下所示

Company | Rev 2018      | Rev 2019       | Rev YoY(%) | Ind
-----------------------------------------------------------
A       |   440,980,812 |   321,015,626 | -27.20%     | 1
B       |   587,171,150 |   248,150,205 | -57.74%     | 0
C       |   693,692,632 |   255,633,145 | -63.15%     | 0
D       |   753,951,313 |   266,033,862 | -64.71%     | 0
E       |   387,652,076 |   393,439,270 |   1.49%     | 1
Total   | 2,863,447,983 | 1,484,272,108 | -48.16%     | 1

如果您有解决方案,请帮忙。

我尝试使用 filer(allcrossfiler),但它使字段保持不变,不会随切片器改变

Rev_total% = 
CALCULATE(
    [Rev YoY(%)],
    ALLCROSSFILTERED(Example)
)

基础原始数据

Company Year    Month   Rev
A   2018    Jan 3715518
A   2018    Feb 62195456
A   2018    Mar 47896563
A   2018    Apr 30397293
A   2018    May 13316124
A   2018    Jun 54702783
A   2018    Jul 23559246
A   2018    Aug 56357008
A   2018    Sep 91266366
A   2018    Oct 7826397
A   2018    Nov 30081453
A   2018    Dec 19666605
A   2019    Jan 20525691
A   2019    Feb 55636582
A   2019    Mar 70832178
A   2019    Apr 51101460
A   2019    May 71658353
A   2019    Jun 51261362
B   2018    Jan 70866878
B   2018    Feb 16605125
B   2018    Mar 77399457
B   2018    Apr 93675100
B   2018    May 24187836
B   2018    Jun 17141132
B   2018    Jul 23189326
B   2018    Aug 1228527
B   2018    Sep 77025448
B   2018    Oct 69069603
B   2018    Nov 61201073
B   2018    Dec 55581645
B   2019    Jan 49529171
B   2019    Feb 30268530
B   2019    Mar 58895051
B   2019    Apr 16378441
B   2019    May 63289350
B   2019    Jun 29789662
C   2018    Jan 28386565
C   2018    Feb 55081195
C   2018    Mar 98650639
C   2018    Apr 13600972
C   2018    May 79286377
C   2018    Jun 97910757
C   2018    Jul 59601906
C   2018    Aug 60499979
C   2018    Sep 10555754
C   2018    Oct 21239252
C   2018    Nov 79278588
C   2018    Dec 89600648
C   2019    Jan 27489712
C   2019    Feb 8085774
C   2019    Mar 33489287
C   2019    Apr 52598275
C   2019    May 50816690
C   2019    Jun 83153407
D   2018    Jan 69955023
D   2018    Feb 1684049
D   2018    Mar 44503967
D   2018    Apr 91505045
D   2018    May 74480545
D   2018    Jun 70038948
D   2018    Jul 28811752
D   2018    Aug 82052925
D   2018    Sep 97215945
D   2018    Oct 48093159
D   2018    Nov 96939697
D   2018    Dec 48670258
D   2019    Jan 68414609
D   2019    Feb 34593576
D   2019    Mar 28277668
D   2019    Apr 46146140
D   2019    May 83794133
D   2019    Jun 4807736
E   2018    Jan 21180873
E   2018    Feb 14552267
E   2018    Mar 27409537
E   2018    Apr 68894164
E   2018    May 24608038
E   2018    Jun 12774844
E   2018    Jul 13193433
E   2018    Aug 89921780
E   2018    Sep 34581806
E   2018    Oct 52068148
E   2018    Nov 11374013
E   2018    Dec 17093173
E   2019    Jan 21748970
E   2019    Feb 95983245
E   2019    Mar 49661560
E   2019    Apr 90056699
E   2019    May 72277971
E   2019    Jun 63710825

您可以使用以下内容:

Indicator = if(Example[Rev YoY(%)] > CALCULATE(Example[Rev YoY(%)];ALL(Example[Company]));1;0)

ALL 正在做这个把戏,它告诉拾取所有公司的数据,但仍然保留所有其他过滤器。

一些建议:

我会使用真实日期并合并年和月列, 这使得处理未来数据变得更加容易。

你现在有 2018 年和 2019 年,如果你的数据增长怎么办?未来几年.. 最好谈谈PrevYear/NextYear。您可以做的是在数据 RevNextYear 中添加一列,基于此您的报告将始终有效:

RevNextYear = CALCULATE(sum(RawRevenue[Rev]);
    FILTER(RawRevenue;RawRevenue[Company] = EARLIER(RawRevenue[Company]) &&
    RawRevenue[Month] = EARLIER(RawRevenue[Month]) && 
    RawRevenue[Year] =  EARLIER(RawRevenue[Year]) + 1)
    )