2017-08-17 3 views
-1

Comment puis-je répliquer cela sur PowerQuery?PowerQuery si avec plusieurs conditions ET OU

if(ATC[WorkitemAssetState]=64, 
if(ATC[WorkitemIsClosed]=FALSE, 
if(ATC[WorkitemIsDeleted]=FALSE, 
if(ATC[M_WorkitemStatus]IN{"Reviewing","Available","Research","Progressing","Testing","Resolved","<none>"}, 
if(ATC[M_DefectResolutionId]IN {"-","<Unknown>","Resolution:1","Resolution:7"},1,-1) 
,0) 
,0) 
,0) 
,0) 

Je l'ai fait ce qui suit, mais il ne semble pas fonctionner correctement:

if [WorkitemAssetState]=64 and 
[WorkitemIsClosed]="FALSE" and 
[WorkitemIsDeleted]="FALSE" and 
[M_WorkitemStatus]="Reviewing" or [M_WorkitemStatus]= "Available" or [M_WorkitemStatus]= "Research" or [M_WorkitemStatus] = "Progressing" or [M_WorkitemStatus] = "Testing" or [M_WorkitemStatus] = "Resolved" or [M_WorkitemStatus] = "<none>" or [M_WorkitemStatus] = "<none>" or [M_WorkitemStatus] = "-" and 
[M_DefectResolutionId]= "-" or [M_DefectResolutionId] = "<Unknown>" or [M_DefectResolutionId] = "Resolution:1" or[M_DefectResolutionId] = "Resolution:7" then 1 else 0 

Je suis sûr qu'il est à cause du multiple ou des déclarations. Je ne pense pas que ce soit à cause de la FALSE, btw.

Merci!

Répondre

1

Si vous n'êtes pas sûr des priorités de "et" et "ou", il est préférable d'utiliser des parenthèses. En fait, "et" sont évalués en premier, puis "ou". Donc "a et b ou c et d" sont équivalents avec "(a et b) ou (c et d)". Pas avec "a et (b ou c) et d", ce que - je comprends - vous cherchez. Si c'est le cas, vous devez ajouter des parenthèses autour des collections de "ou".

En supposant que vous avez des valeurs logiques, alors "FALSE" ne fonctionnera pas: vous avez besoin de false sans les guillemets et dans tous les minuscules. Par ailleurs, "ne semble pas fonctionner correctement" n'est pas exactement la meilleure façon d'expliquer ce qui ne va pas. Je suppose que vous obtenez (presque) tous les 1 et (presque) aucun 0?

+0

Merci, j'ai utilisé la parenthèse à la fin et tout allait bien –