Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

Calculating a increase in faults across multiple Days/Dates

My table has a dates, days of the week and count of faults column. I was wondering if someone could advise me regarding how I can calculate the number of fault increases across Friday and Saturday. For example 

 

Date              Days       Number of faults    Increase in Fault

13.01.2023     Friday            400                      500

14.01.2023    Saturday        900

 

Also is there a way to filter such that only those faults with an increase of 500 on Saturday are displayed?

 

Really appreciate any support,

 

Many thanks

 

  • jbwtp's avatar
    jbwtp
    3 years ago

    Hi Anonymous,

     

    Sorry for the delay, I was working on a deadline project in the last few weeks.

     

    I think you get the idea right. "Closing" column is the "closing balance" (number of faults) for the day as you have it as runing total. It eaquals to the number of faults on the next day. Of course your rows should be sorted by the Date column.

     

    You can apply if to the mixed unique items in the same table by using Table.Group.

    This example a bit messy, but it gives you an idea where to go:

    let 
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjTWMzDUMzIwMlbSUXIrykxJrAQyTAwMgKR/UWJeeqpSrA5QmQmSsuDEktIiiEJLDIVYzTMFqXIsKMjBb5qRAZK6WAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Days = _t, #"Number of faults" = _t, Fruit = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Days", type text}, {"Number of faults", Int64.Type}}),
    vt = Value.Type(Table.AddColumn(#"Changed Type", "Closing", each null, type number )),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Fruit"}, {{"Data", each 
        let 
                Combine = Table.ToColumns(_) & {List.Skip(_[Number of faults])},
                Format = Table.FromColumns(Combine, vt)
            in Format
        }}),
        #"Expanded Data" = Table.ExpandTableColumn(#"Grouped Rows", "Data", {"Date", "Days", "Number of faults", "Closing"}, {"Date", "Days", "Number of faults", "Closing"}),
        #"Reordered Columns" = Table.ReorderColumns(#"Expanded Data",{"Date", "Days", "Number of faults", "Fruit", "Closing"}),
        Custom1 = #table(vt, Table.ToRows(#"Reordered Columns")),
        #"Added Custom" = Table.AddColumn(Custom1, "Increase", each [Closing]-[Number of faults])
    in
        #"Added Custom"

     

10 Replies

  • jbwtp's avatar
    jbwtp
    Icon for Memorable Member rankMemorable Member

    Hi Anonymous,

     

    This code brings "closing balance" to the dataset. This is straightforward to calculate/filter the increase from there:

        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjTWMzDUMzIwMlbSUXIrykxJrAQyTAwMlGJ1gLImSLLBiSWlRRB5S5B8LAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Days = _t, #"Number of faults" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Days", type text}, {"Number of faults", Int64.Type}}),
        Combine = Table.ToColumns(#"Changed Type") & {List.Skip(#"Changed Type"[Number of faults])},
        Format = Table.FromColumns(Combine, Value.Type(Table.AddColumn(#"Changed Type", "Closing", each null, type number )))
    in
        Format

     

    Cheers,

    John

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi jbwtp John,

       

      I had just saved the above script as a .json file but received the following error message.

       

      I was wondering if you may be able to advise me regarding this.

       

      Many thanks,

       

      Nida

       

      • jbwtp's avatar
        jbwtp
        Icon for Memorable Member rankMemorable Member

        Hi Nida,

        this is not a JSON script. This is M code for PQ.

        To test it you need to create a blank query in PQ:

         

        and then copy the code into the query using Advanced Editor.

         

         

        Kind regards,

        John

  • Anonymous's avatar
    Anonymous
    Not applicable

    jbwtp Hi John,

     

    I really appreciate your reply been trying many script for a while and haven't gotten what I was aiming for so really appreciate you providing the above. Will try this out tomorrow and update the post. 

     

    Many thanks 

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi jbwtp,

     

    That's completely fine you do not need to apologise you have already been a great help going out of your way go help me. I really appreciate it. I had been trying use Power BI for work and have learnt a lot from your answers.

     

    Many thanks