我正在使用PowerBI桌面,并且正在创建一个图表以显示每个工作日的平均销售额:
我的数据采用以下格式:
(在Excel中进行采样以删除敏感信息,并添加了颜色以便于可视化)
我的问题是:由于每天被分成24行(小时),因此我的平均值错误了24倍。
例如,如果我在具有五个星期二(工作日代码:2)的切片器中选择“ January-2019”,我想在条码2上看到:
我正在计算:
我可以想到一些方法来解决这个问题,但是它们涉及自定义列或辅助表。我敢肯定,使用DAX和度量有一个简单的答案,但我仍在学习中。
如何正确计算呢?
答案 0 :(得分:1)
据我所知,您正在使用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"
诀窍在添加的列中:#“添加的自定义” = Table.AddColumn(#“更改类型”,“日期”,每个[日期] + Duration.FromText(Time.ToText([hour])))
在这里我将时间添加到日期中。
我还删除了空行(零数量),您不需要它们。
我将“日期和工作日”添加到了Axis,以便用户现在可以从年,月,日到工作日向下钻取。 请注意,您需要计算金额的总和,而不是平均值。
答案 1 :(得分:1)
让我们假设您的表名是“ Data”。创建3个DAX 度量(未计算的列):
措施1:
Total Amount = SUM(Data[Amount])
措施2:
Number of Days = DISTINCTCOUNT(Data[Date])
措施3:
Average Amount per Day = DIVIDE( [Total Amount], [Number of Days])
将最后一个度量拖放到图表中,它将为您提供预期的结果。