Power Pivot (6) – Exemple de Functii DAX. Functia SWITCH
- July 28, 2019
- eticsolutions
- Power Pivot
- Comments Off on Power Pivot (6) – Exemple de Functii DAX. Functia SWITCH
Incepand din 11 iulie 2016, vom publica in fiecare zi de luni si de joi cate un articol din seria de zece cursuri gratuite dedicate Power Pivot pentru Excel 2013.
ENJOY THE POWER! 🙂
Exemplul 1
Se da un model de date, format din mai multe tabele relationate astfel:
In tabela tblOrders, avem nevoie de introducerea unei coloane calculate care sa arate luna efectuarii comenzii, in baza datei comenzii, asa cum apare ea in coloana Data comanda.
Incarcam modelul de date (PowerPivot – Manage) si, in tabela tblOrders inseram o noua coloana (ea va fi denumita automat CalculatedColumn1), intre coloanele Data comanda si Status.
Pentru a afla luna efectuarii comenzii, utilizam functia MONTH, cu o sintaxa asemanatoare functiei clasice de tip Date&Time.
=MONTH([Data comanda])
Aceasta functie va intoarce extrage luna din data calendaristica si va intoarce un rezultat numeric, de la 1 la 12.
Ceea ce vrem sa obtinem, insa, este un rezultat de tip text, adica denumirea lunii in limba romana (Ianuarie, Februarie, etc.).
Utilizand optiunile clasice furnizate de Excel 2013, avem doua variante:
- Utilizarea unei formule complexe, continand mai multe functii IF, de genul: =IF(MONTH([Data comanda])=1,”Ianuarie”,IF(MONTH([Data comanda])=2,”Februarie”,…….)))..
- Utilizarea functiei VLOOKUP, cu conditia sa existe in fisierul Excel o tabela de corespondenta intre numar si denumire.
Utilizand optiunile specifice furnizate de Power BI, vom alege functia SWITCH pentru a calcula denumirea lunii, in functie de indicativul de luna (1,2,…..12).
Remember! Coloanele calculate NU exista in tabelele originale, ele vor putea fi utilizate in Pivot Table de tip Power Pivot.
Functia SWITCH este o functie DAX de tip Logic, cu urmatoarea sintaxa:
=SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
Unde:
<expression> semnifica o interogare logica, asemanatoare cu logical_test al functiei clasice IF.
In exemplul de mai sus, trebuie sa evaluam rezultatul functiei MONTH, aceasta putand avea valori de la 1 la 12.
Daca <value> este 1, atunci <result> este textul “Ianuarie”, daca <value> este 2, atunci <result> este textul “Februarie”, ….etc.
Vom inscrie, prin urmare, formula:
=SWITCH(MONTH([Data comanda]),1,”Ianuarie”,2,”Februarie”,3,”Martie”,4,”Aprilie”,5,”Mai”,6,”Iunie”,7,”Iulie”,8,”August”,9,”Septembrie”,10,”Octombrie”,11,”Noiembrie”,”Decembrie”)
Observati ca “Decembrie” corespunde argumentului <else>, pentru ca este ultima varianta posibila.
Evident, pentru ca functia sa intoarca rezultatul corect, toate datele inscrise in coloana [Data comanda] trebuie sa fie de tip data calendaristica.
Este o formula mult mai simpla si mai intuitiva decat utilizarea mai multor functii IF si inlocuieste cu succes functia VLOOKUP.
Exemplul 2
In articolul anterior, am invatat cum se utilizeaza functia RELATED (functie DAX de tip Filter) ca argument al functiei IF, pentru a calcula statusul unei facturi, intr-un model de date complex, care continea atat tabela facturi, cat si tabela FACT_RESTANTE, relationate prin coloana InvoiceID.
Sa incercam sa obtinem acelasi rezultat, utilizand functia SWITCH, in loc de functia IF.
Toate facturile restante se regasesc in tabela FACT_RESTANTE. In tabela facturi, vrem sa introducem o coloana calculata, denumita Status factura, care sa aiba valoarea platit, respectiv valoarea neplatit.
Vom utiliza functia SWITCH, unde functia RELATED va fi parte a argumentului <expression>.
ID-ul facturii este un numar. Daca interogarea cu functia RELATED intoarce un rezultat in tabela FACT_RESTANTE, acesta va fi chiar numarul facturii, prin urmare expresia RELATED(FACT_RESTANTE[InvoiceID]) va fi mai mare ca 0.
In cazul in care rezultatul expresiei este pozitiv, inseamna ca este vorba despre o factura neplatita, in caz contrar (argumentul <else> al functiei SWITCH), este vorba despre o factura platita.
Expresia RELATED(FACT_RESTANTE[InvoiceID])>0 intoarce un rezultat de tip logic, prin urmare argumentul <value> al functiei SWITCH trebuie sa fie tot o valoare logica.
Formula
=SWITCH(RELATED(FACT_RESTANTE[InvoiceID])>0,”TRUE”,”neplatit”,”platit”)
Intoarce eroare, pentru ca <value> este textul TRUE.
Utilizam functia TRUE(), care intoarce pur si simplu valoarea logica de adevar TRUE.
Formula corecta va fi:
=SWITCH(RELATED(FACT_RESTANTE[InvoiceID])>0,TRUE(),”neplatit”,”platit”)
Am obtinut acelasi rezultat ca atunci cand am utilizat functia IF (coloana Status factura).
In coloana CalculatedColumn1, am obtinut acelasi rezultat, utilizand o varianta a formulei de mai sus, prin introducerea functiei ISNUMBER.
=SWITCH(ISNUMBER(RELATED(FACT_RESTANTE[InvoiceID])),true(),”neplatit”,”platit”)
You might also like:-
-
Cum se valideaza in Excel datele dupa o lista predefinita (2)
-
Cum se valideaza in Excel datele dupa o lista predefinita (1)
-
Cum stergi un sheet in Excel fara sa il selectezi, utilizand VBA?
-
Power Pivot (10) – Cum se utilizeaza Power View. “Hărţi” sintetice
-
Power Pivot (9) – Crearea unei masuri
-
Functia IF cu AND – realizarea de formule complexe in Excel
-
Exemplu de utilizare a functiei IF in Excel
-
Power Pivot (8) – Exemple de functii DAX. Functia CALCULATE (2)
-
Power Pivot (7) – Exemple de Functii DAX. Functia CALCULATE
-
Power Pivot (5) – Exemple de functii DAX. Functia RELATED
Articole recomandate
- Provocare pentru specialistii HR. Cum angajezi un tradator
- Cum redactezi o scrisoare de reclamatie?
- Ce ai de invatat ca sa poti sa inveti cand ai nevoie (II). Trivium
- Power Pivot (10) – Cum se utilizeaza Power View. “Hărţi” sintetice
- 10 intrebari stupide sau enervante la interviu
- Functia IF cu AND – realizarea de formule complexe in Excel
Cauta cuvant cheie
Categorii
Articole recente
- Crearea si utilizarea de nume definite de utilizator in Excel
- Cum se valideaza in Excel datele dupa o lista predefinita (2)
- Cum se valideaza in Excel datele dupa o lista predefinita (1)
- Cum stergi un sheet in Excel fara sa il selectezi, utilizand VBA?
- Cum inserez un fisier .mp4 intr-o prezentare Power Point 2010?