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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

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

17 REPLIES 17
Bhullarj
Regular Visitor

Hi Guys, I need to write this in Power query (powerbi) -> can someone help?

 

=IF(LEN(sellbydate)>1,IF(sellbydate<=(2024,10,31),"save","del"),"del")

Hi, 

Please I need help with a formula if I have a cheque date and a current date what formula will I use for the following conditions:

  1. Less than 1month -Green
  2. More than 1month but less than 3months-Amber
  3. More than 3 months at the cash office -Red  
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)

Hello, how can I use the IF function to return the value of column X if date in Column X is greater than Column Y, and if it's not greater for it to return the value of Column Y.

 

Thanks,

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
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.