Forum Discussion

Rick_S137's avatar
Rick_S137
Helper I
1 year ago
Solved

Sum all individual Columns for large data sets

Hello, I am looking for a method to sum each individual column of a large data set, and group columns based on the name.  Example Data: abc_X_123.stat.energize abc_X_456.stat.energize abc_X_7...
  • MarkLaf's avatar
    MarkLaf
    1 year ago

    I think the simplest approach for you is:

     

    1. Leave your CV query as is, where it just focuses on querying data source files, parsing, combining, etc.
    2. Right-click on your CV query, select Reference
      (this will create a new query where your first step, Source, is just pointing to CV)
    3. On your new query (rename to whatever), open the 'Advanced Editor', replace all text with a solution from here, just be sure that your Source step is referring to your original query, CV
    4. Most likely, you will want to turn off load on CV, so only the new table in desired output is added to your model and/or sheet

     

    lbendlin's solution should work for you IF your columns are data type text and the only value you want to sum across all columns is "1" (as text).

     

    In case your CV table has number/integer data typed columns, you can instead use the below code, following same approach, which is: 1) unpivot all columns, 2) extract group text between _'s, 3) pivot values back and sum

     

    let
        // Reference to the original table
        Source = CV,
        // Unpivot all columns. Column names go to the "Attribute" column,
        // and values go to the "Value" column.
        UnpivotCols = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
        // Extract your group text/labels from between the first and second _
        ExtractGroupText = Table.TransformColumns(
            UnpivotCols, {{"Attribute", each Text.BetweenDelimiters(_, "_", "_"), type text}}
        ),
        // Pivot the table back, summing all values under matching group labels
        PivotValueAndSum = Table.Pivot(
            ExtractGroupText, List.Distinct(ExtractGroupText[Attribute]), "Attribute", "Value", List.Sum
        )
    in
        PivotValueAndSum

     

    Here is a quick gif of the steps I outlined at top. Note: this is in PBI Desktop, not Excel, so UI may be a little different, but everything should apply the same, mostly.