Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
2 years ago
Solved

How do i find maximum values from a column with respect to other column data

Migrating bobj report to power bi. In bobj I have a calculation as = Max(IF([Replicate = 1] Then ([Result])) In ([Batch ID])

 

Sample Data

 

Batch IDResult Value Replicate
8172.931
8172.852
8213.021
8212.942

 

Expected result


Bach IDResult ValueReplicateValue
8172.9312.93
8172.8522.93
8213.0213.02
8212.9423.02

 

PowerBI 

lbendlin 

amitchandak 

Ritaf1983 

Idrissshatila 

OwenAuger 

  • Hi Anonymous 

    If you want a Dax solution, you can add a calculated column with the formula:

    max_by_id = CALCULATE(max('Table'[Result Value]), ALLEXCEPT('Table','Table'[Batch ID]))

    Pbix is attached 

    If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly

  • Hi Anonymous 

    If you want the values to change according to the slicers / filters selections you cant use calculated columns and need to create measures.

     

     

    The updated pbix is attached

    If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly

6 Replies

  • let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WsjA0V9JRMtKzNAZShkqxOgghC1MQBREyMgSyjfUMjBCqwEJAjSYQVbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Batch ID" = _t, #"Result Value" = _t, #" Replicate" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Batch ID", Int64.Type}, {"Result Value", type number}, {" Replicate", Int64.Type}}),
        #"Grouped Rows" = Table.Group(#"Changed Type", {"Batch ID"}, {{"Value", each List.Max([Result Value]), type nullable number}, {"Rows", each _, type table [Batch ID=nullable number, Result Value=nullable number, #" Replicate"=nullable number]}}),
        #"Expanded Rows" = Table.ExpandTableColumn(#"Grouped Rows", "Rows", {"Result Value", " Replicate"}, {"Result Value", " Replicate"}),
        #"Reordered Columns" = Table.ReorderColumns(#"Expanded Rows",{"Batch ID", "Result Value", " Replicate", "Value"})
    in
        #"Reordered Columns"

    How to use this code: Create a new Blank Query. Click on "Advanced Editor". Replace the code in the window with the code provided here. Click "Done".

  • Hi Anonymous 

    If you want a Dax solution, you can add a calculated column with the formula:

    max_by_id = CALCULATE(max('Table'[Result Value]), ALLEXCEPT('Table','Table'[Batch ID]))

    Pbix is attached 

    If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly

    • Anonymous's avatar
      Anonymous
      Not applicable

      Sample Data

       

      Batch IDResult Value Replicate
      8172.931
      8172.852
      8213.021
      8212.942

       

      Expected result


      Bach IDResult ValueReplicateMax_Value

      Min_Value

       

      Range

      8172.9312.932.850.08
      8172.8522.932.850.08
      8213.0213.022.940.08
      8212.9423.022.940.08

      Rita Te approach is correct but the result is not expected for my data. I tink you didn't use the replicate filter. So, when Replicate is 1 the Max_value should be 2.93 and 3.02 and when it is 2 the Min_Value should be 2.85 and 2.94. And we need to calculate the range i,e Range =  Max_value - Min_Value. Please suggest this approach of the dax.

      • Ritaf1983's avatar
        Ritaf1983
        Icon for Super User rankSuper User

        Hi Anonymous 

        If you want the values to change according to the slicers / filters selections you cant use calculated columns and need to create measures.

         

         

        The updated pbix is attached

        If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly