YannP
YannP

Reputation: 25

IF function in Power Query issue

I have this table in Power Query:

enter image description here

I want to do a if function :

= if[quantitée facturée]=1 = [quantité retournée] = 1 then 1 else 0

but I don't understand why every result of the function is "0" even when quantité facturée =/ quantité retournée

I also tried:

= if [quantitée facturée]=1 and [quantité retournée]=1 then 1 else 0

= if [quantitée facturée]=1 or [quantité retournée]=1 then 1 else 0

= if [quantitée facturée] = [quantité retournée] then 1 else 0

= if [quantitée facturée] <> [quantité retournée] then 1 else 0

I seek to obtain each time a delivered order has been returned by the customer and count it as a neutral delivery

Here is what I got with the function mentioned above:

enter image description here

Any ideas?

edit: M code:

let
    Source = Excel.Workbook()
    EXPBLLT1_Sheet = Source{[Item="EXPBLLT1",Kind="Sheet"]}[Data],
    #"En-têtes promus" = Table.PromoteHeaders(EXPBLLT1_Sheet, [PromoteAllScalars=true]),
    #"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"CODART", type text}, {"LIBELL", type text}, {"QLIVRE", Int64.Type}, {"NUMSER", type text}, {"SORPCE_A", type text}, {"CODCLI", type text}, {"RAISOC", type text}, {"NUMDOC", type text}, {"CODOBJ", type text}, {"CHRONO", Int64.Type}, {"ENTPCE", type text}, {"ENTMVT", type text}, {"SORPCE_B", type text}, {"SORMVT", type text}, {"DATEMV", type date}, {"SORPMR", type text}, {"BL", type text}, {"NUM_CDE", type text}, {"CHIRURGIEN", type text}, {"CODREP", type text}, {"PATIENT", type text}, {"DATE_INTER", type date}, {"ENTDAT", type date}, {"SORDAT", type date}, {"EMPDES", type text}, {"LIBFOU", type text}, {"BL 2", Int64.Type}, {"Compteur BL", Int64.Type}, {"année.mois inter", type date}, {"Mouvement", type text}}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Type modifié", "Quantité facturée", each [SORMVT]="700"),
    #"Type modifié1" = Table.TransformColumnTypes(#"Personnalisée ajoutée",{{"Quantité facturée", Int64.Type}}),
    #"Personnalisée ajoutée1" = Table.AddColumn(#"Type modifié1", "Quantitée retournée", each [ENTMVT]="610"),
    #"Type modifié2" = Table.TransformColumnTypes(#"Personnalisée ajoutée1",{{"Quantitée retournée", Int64.Type}}),
    #"Lignes filtrées" = Table.SelectRows(#"Type modifié2", each true),
    #"Personnalisée ajoutée2" = Table.AddColumn(#"Lignes filtrées", "Quantité retournée", each [SORMVT]="610"),
    #"Type modifié3" = Table.TransformColumnTypes(#"Personnalisée ajoutée2",{{"Quantité retournée", type number}, {"Quantitée retournée", type text}}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié3",{"Quantité facturée", "Quantitée retournée", "Quantité retournée"}),
    #"Personnalisée ajoutée3" = Table.AddColumn(#"Colonnes supprimées", "quantitée facturée", each [SORMVT]="700"),
    #"Personnalisée ajoutée4" = Table.AddColumn(#"Personnalisée ajoutée3", "quantitée livrée", each [ENTMVT]="610"),
    #"Personnalisée ajoutée5" = Table.AddColumn(#"Personnalisée ajoutée4", "quantité retournée", each [SORMVT]="610"),
    #"Personnalisée ajoutée6" = Table.AddColumn(#"Personnalisée ajoutée5", "Livraison blanche", each if [quantitée livrée] = [quantité retournée] then 1 else 0),
    #"Type modifié4" = Table.TransformColumnTypes(#"Personnalisée ajoutée6",{{"Livraison blanche", type text}}),
    #"Colonnes supprimées1" = Table.RemoveColumns(#"Type modifié4",{"Livraison blanche"}),
    #"Personnalisée ajoutée7" = Table.AddColumn(#"Colonnes supprimées1", "Livraison blanche", each if [ENTMVT]="710" = [SORMVT]="700" then 1 else 0),
    #"Type modifié5" = Table.TransformColumnTypes(#"Personnalisée ajoutée7",{{"Livraison blanche", Int64.Type}}),
    #"Lignes filtrées2" = Table.SelectRows(#"Type modifié5", each true),
    #"Colonnes supprimées2" = Table.RemoveColumns(#"Lignes filtrées2",{"Livraison blanche"}),
    #"Personnalisée ajoutée8" = Table.AddColumn(#"Colonnes supprimées2", "Livraisons blanches", each if [ENTMVT]="610" = [SORMVT]="700" then 1 else 0),
    #"Lignes filtrées1" = Table.SelectRows(#"Personnalisée ajoutée8", each true),
    #"Colonnes supprimées3" = Table.RemoveColumns(#"Lignes filtrées1",{"Livraisons blanches"}),
    #"Personnalisée ajoutée10" = Table.AddColumn(#"Colonnes supprimées3", "Livraisons blanches", each if [quantitée livrée]="TRUE" = [quantité retournée]="TRUE" then 1 else 0),
    #"Type modifié6" = Table.TransformColumnTypes(#"Personnalisée ajoutée10",{{"quantitée facturée", Int64.Type}, {"quantitée livrée", Int64.Type}, {"quantité retournée", Int64.Type}}),
    #"Colonnes supprimées4" = Table.RemoveColumns(#"Type modifié6",{"Livraisons blanches"}),
    #"Personnalisée ajoutée9" = Table.AddColumn(#"Colonnes supprimées4", "Livraisons blanches", each if [quantitée livrée]=1 = [quantité retournée]=1 then "1" else "0"),
    #"Colonnes supprimées5" = Table.RemoveColumns(#"Personnalisée ajoutée9",{"Livraisons blanches"}),
    #"Personnalisée ajoutée11" = Table.AddColumn(#"Colonnes supprimées5", "Livraisons blanches", each if[quantitée livrée]=1 =[quantité retournée]=1 then 1 else 5),
    #"Colonnes supprimées6" = Table.RemoveColumns(#"Personnalisée ajoutée11",{"Livraisons blanches"}),
    #"Personnalisée ajoutée12" = Table.AddColumn(#"Colonnes supprimées6", "Livraisons blanches )", each if[quantitée facturée]=1 = [quantité retournée] = 1 then 1 else 0),
    #"Type modifié7" = Table.TransformColumnTypes(#"Personnalisée ajoutée12",{{"Livraisons blanches )", Int64.Type}}),
    #"Lignes filtrées3" = Table.SelectRows(#"Type modifié7", each true),
    #"Colonnes supprimées7" = Table.RemoveColumns(#"Lignes filtrées3",{"Livraisons blanches )"}),
    #"Personnalisée ajoutée13" = Table.AddColumn(#"Colonnes supprimées7", "Livraisons blanches", each if [quantitée facturée]=1 and [quantité retournée]=1 then 1 else 0),
    #"Colonnes supprimées8" = Table.RemoveColumns(#"Personnalisée ajoutée13",{"Livraisons blanches"}),
    #"Colonne conditionnelle ajoutée" = Table.AddColumn(#"Colonnes supprimées8", "Livraisons blanches", each if [quantitée livrée] = 0 then 0 else if [quantitée livrée] = [quantité retournée] then 1 else 0),
    #"Colonne conditionnelle ajoutée1" = Table.AddColumn(#"Colonne conditionnelle ajoutée", "quantité retournée test", each if [SORMVT] = "610" then 1 else 0),
    #"Colonne conditionnelle ajoutée2" = Table.AddColumn(#"Colonne conditionnelle ajoutée1", "quantité facturée test", each if [SORMVT] = "700" then 1 else 0),
    #"Colonne conditionnelle ajoutée3" = Table.AddColumn(#"Colonne conditionnelle ajoutée2", "quantitée livrée test", each if [ENTMVT] = "610" then 1 else 0),
    #"Colonnes supprimées9" = Table.RemoveColumns(#"Colonne conditionnelle ajoutée3",{"quantitée facturée", "quantitée livrée", "quantité retournée"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Colonnes supprimées9",{{"quantité retournée test", "quantité retournée"}, {"quantité facturée test", "quantité facturée"}, {"quantitée livrée test", "quantitée livrée"}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées",{"CODART", "LIBELL", "QLIVRE", "NUMSER", "SORPCE_A", "CODCLI", "RAISOC", "NUMDOC", "CODOBJ", "CHRONO", "ENTPCE", "ENTMVT", "SORPCE_B", "SORMVT", "DATEMV", "SORPMR", "BL", "NUM_CDE", "CHIRURGIEN", "CODREP", "PATIENT", "DATE_INTER", "ENTDAT", "SORDAT", "EMPDES", "LIBFOU", "BL 2", "Compteur BL", "année.mois inter", "Mouvement", "quantitée livrée", "quantité retournée", "quantité facturée", "Livraisons blanches"}),
    #"Colonnes supprimées10" = Table.RemoveColumns(#"Colonnes permutées",{"Livraisons blanches"}),
    #"Colonne conditionnelle ajoutée4" = Table.AddColumn(#"Colonnes supprimées10", "Livraisons blanches", each if [quantitée livrée] = 0 then 0 else if [quantitée livrée] = [quantité retournée] then 1 else 0),
    #"Type modifié9" = Table.TransformColumnTypes(#"Colonne conditionnelle ajoutée4",{{"quantitée livrée", Int64.Type}}),
    #"Lignes filtrées5" = Table.SelectRows(#"Type modifié9", each true),
    #"Type modifié10" = Table.TransformColumnTypes(#"Lignes filtrées5",{{"quantité facturée", Int64.Type}, {"quantité retournée", Int64.Type}, {"Livraisons blanches", Int64.Type}}),
    #"Lignes filtrées4" = Table.SelectRows(#"Type modifié10", each true),
    #"Type modifié8" = Table.TransformColumnTypes(#"Lignes filtrées4",{{"Livraisons blanches", Int64.Type}}),
    #"Duplication de la colonne" = Table.DuplicateColumn(#"Type modifié8", "DATEMV", "DATEMV - Copier"),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(Table.TransformColumnTypes(#"Duplication de la colonne", {{"DATEMV - Copier", type text}}, "fr-FR"), "DATEMV - Copier", Splitter.SplitTextByEachDelimiter({"/"}, QuoteStyle.Csv, true), {"DATEMV - Copier.1", "DATEMV - Copier.2"}),
    #"Type modifié11" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur",{{"DATEMV - Copier.1", type date}, {"DATEMV - Copier.2", Int64.Type}}),
    #"Colonnes supprimées11" = Table.RemoveColumns(#"Type modifié11",{"DATEMV - Copier.1"}),
    #"Colonnes renommées1" = Table.RenameColumns(#"Colonnes supprimées11",{{"DATEMV - Copier.2", "Année"}}),
    #"Type modifié12" = Table.TransformColumnTypes(#"Colonnes renommées1",{{"Année", type text}})
in
    #"Type modifié12"

Upvotes: 0

Views: 355

Answers (3)

Rosetta
Rosetta

Reputation: 2725

Check your codes

Basically you add the column Livraison blanche in #"Personnalisée ajoutée6" then removed it, then add it again #"Personnalisée ajoutée7", then removed again.

#"Personnalisée ajoutée7" could be the reason why all are 0

#"Personnalisée ajoutée6" = Table.AddColumn(#"Personnalisée ajoutée5", "Livraison blanche", each if [quantitée livrée] = [quantité retournée] then 1 else 0),
#"Type modifié4" = Table.TransformColumnTypes(#"Personnalisée ajoutée6",{{"Livraison blanche", type text}}),
#"Colonnes supprimées1" = Table.RemoveColumns(#"Type modifié4",{"Livraison blanche"}),
#"Personnalisée ajoutée7" = Table.AddColumn(#"Colonnes supprimées1", "Livraison blanche", each if [ENTMVT]="710" = [SORMVT]="700" then 1 else 0),
#"Type modifié5" = Table.TransformColumnTypes(#"Personnalisée ajoutée7",{{"Livraison blanche", Int64.Type}}),
#"Lignes filtrées2" = Table.SelectRows(#"Type modifié5", each true),
#"Colonnes supprimées2" = Table.RemoveColumns(#"Lignes filtrées2",{"Livraison blanche"}),

Learn to write tidy steps, even in PQ, it helps.

Upvotes: 0

Jody Highroller
Jody Highroller

Reputation: 1029

I don't see any reason why if [quantitée facturée]=1 or [quantité retournée]=1 then 1 else 0 doesn't work. I would be curious to see the entire generated M code from the Advanced Editor.

However, you could try using the Add Conditional Column dialog. This will allow you to use the GUI to setup your column logic, and will generate M code that looks something like this:

if [quantitée facturée] = 1 then 1 else if [quantité retournée] = 1 then 1 else 0

Upvotes: 0

horseyride
horseyride

Reputation: 21428

It is a bit hard to tell what you are looking for but potential versions for a custom column formula are

= if [quantitée facturée]=1 and [quantité retournée]=1 then 1 else 0

= if [quantitée facturée]=1 or [quantité retournée]=1 then 1 else 0

= if [quantitée facturée] = [quantité retournée] then 1 else 0

= if [quantitée facturée] <> [quantité retournée] then 1 else 0

Upvotes: 1

Related Questions