【问题标题】:How to calculate averages when some rows are missing on PowerBI?PowerBI上缺少某些行时如何计算平均值?
【发布时间】:2019-08-20 20:44:27
【问题描述】:

考虑这个数据集:

Day        | City      | Sales
2019-01-20 | London    | 900
2019-01-20 | Paris     | 800
2019-01-20 | Sao Paulo | 700
2019-01-21 | London    | 700
2019-01-21 | Paris     | 800

我需要计算每个城市每天的销售平均值。但是,在 2019 年 1 月 21 日,圣保罗没有记录。应该理解为零,没有销量。

当我创建一个简单的平均值时,PowerBI 会忽略丢失的记录,并将总数 (700 + 800) 除以 2(伦敦和巴黎)。

如何计算每天的平均值,包括缺失的记录(圣保罗)?


解决方案

我找到了解决办法。我认为这不是解决问题的最佳方法,但它确实有效。

所以...

  1. 创建一个以月为间隔的日历表
MonthCalendar = 
var FullCalendar = ADDCOLUMNS(CALENDAR("2019-1-1";DATE(YEAR(NOW());MONTH(NOW())+1;DAY(NOW())));"Mês";EOMONTH([Date];0))
return 
SUMMARIZE(FullCalendar;[Mês])
  1. 创建一个包含类别(在本例中为城市)的汇总表

  2. 创建 CROSSJOIN 表

DataTable = CROSSJOIN(MonthCalendar ; Cities)
  1. 使用过滤器将列添加到您的 DataTable。像这样:
SalesByMonth = CALCULATE(Sum('Cities'[Sales]); FILTER('Cities';'Cities'[name] = 'DataTable'[City]))

谢谢大家。我希望有一天它对某人有所帮助。 丹尼尔

【问题讨论】:

    标签: powerbi dax powerquery


    【解决方案1】:

    您可以使用以下公式,而不是简单地使用平均函数:

    Sum(Sales)/ (Max(date) - Min(date))
    

    【讨论】:

      【解决方案2】:

      真正的问题是:你想在哪里取平均值? Power-bi 是根据行执行此操作的。这是逻辑。

      因为您使用的是日期,所以您想要一段时间内的平均值,但是您想要的平均值是多少?一周,最小值和最大值之间的天差? 3天如你的例子?

      您可以进行以下 MEASURE 来解决您的场景,但仍然存在问题:您想要平均值在哪里?

      AverSales = 
      var daysCount = CALCULATE(DATEDIFF(MIN(Sales[Date]);MAX(Sales[Date]);DAY);All(Sales))
      return Sum(Sales[Sales])/daysCount
      

      daysCount 是整个表格的最小值和最大值。

      【讨论】:

        【解决方案3】:

        最好的做法是在表中添加一行,其中源销售额为零(或者在查询中)。如果您完成数据,如果您想进行更多分析,您将节省大量时间。

            Day    | City      | Sales
        2019-01-20 | London    | 900
        2019-01-20 | Paris     | 800
        2019-01-20 | Sao Paulo | 700
        2019-01-21 | London    | 700
        2019-01-21 | Paris     | 800
        2019-01-21 | Sao Paulo |   0
        

        因为您(通常)永远不知道您每天获得的最大城市数是多少。但如果城市数量是固定的,您可以使用硬编码:

        Measure = Sum(YourTable[Sales]) / 3
        

        现在添加一个表格视觉对象并使用度量和日期,您将获得每天的平均值。

        【讨论】:

        • 我不相信这有帮助,想想有两个空白的情况,那么我们需要填补4个吗?
        猜你喜欢
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-20
        • 1970-01-01
        • 2019-08-28
        相关资源
        最近更新 更多