-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTableAverage.pq
27 lines (27 loc) · 920 Bytes
/
TableAverage.pq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
let
averageTable = (TableToAverage as table, keys as list, optional suffix as text) as table =>
let
t = TableToAverage,
Schema = Table.AddColumn(Table.Schema(t), "Type", each Expression.Evaluate("type " & [Kind]), type type),
RecordTypes = Record.FromList(Schema[Type], Schema[Name]),
Columns = Schema[Name],
Average = Table.Group(
t,
keys,
List.Transform(
List.RemoveItems(Columns, keys),
(C) => {
if suffix = null then C else C & " " & suffix,
each
if Type.Is(Record.Field(RecordTypes, C), type text) then
List.Mode(List.RemoveNulls(Table.Column(_, C)))
else
List.Average(List.RemoveNulls(Table.Column(_, C))),
Record.Field(RecordTypes, C)
}
)
)
in
Average
in
averageTable