Forum Discussion

omarelmb123's avatar
omarelmb123
Icon for Helper I rankHelper I
3 years ago
Solved

Power Query : customize column that count number of rows for each ROW

Hello everyone, i want to execute this query 

I have product table with 3 columns ( Product Key, Date , sold )  

We can find for one unique productKey many records for different date values. 

     -i want to count the number of YES in the Sold column for each Product Key 

Pls how to do it in Power query ?!

 

 

Thank you.

  • ronrsnfld's avatar
    ronrsnfld
    3 years ago

    If I understand properly, you can do this in PQ by

    • Group by Product Key
    • Count the number of YES in each group
    • Re-expand the table

    Note that your example seems to be incorrect

    • 31/2/2000 is not a valid date
    • Key A3 only has a count of one (1), not three(3)
    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEystQ30jcyMDIAsiNdg5VidaAShkb6BoYgGUNkGSOQjCGSjJ8/RMIYZBZQwhhDiwlIxginjDG6TCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Product Key" = _t, Date = _t, Sold = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{
            {"Product Key", type text}, {"Date", type date}, {"Sold", type text}}, "en-150"),
        #"Grouped Rows" = Table.Group(#"Changed Type", {"Product Key"}, {
            {"All", each _, type table [Product Key=nullable text, Date=nullable date, Sold=nullable text]},
            {"Count", each List.Count(List.RemoveItems(_[Sold],{"NO"})), Int64.Type}
            }),
        #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Date", "Sold"}, {"Date", "Sold"})
    in
        #"Expanded All"

    Data

     

    Results

     

     

     

     

  • ronrsnfld's avatar
    ronrsnfld
    3 years ago

    Sorry about that.

    The new line should have been:

        {"Last Date Sold", (t)=> List.Max(Table.SelectRows(t, each [Sold] = "YES")[Date]), type date}

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEystQ30jcyMDIAsiNdg5VidaAShkb6BoYgGUNkGSOQjCGSjJ8/RMIYZBZQwhhDiwlIxginjDG6TCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Product Key" = _t, Date = _t, Sold = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{
            {"Product Key", type text}, {"Date", type date}, {"Sold", type text}}, "en-150"),
        #"Grouped Rows" = Table.Group(#"Changed Type", {"Product Key"}, {
            {"All", each _, type table [Product Key=nullable text, Date=nullable date, Sold=nullable text]},
            {"Count", each List.Count(List.RemoveItems(_[Sold],{"NO"})), Int64.Type},
            {"Last Date Sold", (t)=> List.Max(Table.SelectRows(t, each [Sold] = "YES")[Date]), type date}
            }),
        #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Date", "Sold"}, {"Date", "Sold"})
    in
        #"Expanded All"

     

     

     

11 Replies

  • omarelmb123 
    Can you share sample data and sample output in table format? Or a sample pbix after removing sensitive data.

  • Hello, that's an exemple of data set and result desired.

     

    Product KeyDateSoldCount (Output wanted)
    A131/2/2020YES2
    A112/01/2021YES2
    A211/01/2021NO0
    A321/03/2021YES3
    A422/03/2021YES3
    A423/03/2021YES3
    • ronrsnfld's avatar
      ronrsnfld
      Icon for Super User rankSuper User

      If I understand properly, you can do this in PQ by

      • Group by Product Key
      • Count the number of YES in each group
      • Re-expand the table

      Note that your example seems to be incorrect

      • 31/2/2000 is not a valid date
      • Key A3 only has a count of one (1), not three(3)
      let
          Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEystQ30jcyMDIAsiNdg5VidaAShkb6BoYgGUNkGSOQjCGSjJ8/RMIYZBZQwhhDiwlIxginjDG6TCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Product Key" = _t, Date = _t, Sold = _t]),
          #"Changed Type" = Table.TransformColumnTypes(Source,{
              {"Product Key", type text}, {"Date", type date}, {"Sold", type text}}, "en-150"),
          #"Grouped Rows" = Table.Group(#"Changed Type", {"Product Key"}, {
              {"All", each _, type table [Product Key=nullable text, Date=nullable date, Sold=nullable text]},
              {"Count", each List.Count(List.RemoveItems(_[Sold],{"NO"})), Int64.Type}
              }),
          #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Date", "Sold"}, {"Date", "Sold"})
      in
          #"Expanded All"

      Data

       

      Results

       

       

       

       

      • omarelmb123's avatar
        omarelmb123
        Icon for Helper I rankHelper I

        thank you it worked, Can you pls tell me how to get the last day of sold product ?