Power Query,基于指定日期范围内出现的值的平均值

Power Query, avg value based on the values appearing within a specified date range

上下文:

我有一个关于几年内进入我网站的卡车和拖车组合重量的数据集。我按季节组织了我的数据,因为我试图证明冬天的 truck:trailers 由于冰、雪和泥泞而明显更重。理论是,如果这个季节的皮重(卡车清空后的重量)高于它的平均皮重(我需要从数据中计算),可以推断出 truck:trailer 组合带来的额外重量是我们支付的一部分,因为一些 snow/ice/mud 在拖车清空过程中脱落。

到目前为止我做了什么:

我需要做的事情:

example of my data

完成后我希望数据看起来像这样

Pivot Chart

query data

对于您的第一个问题(所有季节),您可以添加一个列,其中包含每个 [Driver:Trailer] 的 [Season] 值的不同计数。然后过滤该列上的 table,仅保留 4。为此,请将以下 m 代码添加到高级编辑器中的脚本中。把in后面的部分改成#"DistinctCount Season"

#"DistinctCount Season" = Table.Join(#"insert name previous step","Driver:Trailer",
    Table.Group(#"insert name previous step", {"Driver:Trailer"}, 
    {{"DistinctCountSeasons", each Table.RowCount(Table.Distinct(_,"Season")),
    type number}}),"Driver:Trailer")

在指定位置插入上一步的名称。


第二个问题:

您可以在报告中为此使用矩阵视觉。首先创建一个度量:

[AverageTare] = AVERAGE(table'[Tare])

然后将 [Season] 放在行上,将 [AverageTare] 放在值上。您可以创建一个名为 [DrySeason] 的组(右键单击 FIELDS-pain 中的 [Season]),以组合 Spring 和 Summer.
的值 如果这对您不起作用,请探索 AVERAGEX 函数。

编辑
在 excel 中,您可以使用枢轴 table。将 [Season] 放在 Rows 上,将 [AverageTare] 放在 Values 上。右键单击数据透视表 table 中的一个值。 Select Value Field Setting 并选择 Average。然后 select 要分组的季节,右键单击并 select Group

编辑 2
要在 Power Query 编辑器中添加一列以保存每行中 [Season] 的平均 [Tare],请将以下步骤添加到高级编辑器中的脚本:

#"GroupedSeasonAvg" = Table.Group(#"Insert name previous step", {"Season"}, {{"AVG", each List.Average([Tare]), type number}}),
#"JoinOnSeason" = Table.NestedJoin(#"Insert name previous step",{"Season"},GroupedSeasonAvg,{"Season"},"AVGGrouped"),
#"ExtractSeasonAVG" = Table.ExpandTableColumn(JoinOnSeason, "AVGGrouped", {"AVG"}, {"SeasonAVG"})

它的工作原理是这样的:

  1. "GroupedSeasonAvg" : 创建一个 table 每个 [Season]
  2. 的平均值
  3. "JoinOnSeason":创建一个新列,其中 tables 将每行的 [Season] 值连接到分组 table 中的 [Season]。
  4. #"ExtractSeasonAVG":展开每个table,只保留[AVG].