Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

CONVERTING TABLEAU INTO DAX

Hello guys, just ignore the meaning of the attributes, I wanted to have a perspective on how I could write the same logic as I have below (Tableau) but using DAX, to implement on Power BI:

 

IF ([Cor PRTH] AND [Tipo Estação]='AUTO')
THEN 'Falta PRTH'


ELSEIF ([Tipo Estação]='ANEEL' OR [Tipo Estação]='SYNOP') AND
(([testeConsistencia] > 0 AND [Id Tpconsistmnem] =4) OR (ISNULL([PLMT])))
THEN 'Medição Nula'


ELSEIF ([PLMT] < 0 OR [PLMT] > 100) OR
([Tipo Estação] ='AUTO' AND ([PRTH] < 0 OR [PRTH] > 50))
THEN 'Consistência'
ELSE 'OK'
END

 

 

I've tried as below, but I'm getting a completely different result:

 

Verifica Cor = IF (
// Falta PRTH
tb_medicaoultimosdezdiasmeteo[registros_PRTH] < 24 && tb_medicaoultimosdezdiasmeteo[Tipo Estação (grupos)] = "AUTO", "Falta PRTH",

// Medição Nula
IF (tb_medicaoultimosdezdiasmeteo[Tipo Estação (grupos)] = "ANEEL" && tb_medicaoultimosdezdiasmeteo[testeConsistencia] > 0 && tb_medicaoultimosdezdiasmeteo[id_tpconsistmnem] = 4 || ISBLANK(tb_medicaoultimosdezdiasmeteo[PLMT]), "Medição Nula", IF (tb_medicaoultimosdezdiasmeteo[Tipo Estação (grupos)] = "SYNOP" && tb_medicaoultimosdezdiasmeteo[testeConsistencia] > 0 && tb_medicaoultimosdezdiasmeteo[id_tpconsistmnem] = 4 || ISBLANK(tb_medicaoultimosdezdiasmeteo[PLMT]), "Medição Nula",
 
// Consistencia, OK
IF (tb_medicaoultimosdezdiasmeteo[PLMT] < 0 || tb_medicaoultimosdezdiasmeteo[PLMT] > 100, "Consistencia", IF (tb_medicaoultimosdezdiasmeteo[Tipo Estação (grupos)] = "AUTO" && tb_medicaoultimosdezdiasmeteo[PRTH] < 0, "Consistencia", IF (tb_medicaoultimosdezdiasmeteo[Tipo Estação (grupos)] = "AUTO" && tb_medicaoultimosdezdiasmeteo[PRTH] > 50, "Consistencia", "OK"))))))
  • Anonymous Maybe:

    IF (
      [Cor PRTH] && [Tipo Estação]="AUTO",
      "Falta PRTH",
      IF (
        ([Tipo Estação]="ANEEL" || [Tipo Estação]="SYNOP") &&
          (([testeConsistencia] > 0 && [Id Tpconsistmnem] =4) || (ISBLANK([PLMT]),
        "Medição Nula",
        IF( 
          ([PLMT] < 0 OR [PLMT] > 100) ||
            ([Tipo Estação] ="AUTO" && ([PRTH] < 0 || [PRTH] > 50),
          "Consistência",
          "OK"
        )
      )
    )

    or a cleaner way might be:

    SWITCH(TRUE(),
      [Cor PRTH] && [Tipo Estação]="AUTO", "Falta PRTH",
      ([Tipo Estação]="ANEEL" || [Tipo Estação]="SYNOP") &&
          (([testeConsistencia] > 0 && [Id Tpconsistmnem] =4) || (ISBLANK([PLMT]), "Medição Nula",
      ([PLMT] < 0 OR [PLMT] > 100) || 
         ([Tipo Estação] ="AUTO" && ([PRTH] < 0 || [PRTH] > 50), "Consistência",
      "OK"
    )

2 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    Anonymous Maybe:

    IF (
      [Cor PRTH] && [Tipo Estação]="AUTO",
      "Falta PRTH",
      IF (
        ([Tipo Estação]="ANEEL" || [Tipo Estação]="SYNOP") &&
          (([testeConsistencia] > 0 && [Id Tpconsistmnem] =4) || (ISBLANK([PLMT]),
        "Medição Nula",
        IF( 
          ([PLMT] < 0 OR [PLMT] > 100) ||
            ([Tipo Estação] ="AUTO" && ([PRTH] < 0 || [PRTH] > 50),
          "Consistência",
          "OK"
        )
      )
    )

    or a cleaner way might be:

    SWITCH(TRUE(),
      [Cor PRTH] && [Tipo Estação]="AUTO", "Falta PRTH",
      ([Tipo Estação]="ANEEL" || [Tipo Estação]="SYNOP") &&
          (([testeConsistencia] > 0 && [Id Tpconsistmnem] =4) || (ISBLANK([PLMT]), "Medição Nula",
      ([PLMT] < 0 OR [PLMT] > 100) || 
         ([Tipo Estação] ="AUTO" && ([PRTH] < 0 || [PRTH] > 50), "Consistência",
      "OK"
    )
    • Anonymous's avatar
      Anonymous
      Not applicable

      Greg_Deckler It's working now, thank you Greg, you're the real deal =D