MyTetra Share
Делитесь знаниями!
Как суммировать N столбцов в запросе
Время создания: 12.02.2022 22:46
Текстовые метки: Power Query, List.RemoveFirstN, Record.ToList
Раздел: !Закладки - MSO - Excel - Power Query
Запись: xintrea/mytetra_db_adgaver_new/master/base/164469520603kj81agxo/text.html на raw.githubusercontent.com



//=============================================================================

    //замена значений null->0 по списку столбцов

    Replace_Null_CU = Table.ReplaceValue(Vol_Date_in_data_array_CC,null,0,Replacer.ReplaceValue,List_Columns_Date)

    //Record_ToList = Table.AddColumn(Replace_Null_CU, "Lists_Records", each Record.ToList(Replace_Null_CU{[Индекс]}))

 

    ,

    //Создайте список столбцов для суммирования (отрезаем первые столбцы)

    //colToSum = List.RemoveFirstN(Table.ColumnNames(Replace_Null_CU),6),

    colToSum=List.Buffer(List_Columns_Date),

    //colToSum = List.Buffer(

    //                        List.RemoveFirstN(Table.ColumnNames(Replace_Null_CU),6)

    //                        ),

 

    //Add Index Column

    IDX = Table.AddIndexColumn(Replace_Null_CU,"Index",0,1),

 

    //Result Sum/Count each row of "colToSum"

    //totals

    //= Table.AddColumn(IDX, "Res", each List.Sum(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})) / List.Count(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]}))=[Vol_CC])

    totals

    = Table.AddColumn(IDX, "Res", each [Vol_CC]=List.Sum(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})) /

List.Count(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})))

 


//=============================================================================

    //замена значений null->0 по списку столбцов

    Replace_Null_CU = Table.ReplaceValue(Vol_Date_in_data_array_CC,null,0,Replacer.ReplaceValue,List_Columns_Date)

    //Record_ToList = Table.AddColumn(Replace_Null_CU, "Lists_Records", each Record.ToList(Replace_Null_CU{[Индекс]}))

 

    ,

    //Создайте список столбцов для суммирования (отрезаем первые столбцы)

    //colToSum = List.RemoveFirstN(Table.ColumnNames(Replace_Null_CU),6),

    colToSum=List.Buffer(List_Columns_Date),

    //colToSum = List.Buffer(

    //                        List.RemoveFirstN(Table.ColumnNames(Replace_Null_CU),6)

    //                        ),

 

    //Add Index Column

    IDX = Table.AddIndexColumn(Replace_Null_CU,"Index",0,1),

 

    //Result Sum/Count each row of "colToSum"

    //totals

    //= Table.AddColumn(IDX, "Res", each List.Sum(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})) / List.Count(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]}))=[Vol_CC])

    totals

    = Table.AddColumn(IDX, "Res", each [Vol_CC]=List.Sum(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})) / List.Count(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})))

 

 

//=============================================================================

    ,

    //Создайте список столбцов для суммирования (отрезаем первые столбцы)

    colToSum =List.Buffer(

                            List.RemoveFirstN(Table.ColumnNames(Replace_Null_CU),6)

                            ),

 

    //Add Index Column

    IDX = Table.AddIndexColumn(Replace_Null_CU,"Index",0,1),

 

    //Sum each row of "colToSum"

    totals_Sum

    = Table.AddColumn(

        IDX,

        "Sum",

        each List.Sum(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})),

        Number.Type

    ),

    //Count each row of "colToSum"

    totals_Count

    = Table.AddColumn(

        totals_Sum,

        "Count",

        each List.Count(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})),

        Number.Type

    ),

    //Result Sum/Count each row of "colToSum"

    totals

    = Table.AddColumn(

        totals_Count,

        "Res",

        each List.Sum(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})) / List.Count(Record.ToList(Table.SelectColumns(IDX, colToSum){[Index]})),

        Currency.Type

    ),

   

    Compare_CC_CU = Table.AddColumn(totals, "Сдвиг версий", each [Vol_CC]=[Res])

 

 

//=============================================================================

 

 

После поворота:

Создание списка столбцов для суммирования

Добавление столбца Индекс для ограничения каждой строкой

Добавление столбца, который суммирует столбцы только для этой строки

Удалить индекс колум

 

let

    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],

    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Month Yr", Date.Type}, {"Attribute", type text}, {"Value", Currency.Type}}),

    #"Added Custom" = Table.AddColumn(#"Changed Type", "MonthYear", each Date.ToText([Month Yr],"MMMM yyyy")),

    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Month Yr"}),

    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[MonthYear]), "MonthYear", "Value", List.Sum),

 

//NEW code added after your Pivoted Column line

 

//Get List of columns to sum

//  Assumes this list all columns **except the first** in the Pivot table

//  There are other methods of generating this list if this assumption is incorrect

colToSum = List.RemoveFirstN(Table.ColumnNames(#"Pivoted Column"),1),

 

//Add Index Column

IDX = Table.AddIndexColumn(#"Pivoted Column","Index",0,1),

 

//Sum each row of "colToSum"

totals = Table.AddColumn(IDX, "Sum", each List.Sum(

        Record.ToList(

            Table.SelectColumns(IDX,colToSum){[Index]})

    ), Currency.Type),

    #"Removed Columns1" = Table.RemoveColumns(totals,{"Index"})

 

 

in

#"Removed Columns1"

 

 

 

 

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования