Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
antalgu
Helper I
Helper I

Remove rows by a Criteria

I'm pretty new to the M language of Power Query. I'm working with a table that has phone calls and information about each one of them, for what we want it that table could be summarized as this table:

CampaignCall duration
A10
A20
B10

I want to eliminate the calls that have a duration < 15 and are of campaign A, so the resulting table would look like this:

CampaignCall duration
A20
B10

So what I really wanna do is eliminate columns based on a criteria, I didn't seem to find any function capable of doing that at first glance, but I suspect it could be done using the function Table.RemoveMatchingRows, but I don't know how.

1 ACCEPTED SOLUTION
edhans
Super User
Super User

You want Table.SelectRows. Start by removing all rows that are 15 or lower.

edhans_0-1601653202902.png

That generates this statement. It is wrong, but Power Query has generated most of what we need.

= Table.SelectRows(#"Changed Type", each [Call duration] <= 15)

Now manually modify that to be this:

= Table.SelectRows(#"Changed Type", each not ([Call duration] <= 15 and [Campaign] = "A"))

That returns this:

edhans_1-1601653387021.png

So what I told it is select any records with call durations that are less than 15 and  are of Campaign A. That is this part:

([Call duration] <= 15 and [Campaign] = "A")

Since that is the exact opposite of what I really want, I put a "not" in front if it.

 

Make sense? Full code here:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0UIrVgTCNIEwnqGgsAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Campaign = _t, #"Call duration" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Campaign", type text}, {"Call duration", Int64.Type}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each not ([Call duration] <= 15 and [Campaign] = "A"))
in
    #"Filtered Rows"

 

How to use M code provided in a blank query:
1) In Power Query, select New Source, then Blank Query
2) On the Home ribbon, select "Advanced Editor" button
3) Remove everything you see, then paste the M code I've given you in that box.
4) Press Done
5) See this article if you need help using this M code in your model.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

View solution in original post

1 REPLY 1
edhans
Super User
Super User

You want Table.SelectRows. Start by removing all rows that are 15 or lower.

edhans_0-1601653202902.png

That generates this statement. It is wrong, but Power Query has generated most of what we need.

= Table.SelectRows(#"Changed Type", each [Call duration] <= 15)

Now manually modify that to be this:

= Table.SelectRows(#"Changed Type", each not ([Call duration] <= 15 and [Campaign] = "A"))

That returns this:

edhans_1-1601653387021.png

So what I told it is select any records with call durations that are less than 15 and  are of Campaign A. That is this part:

([Call duration] <= 15 and [Campaign] = "A")

Since that is the exact opposite of what I really want, I put a "not" in front if it.

 

Make sense? Full code here:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0UIrVgTCNIEwnqGgsAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Campaign = _t, #"Call duration" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Campaign", type text}, {"Call duration", Int64.Type}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each not ([Call duration] <= 15 and [Campaign] = "A"))
in
    #"Filtered Rows"

 

How to use M code provided in a blank query:
1) In Power Query, select New Source, then Blank Query
2) On the Home ribbon, select "Advanced Editor" button
3) Remove everything you see, then paste the M code I've given you in that box.
4) Press Done
5) See this article if you need help using this M code in your model.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.