let
clmns = { "Страховые премии ", "Страховые выплаты", "Количество договоров ", "Количество урегул. страховых случаев" },
data = Excel.CurrentWorkbook(){[ Name = "Свод_данных_Кварталы" ]}[Content],
typed = Table.TransformColumnTypes (
data,
{
{ "Страховые премии ", type number },
{ "Страховые выплаты", type number },
{ "Количество договоров ", Int64.Type },
{ "Количество урегул. страховых случаев", Int64.Type },
{ "Средняя страховая премия", type number },
{ "Средняя страховая выплата", type number },
{ "Частота страховых случаев", type number },
{ "Год", Int64.Type }
}
),
group = Table.Group (
typed,
{ "Наименование СК", "Регион", "Федеральный округ" },
{
{
"t",
( t ) =>
[
sort = Table.Sort ( t, { { "Год", Order.Ascending }, { "Квартал", Order.Ascending } } ),
recs = List.Buffer ( Table.ToRecords ( sort ) ),
gen = List.Generate (
() => [
i = 0,
vals = Record.FromList ( Record.FieldValues ( Record.SelectFields ( recs{i}, clmns ) ), clmns ),
new_rec = recs{i}
],
( x ) => x[i] < List.Count ( recs ),
( x ) => [
i = x[i] + 1,
vals = Record.FromList ( Record.FieldValues ( Record.SelectFields ( recs{i}, clmns ) ), clmns ),
new_rec = Record.TransformFields (
recs{i},
List.Transform ( clmns, ( c ) => { c, ( y ) => y - Record.Field ( x[vals], c ) } )
)
],
( x ) => x[new_rec]
),
toTbl = Table.FromRecords ( gen, Value.Type ( typed ) )
][toTbl],
type table
}
}
),
combine = Table.Combine ( group[t] )
in
combine |