Чтобы использовать Power Query
Data => Get&Transform => from Text/CSV
и выберите файл => ПреобразованиеHome => Advanced Editor
.Applied Steps
, чтобы понять алгоритм.M Код
let
//Read in CSV document and convert to table
csvSource = Csv.Document(File.Contents("C:\users\ron\desktop\test.csv"),[Delimiter = ",", Encoding=1252, QuoteStyle=QuoteStyle.None]),
Source = Table.PromoteHeaders(csvSource,[PromoteAllScalars = true]),
//type first two columns as Text and
//type all columns after first two as integers (but could change to floats if need be
#"Changed Type" = Table.TransformColumnTypes(Source,
List.Transform(List.FirstN(Table.ColumnNames(Source),2), each {_, Text.Type}) &
List.Transform(List.RemoveFirstN(Table.ColumnNames(Source),2), each {_, Int64.Type})),
//create dynamic list of Sum functions for the Table.Group command
//we will sum all columns except the first two
//so need to create a list of a sum function for each column in the table
colsToSum= List.RemoveFirstN(Table.ColumnNames(#"Changed Type"),2),
sumFunction = List.Transform(colsToSum,
(C) => {C, each List.Sum(Table.Column(_, C)), type number}),
//Group on first two columns and aggregate with Sum
groupSum = Table.Group(#"Changed Type",
List.FirstN(Table.ColumnNames(#"Changed Type"),2),
sumFunction)
in
groupSum
Источник в виде документа csv
col1,col2,col3,col4,col5
1,0101,0,1,0
1,0101,0,2,1
1,0101,0,3,0
1,0101,1,4,1
2,0101,0,5,0
2,0101,0,6,1
2,0102,1,7,0
2,0102,0,8,1
3,0101,0,1,0
3,0101,0,2,1
3,0101,0,3,0
3,0101,1,4,1
4,0101,0,5,0
4,0101,0,6,1
4,0101,0,7,0
Результаты