【问题标题】:Create a custom indicator using DAX on power BI在 Power BI 上使用 DAX 创建自定义指标
【发布时间】:2019-08-16 15:09:02
【问题描述】:

适用于所有 POWER BI 用户

我从下面给出的表“示例”中创建了一个表视觉名称作为原始数据(类似于结果表,除了 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%)大于等于 (>=) 整体/总 Rev YoY(%),则显示 1 (总数的-48.16%),否则它将显示0。它会根据切片器选择而变化(如果选择了Jan,更新的值应该根据Jan而变化,对于其他选择,例如Feb,Mar等类似)。

截至目前,该值基于 YTD 值。基于 1 月、2 月等月份,收入和同比值将更新,同时指标度量也应更新。

最终结果如下所示

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

【问题讨论】:

  • 您能完成您的问题吗?您的示例表丢失,您的结果格式非常糟糕,因此难以阅读。你说一个切片器应该做某事,但不清楚它应该做什么。
  • 抱歉格式,示例表与结果表相同,但指标列除外。截至目前,该值基于 YTD 值。基于 1 月、2 月等月份,将更新收入和 YoY 值,同时指标度量也应更新。希望它更清楚。
  • 您是说您正在使用度量,这表明您没有表格,只有视觉。我尝试了您的案例并在表格中添加了一列:Indicator = Revenue[ Rev YoY(%) ] > AVERAGE(Revenue[ Rev YoY(%) ])。这给了我相应的真/假
  • 我正在使用您的方法在我的仪表板上尝试相同的方法,指标 = 收入 [ Rev YoY(%) ] > AVERAGE(Revenue[ Rev YoY(%) ])。平均值正在寻找列名称,而收入 [ Rev YoY(%) ] 是一个衡量标准。在您的情况下,平均值是否接受收入 [ Rev YoY(%) ] 作为论据?我的情况不是。
  • 是的,这是合乎逻辑的,因为您正在使用度量,它没有对行的引用。我开始明白你在寻找。你能给我你的基础数据表和一些数据行,我可以更好地支持你。

标签: powerbi formula dax powerbi-desktop


【解决方案1】:

您可以使用以下语句:

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)
    ) 

【讨论】:

  • 感谢您的反馈和回复。爱它。我尝试使用 ALL 功能。它不工作。它对你有用吗?我为 INDICATOR 中的所有公司获得 1 个值。
  • 是的,它奏效了。我重建了你的案子,所以我一定在某个地方做了一些不同的事情。稍后会研究它。
  • 感谢 Aldert 的回复。有用。我可以在上面再添加一个场景吗?
  • 在当前场景中,原始数据包含 2018 年和 2019 年 1 月至 6 月的数据。如果原始数据包含 2018 年 1 月至 12 月和 2019 年 1 月至 6 月,则 ALL 技巧无法正常工作。它需要所有现有数据的 YoY。我们怎样才能避免这种情况?
  • 你一定是在开玩笑,我认为这就是你想要的结果,并且一直致力于得到你的结果:-)。你需要让我知道你想要的最终结果,这样我才能朝着那个方向努力。
猜你喜欢
  • 1970-01-01
  • 2020-08-01
  • 2023-03-17
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多