Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

Summarize table by column

Hi, I have the next table, where I have quarters and past due data. Instead of having multiple rows with "Qtr 2 2022, Qtr 3 2023, Qtr 1 2019, etc..." I want to sum the total value of each one, how ca...
  • KNP's avatar
    3 years ago

    So try this.

    Right click create new query >> blank query

     

    Go to 'Advanced Editor' for this query and select all and paste in the below. 

    Then follow these steps again for option 2. Pick the one that works best for you. I think option 2.

     

    Option 1

    let
        Source = Table.FromRows(
            Json.Document(
                Binary.Decompress(
                    Binary.FromText(
                        "i45WCjRUMDIwMlSAAkOlWJ1oJTBBlowRSMYAJmNKhgxu00yQZIxBMkZwPQbkSKE4Ao+UCYorUBxILalYAA==",
                        BinaryEncoding.Base64
                    ),
                    Compression.Deflate
                )
            ),
            let
                _t = ((type nullable text) meta [Serialized.Text = true])
            in
                type table [Column1 = _t]
        ),
        #"Filtered Rows" = Table.SelectRows(Source, each ([Column1] <> "")),
        #"Extracted First Characters" = Table.TransformColumns(
            #"Filtered Rows", {{"Column1", each Text.Start(_, 7), type text}}
        ),
        #"Renamed Columns" = Table.RenameColumns(#"Extracted First Characters", {{"Column1", "Quarter"}}),
        #"1" = Table.AddColumn(#"Renamed Columns", "1", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"2" = Table.AddColumn(#"1", "2", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"3" = Table.AddColumn(#"2", "3", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"4" = Table.AddColumn(#"3", "4", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"5" = Table.AddColumn(#"4", "5", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"Grouped Rows" = Table.Group(
            #"5",
            {"Quarter"},
            {
                {"1", each List.Sum([1]), type number},
                {"2", each List.Sum([2]), type number},
                {"3", each List.Sum([3]), type number},
                {"4", each List.Sum([4]), type number},
                {"5", each List.Sum([5]), type number}
            }
        )
    in
        #"Grouped Rows"
    

     

     

    Option 2

    let
        Source = Table.FromRows(
            Json.Document(
                Binary.Decompress(
                    Binary.FromText(
                        "i45WCjRUMDIwMlSAAkOlWJ1oJTBBlowRSMYAJmNKhgxu00yQZIxBMkZwPQbkSKE4Ao+UCYorUBxILalYAA==",
                        BinaryEncoding.Base64
                    ),
                    Compression.Deflate
                )
            ),
            let
                _t = ((type nullable text) meta [Serialized.Text = true])
            in
                type table [Column1 = _t]
        ),
        #"Filtered Rows" = Table.SelectRows(Source, each ([Column1] <> "")),
        #"Extracted First Characters" = Table.TransformColumns(
            #"Filtered Rows", {{"Column1", each Text.Start(_, 7), type text}}
        ),
        #"Renamed Columns" = Table.RenameColumns(#"Extracted First Characters", {{"Column1", "Quarter"}}),
        #"1" = Table.AddColumn(#"Renamed Columns", "1", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"2" = Table.AddColumn(#"1", "2", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"3" = Table.AddColumn(#"2", "3", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"4" = Table.AddColumn(#"3", "4", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"5" = Table.AddColumn(#"4", "5", each Number.RandomBetween(0.5, 15.3), Decimal.Type),
        #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"5", {"Quarter"}, "Attribute", "Value"),
        #"Grouped Rows" = Table.Group(
            #"Unpivoted Other Columns", {"Quarter", "Attribute"}, {{"v", each List.Sum([Value]), type number}}
        )
    in
        #"Grouped Rows"
    

     

    I think this should give you a better understanding of what I was trying to explain.