Forum Discussion
SOQL filter in Power Query
Hi all,
I have a query which I am struggling on. We currently use SOQL to pull in data from salesforce in sheets and I am trying to replicate the below into PowerQuery
WHERE isdeleted = FALSE and createddate >= THIS_FISCAL_YEAR and status = 'Completed' and ownerid <> '00558000003jg6TAAQ' and createdbyid <> '00558000003jg6TAAQ' and whoid <> '' and SalesLoft1__SalesLoft_Type__c <> 'Reply' and SalesLoft1__SalesLoft_Type__c <>
'Hot Lead' and SalesLoft1__SalesLoft_Type__c <> 'Note' and SalesLoft1__SalesLoft_Type__c <> 'Other' and SalesLoft1__SalesLoft_Type__c <> 'LinkedIn - Research' and ((not (SalesLoft1__SalesLoft_Type__c = '' and Tasksubtype = 'Task' and Type = '')) or (subject like '%Sales Navigator%'))
Now when I am in query I can get do the following:
= Table.SelectRows(Custom1, each ([IsDeleted] = false) and ([Status] = "Completed") and ([OwnerId] <> "00558000003jg6TAAQ") and ([CreatedById] <> "00558000003jg6TAAQ") and ([WhoId] <> null) and ([SalesLoft1__SalesLoft_Type__c] <> "Hot Lead" and [SalesLoft1__SalesLoft_Type__c] <> "LinkedIn - Research" and [SalesLoft1__SalesLoft_Type__c] <> "Note" and [SalesLoft1__SalesLoft_Type__c] <> "Other" and [SalesLoft1__SalesLoft_Type__c] <> "Reply"))
Where I am struggling is the last part of the SOQL which is
((not (SalesLoft1__SalesLoft_Type__c = '' and Tasksubtype = 'Task' and Type = '')) or (subject like '%Sales Navigator%'))
Does anyone have any ideas on how to deal with this or should I be creating a measure for this part rather than run this in Query
Okay, so here's your entire WHERE clause translated to M code:
Table.SelectRows( Custom1, each [IsDeleted] = false and [Status] = "Completed" and [OwnerId] <> "00558000003jg6TAAQ" and [CreatedById] <> "00558000003jg6TAAQ" and [WhoId] <> null and [SalesLoft1__SalesLoft_Type__c] <> "Hot Lead" and [SalesLoft1__SalesLoft_Type__c] <> "LinkedIn - Research" and [SalesLoft1__SalesLoft_Type__c] <> "Note" and [SalesLoft1__SalesLoft_Type__c] <> "Other" and [SalesLoft1__SalesLoft_Type__c] <> "Reply" and ( ( not ( [SalesLoft1__SalesLoft_Type__c] = "" and [Tasksubtype] = "Task" and [Type] = "" ) ) or Text.Contains([subject], "Sales Navigator") ) )Here's the original WHERE clause formatted, so you can see more clearly where the brackets etc. are and compare to the M version:
WHERE isdeleted = FALSE and createddate >= THIS_FISCAL_YEAR and status = 'Completed' and ownerid <> '00558000003jg6TAAQ' and createdbyid <> '00558000003jg6TAAQ' and whoid <> '' and SalesLoft1__SalesLoft_Type__c <> 'Reply' and SalesLoft1__SalesLoft_Type__c <> 'Hot Lead' and SalesLoft1__SalesLoft_Type__c <> 'Note' and SalesLoft1__SalesLoft_Type__c <> 'Other' and SalesLoft1__SalesLoft_Type__c <> 'LinkedIn - Research' and ( ( not ( SalesLoft1__SalesLoft_Type__c = '' and Tasksubtype = 'Task' and Type = '' ) ) or subject like '%Sales Navigator%' )Pete
7 Replies
- JasPadanNew Member
Thank you. Really appreciate you looking into this for me as was a real struggle so glad you were able to assist me with this.
- JasPadanNew Member
BA_Pete - Thanks for the above. Maybe I am doing this incorrectly as I tried this before and it still didn't work. I think it could be to with where I am possibly inseting the (( brackets as I have tried this
= Table.SelectRows(Custom1, each ([IsDeleted] = false) and ([Status] = "Completed") and ([OwnerId] <> "00558000003jg6TAAQ") and ([CreatedById] <> "00558000003jg6TAAQ") and ([WhoId] <> null) and ([SalesLoft1__SalesLoft_Type__c] <> "Hot Lead" and [SalesLoft1__SalesLoft_Type__c] <> "LinkedIn - Research" and [SalesLoft1__SalesLoft_Type__c] <> "Note" and [SalesLoft1__SalesLoft_Type__c] <> "Other" and [SalesLoft1__SalesLoft_Type__c] <> "Reply") and ((not ([SalesLoft1__SalesLoft_Type__c]) = "" and ([Tasksubtype] = "Task") and ([Type] = "")) but I am still not having any luck
- BA_PeteSuper User
I've just formatted your code and found there were lots of superfluous brackets.
Have a look at it now and see if this is doing what you want:
Table.SelectRows( Custom1, each [IsDeleted] = false and [Status] = "Completed" and [OwnerId] <> "00558000003jg6TAAQ" and [CreatedById] <> "00558000003jg6TAAQ" and [WhoId] <> null and ( [SalesLoft1__SalesLoft_Type__c] <> "Hot Lead" and [SalesLoft1__SalesLoft_Type__c] <> "LinkedIn - Research" and [SalesLoft1__SalesLoft_Type__c] <> "Note" and [SalesLoft1__SalesLoft_Type__c] <> "Other" and [SalesLoft1__SalesLoft_Type__c] <> "Reply" ) and ( not ( [SalesLoft1__SalesLoft_Type__c] = "" and [Tasksubtype] = "Task" and [Type] = "" ) ) )Pete
- JasPadanNew Member
Hi Pete, thank you I will test this out now as this is superhelpful and thank you for this.
In terms of adding the OR which I completely forgotor ( Text.Contains([Subject], "Sales Navigator") )
Would I just insert another ( before Not or should I just add this after
( [SalesLoft1__SalesLoft_Type__c] = "" and [Tasksubtype] = "Task" and [Type] = "" )