Forum Discussion

rangeet1's avatar
rangeet1
Frequent Visitor
4 years ago
Solved

Delete match negative and positive rows

I have ran into a problem where the purchase and refund are both shown in my data. I want to get rid of both matching values. Both  vaues are  under a unique Customer ID. 

 

Thank you 

  • Hi, rangeet1 ;

    Try it;

    let  
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8vAzMDBX0lFSUTA1UIrVQRYwQxcwRxewQBfQxTBEF2qKc6iBgQVYxAhdwBhdwARdwNAAXUQXLBQLAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Customer ID" = _t, Amount = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer ID", type text}, {"Amount", type text}}),
        #"Replaced Value" = Table.ReplaceValue(#"Changed Type","$ ","",Replacer.ReplaceText,{"Amount"}),
        #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"Amount", Int64.Type}}),
        #"Added Custom" = Table.AddColumn(#"Changed Type1", "Original", each [Customer ID]&" "&Text.From([Amount])),
        #"Added Custom1" = Table.AddColumn(#"Added Custom", "Opposite", each [Customer ID]&" "&Text.From([Amount]*-1)),
        #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom.2", each if List.Contains(#"Added Custom"[Original],[Opposite]) then "" else 1),
        #"Filtered Rows" = Table.SelectRows(#"Added Custom2", each ([Custom.2] = 1)),
        #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Original", "Opposite", "Custom.2"})
    in
        #"Removed Columns"

    The final output is shown below:


    Best Regards,
    Community Support Team_ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

12 Replies

  • rangeet1 , We need to check do there have any common ID, using that we can suppress.


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

     

  • rangeet1's avatar
    rangeet1
    Frequent Visitor


    This is what i am looking for. Remove matching negative and positive amount

    thank you 

    • Samarth_18's avatar
      Samarth_18
      Icon for Community Champion rankCommunity Champion

      Hi rangeet1 ,

       

      Create measure like this and use it as filter:-

      Measure 4 = 
      VAR amt = -1 * MAX('Table (5)'[Amount])
      var cust_id = MAX('Table (5)'[Customer ID])
      RETURN
          COUNTROWS (
              FILTER (
                  ALL( 'Table (5)' ),
                  'Table (5)'[Amount] = amt
                      && 'Table (5)'[Customer ID] = cust_id )
          )

       

      Ouput:-

       

      Thanks,

      Samarth

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

      Hi,

      If you want to do this at the visual level, then simply drag Customer ID to the tabel visual and write this measure

      Measure = sum(data[amount])

      Apply a filter of >0

      • rangeet1's avatar
        rangeet1
        Frequent Visitor

        thank you
        But i still have the postive values in the data. with your

        formula i can only eliminate the negative values. But i have the corresponding positive values that i want to delete as well.

  • thank you for your answer. However, i am still havinf negative values in the data.

  • v-yalanwu-msft's avatar
    v-yalanwu-msft
    Icon for Community Support rankCommunity Support

    Hi, rangeet1;

    You could complete it in power query .

    1.add custom column.

    = Table.AddColumn(#"Changed Type", "Original", each Number.ToText([Customer ID]) &" "& Number.ToText( [Amount]))

    2.add another custom column.

    = Table.AddColumn(#"Added Custom1", "Opposite", each Number.ToText([Customer ID]) &" "& Number.ToText( [Amount]*-1))

    3.add 3rd custom column.

    = Table.AddColumn(#"Added Custom", "Flag", each if List.Contains(#"Added Custom"[Original],[Opposite]) then "" else 1)

    4.filter rows.(1)

    5.remove columns.

    The final output is shown below:

    let  
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQwUNJRMjVQitWBccyQOebIHAtkji6KJl24LkMgzwiZY4zMMUHmgLQieLpgbiwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Customer ID" = _t, Amount = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer ID", Int64.Type}, {"Amount", Int64.Type}}),
    #"Added Custom1" = Table.AddColumn(#"Changed Type", "Original", each Number.ToText([Customer ID]) &" "& Number.ToText( [Amount])),
    #"Added Custom" = Table.AddColumn(#"Added Custom1", "Opposite", each Number.ToText([Customer ID]) &" "& Number.ToText( [Amount]*-1)),
    #"Added Custom2" = Table.AddColumn(#"Added Custom", "Flag", each if List.Contains(#"Added Custom"[Original],[Opposite]) then "" else 1),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom2", each [Flag] <> null and [Flag] <> ""),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Original", "Opposite", "Flag"})
    in
    #"Removed Columns"


    Best Regards,
    Community Support Team_ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

    • rangeet1's avatar
      rangeet1
      Frequent Visitor

      Thank you for your reply. 
      If my data type for Customer ID is a 'text' . For example, HN007 or CU008. My amount is a decimal currency ' $ 7.9' or '$100.0'. how can i apply this?

       

      Thank you 

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      I have tried to follow these steps. However, the last step is taking a lot

      of time to load.
      Thanks

  • v-yalanwu-msft's avatar
    v-yalanwu-msft
    Icon for Community Support rankCommunity Support

    Hi, rangeet1 ;

    Try it;

    let  
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8vAzMDBX0lFSUTA1UIrVQRYwQxcwRxewQBfQxTBEF2qKc6iBgQVYxAhdwBhdwARdwNAAXUQXLBQLAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Customer ID" = _t, Amount = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer ID", type text}, {"Amount", type text}}),
        #"Replaced Value" = Table.ReplaceValue(#"Changed Type","$ ","",Replacer.ReplaceText,{"Amount"}),
        #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"Amount", Int64.Type}}),
        #"Added Custom" = Table.AddColumn(#"Changed Type1", "Original", each [Customer ID]&" "&Text.From([Amount])),
        #"Added Custom1" = Table.AddColumn(#"Added Custom", "Opposite", each [Customer ID]&" "&Text.From([Amount]*-1)),
        #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom.2", each if List.Contains(#"Added Custom"[Original],[Opposite]) then "" else 1),
        #"Filtered Rows" = Table.SelectRows(#"Added Custom2", each ([Custom.2] = 1)),
        #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Original", "Opposite", "Custom.2"})
    in
        #"Removed Columns"

    The final output is shown below:


    Best Regards,
    Community Support Team_ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

  • v-yalanwu-msft's avatar
    v-yalanwu-msft
    Icon for Community Support rankCommunity Support

    Hi, rangeet1 ;

    Is your file very large? Can you remove sensitive information and share simple files?

     

    Best Regards,
    Community Support Team_ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.