cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
mdrammeh
Helper III
Helper III

IF Statement using Power Query

Hello,

 

I am trying to write an IF statement to capture the following dates. I have and excel spreadsheet withs millions of records. For one of the columns in my spreadsheet, I want to create a new column to capture all DT_SCHED (date field) prior to June 1, 2017 and return a "Delivery Date of June 1st" and if the DT_SCHED date is greater than June 1st but less than December 31st, I want my IF statement to return "December 1st" delivery date.  

 

Could anyone help me figure this out? I don't have the Power Query Add-In to do a conditional lookup but have attached a screenshot with my first attempt but apparently the formula is VERY WRONG 🙂DELIVERY DATE.PNG

1 ACCEPTED SOLUTION
MarcelBeug
Community Champion
Community Champion

Try this code:

 

= if [DT_SCHED] < #date(2017,6,1) then "DELIVERY DATE JUNE 1ST" else if [DT_SCHED] < #date(2017,12,31) then "DELIVERY DATE DECEMBER 1ST" else null

 

PQ is case sensitive and if...then...else is all lower case, just like null.

 

Also mind your boundaries: in your information, June 1st is undefined; in the code above it returns December 1.

Likewise, December 31, 2017 will return null, according to the specifications provided.

 

How can you have millions of rows in Excel? As far as I know, Excel has a maximum of 1,048,576 rows

Specializing in Power Query Formula Language (M)

View solution in original post

14 REPLIES 14
Tavo015
Regular Visitor

Why this code not run? Is it good?

 

if ([DÍAS DE VACACIONES PENDIENTES]) > 1 then "1" else Null

 

Thanks a lot

Tavo015
Regular Visitor

Why this code not run? 

 

= Table.AddColumn(#"Added Custom", "PENDIENTES DE GOCE", each if ([DÍAS DE VACACIONES PENDIENTES]) > 1 then "1" else Null)

 

Thanks a lot

MarcelBeug
Community Champion
Community Champion

Try this code:

 

= if [DT_SCHED] < #date(2017,6,1) then "DELIVERY DATE JUNE 1ST" else if [DT_SCHED] < #date(2017,12,31) then "DELIVERY DATE DECEMBER 1ST" else null

 

PQ is case sensitive and if...then...else is all lower case, just like null.

 

Also mind your boundaries: in your information, June 1st is undefined; in the code above it returns December 1.

Likewise, December 31, 2017 will return null, according to the specifications provided.

 

How can you have millions of rows in Excel? As far as I know, Excel has a maximum of 1,048,576 rows

Specializing in Power Query Formula Language (M)

View solution in original post

I signed up purely to give you kudos for this bit:


@MarcelBeug wrote:

PQ is case sensitive and if...then...else is all lower case, just like null.

 


My logic was right but turns out I had capitalised the THEN statement which threw an unexpected tag error.

I miss spoke Marcel. It's the database that has millions of queries and that's where am going in to filter by date range. You filter worked perfectly. THANK YOU, YOU GUYS ARE AWESOME!!

Perhaps the millions of rows are in Power Pivot??

 

In anycase, if you have millions of rows, perhaps it's a good time to get a database. 🙂


To learn more about DAX visit : aka.ms/practicalDAX

Proud to be a Datanaut!

Sean
Community Champion
Community Champion

In the Query Editor try the Add Conditional Column feature

 

Add Column tab => Conditional Column button (then the code will be generated for you)

Sean,

 

Thanks for pointing this out. It seems like it's going to help me but how can I do an AND or an OR to combine conditions? It looks like it only accepts one rule at a time. I'm trying to do something like:

IF <condition1> AND <condition2> THEN <result> ELSE <alternate result>

 

I hope I don't need to resort to creating multiple conditional columns.

 

Thanks,

Marcos

 

hi , when i am trying to get two conditions using and function its throwing an error

example:

 

if 'table'[field] = {condition1} or 'table'[field] = {condition2} then {output1} else {output2}

 

You can replace the "or" with "and" depending on your logic.  Obviously your conditions don't have to be based on "=" either.

 

Also you can nest ifs:

 

example:

 

if 'table'[field] = {condition1} then if 'table'[field] = {condition2} then {output1} else {output2} else {output3}

You can use AND/OR you just have to fully qualify it:
if <something> = <something> and <something> = <something else> then...

Thanks! My question was within the Add Column > Conditional Column section but your answer helped me within the Add Column > Custom Column  🙂

The syntax for date values in Power Query is #date(year,month,day).

Thus, your if then statement would say if [Date] <= #date(2017,6,1) then ...

Agreed, the Syntax of your IF statement is good.

 

Here is a nice breakdown on the subtle differences betwen the Excel IF and the Power BI IF

 

http://www.excelguru.ca/blog/2014/08/27/the-if-function-in-power-query/


To learn more about DAX visit : aka.ms/practicalDAX

Proud to be a Datanaut!

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

November Power BI Update 768x460.png

Check it Out!

Click here to read more about the November 2021 Updates!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.