根据由小时组成的数据绘制每个工作日的平均销售额图表

Charting average sales per weekday on data composed of hours

我正在使用 PowerBI 桌面,我正在创建一个图表来显示每个工作日的平均销售额

我的数据格式如下:

(在Excel中采样以去除敏感信息,添加颜色以方便可视化)

我的问题是:因为每一天都被分成 24 行(小时),所以我的平均值是错误的 24 倍。

例如,如果我在切片器中 select January-2019,它有五个星期二(工作日代码:2),我想在栏上看到数字 2:

相反,我正在计算:


我能想到一些方法来解决这个问题,但它们涉及自定义列或辅助表。我确信使用 DAX 和度量有一个更简单的答案,但我仍在学习它。

如何正确计算?

我从您的 excel 了解到您正在使用 3 个不同的专栏。您可以更好地将它与日期时间结合起来,让 power-bi 处理它。

下面m语言会为你做的:

let
    Source = Excel.Workbook(File.Contents("C:\....\Test.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"date", type datetime}, {"hour", type time}, {"amount", type number}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Date", each  [date]+ Duration.FromText(Time.ToText([hour]))),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"amount", "Date"}),
    #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each ([amount] <> 0))
in
    #"Filtered Rows"

诀窍在添加的列中:#"Added Custom" = Table.AddColumn(#"Changed Type", "Date", 每个 [date]+ Duration.FromText( Time.ToText([小时])))

这里我把时间加到日期上。

我还删除了空(零金额)行,您不需要它们。

我将日期和工作日添加到轴中,这样用户现在可以从年、月、日向下钻取到工作日。 请注意,您需要计算金额的总和,而不是平均值。

让我们假设您的 table 名字是 "Data"。创建 3 个 DAX measures(未计算列):

措施 1:

Total Amount = SUM(Data[Amount])

措施 2:

Number of Days = DISTINCTCOUNT(Data[Date])

措施 3:

Average Amount per Day = DIVIDE( [Total Amount], [Number of Days])

将最后一个度量放到图表中,它应该会给出预期的结果。