Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
1 year ago
Solved

Adding new rows with values from other rows

hi there,  I would like to add the rows in red into my existing data. Is there a code for me to generate this inside power query? So it will generate new rows for new data that comes in automatica...
  • AlienSx's avatar
    1 year ago
    let
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], 
        f = (tbl) => 
            [rec = Record.FromList(tbl[Device Count], tbl[Group Type]),
            res = tbl & #table({"Device Count", "Group Type"}, {{List.Sum({rec[ALL], - rec[PL], -rec[Sports]}), "Other"}})][res], 
        group = Table.Group(Source, {"File Name", "Device Mode"}, {"x", f}),
        xpand = Table.ExpandTableColumn(group, "x", {"Device Count", "Group Type"})
    in
        xpand
  • slorin's avatar
    1 year ago

    Hi Anonymous 

    Another solution

    let
    Source = Your_Source,
    Pivot = Table.Pivot(Source, List.Distinct(Source[#"Group Type"]), "Group Type", "Device Count"),
    Others = Table.AddColumn(Pivot, "Others", each [ALL]-[Sports]-[PL]),
    UnPivot = Table.UnpivotOtherColumns(Others, {"File Name", "Device Mode"}, "Group Type", "Device Count")
    in
    UnPivot

     

    EDIT

    with new group type

     

    let
    Source = Excel.CurrentWorkbook(){[Name = "Tableau1"]}[Content],
    Group_Type = List.Distinct(Source[Group Type]),
    Pivot = Table.Pivot(Source, Group_Type, "Group Type", "Device Count"),
    Others = Table.AddColumn(Pivot, "Others",
    (x) => x[ALL]
    - List.Sum(List.Transform(
    List.Select(Group_Type, each _ <> "ALL"),
    each Record.Field(x, _)))),
    UnPivot = Table.UnpivotOtherColumns(Others, {"File Name", "Device Mode"}, "Group Type", "Device Count")
    in
    UnPivot

     

    Stéphane 

  • dufoq3's avatar
    1 year ago

    Hi Anonymous, another one:

     

    Output:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjZUcCxNVzAyMDJRMDKONzbUSy4uU9JRMjM1NgJS/n5AIsBHKVYHt1IjC2NjM5ja4IL8opJivOoNTUyNLY1hGhx98JtuaWpmADK3JDEvJamSSBvMjC1Q9BDwgamJpZk5igawq2IB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"File Name" = _t, #"Device Count" = _t, #"Device Mode" = _t, #"Group Type" = _t]),
        ChangedType = Table.TransformColumnTypes(Source,{{"Device Count", type number}}),
        GroupedRows = Table.Group(ChangedType, {"File Name", "Device Mode"}, {{"InsertedRow", each 
            [ a = List.Sum(Table.SelectRows(_, (x)=> x[Group Type] = "ALL")[Device Count]), //All value
              b = List.Sum(Table.SelectRows(_, (x)=> x[Group Type] <> "ALL")[Device Count]), //Others value
              c = a - b, //All minus Others
              d = Table.InsertRows(_, Table.RowCount(_), { _{0} & [Group Type = "Others", Device Count = c] })
            ][d], type table}}),
        Combined = Table.Combine(GroupedRows[InsertedRow])
    in
        Combined