我有2张桌子:
Date
-----
Dec 2021
Jan 2022
Feb 2022
Mar 2022
.
.
.
Event | Last Date
-----------------
Event A | 01-Jan-2013
Event B | 01-Mar-2017
Event C | 01-Feb-2022
. | .
. | .
. | .
我想创建一个表,计算日历表和事件表的最后日期之间的平均月份差异,并每月汇总它们
计算如下:
2021 年 12 月
事件 A 的月份差异 = 107
事件 B 的月份差异= 57
事件 C 不被视为最后日期 > 2021 年 12 月
平均值 = (107+57)/2 = 82
2022 年 1 月
事件 A 的月份差异= 108
事件 B 的月份差异= 58
事件 C 不被视为最后日期 > 2022 年 1 月
平均值 = (108+57)/2 = 83
2022 年 2 月
事件 A 的月份差异 = 109
事件 B 的月份差异 = 59
事件 C 的月份差异= 0
平均值 = (109+58+0)/3 = 56
2022 年 3 月
事件 A 的月份差异 = 110
事件 B 的月份差异= 60
事件 C 的月份差异 = 1
平均值 = (110+59+1)/3 = 57
输出表应如下:
Date | Avg Diff
------------------------
Dec 2021 | 82
Jan 2022 | 83
Feb 2022 | 56
Mar 2022 | 57
. |
. |
. |
感谢您通过 DAX(PowerBI) 或 PowerQuery 实现此目的的任何帮助。
结果
事件表如下所示:
日历表看起来像这样:
日历表获取结果的完整代码:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcklNVjAyMDJUitWJVvJKzANxjMAct9QkBMc3sQjKiQUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t]),
#"Duplicated Column" = Table.DuplicateColumn(Source, "Date", "Date2"),
#"Changed Type" = Table.TransformColumnTypes(#"Duplicated Column",{{"Date2", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom",
let a = (x)=>
let b = Table.SelectRows( Event, (y)=> y[Last Date] <= x[Date2] ),
c = Table.AddColumn(b, "diff", (z)=>( Date.Month(x[Date2]) + (Date.Year(x[Date2])*12)) - (Date.Month(z[Last Date]) + (Date.Year(z[Last Date])*12)) ),
d = Table.RowCount(b),
e = List.Sum(c[diff])
in e/d
in a),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Date2"})
in
#"Removed Columns"