Această secțiune descrie cum se creează filtre în cadrul formulelor DAX (Data Analysis Expressions). Puteți crea filtre în cadrul formulelor, pentru a restricționa valorile din datele sursă care sunt utilizate în calcule. Puteți face acest lucru specificând un tabel ca intrare pentru formulă, apoi definind o expresie filtru. Expresia de filtru pe care o furnizați este utilizată pentru a interoga datele și a returna doar un subset de date sursă. Filtrul se aplică dinamic de fiecare dată când actualizați rezultatele formulei, în funcție de contextul curent al datelor.
În acest articol
Creating a Filter on a Table used in a Formula
Puteți aplica filtre în formule care iau un tabel ca intrare. În loc să introduceți un nume de tabel, utilizați funcția FILTER pentru a defini un subset de rânduri din tabelul specificat. Acel subset este transmis apoi altei funcții, pentru operațiuni cum ar fi agregările particularizate.
De exemplu, să presupunem că aveți un tabel de date care conține informații despre comenzi despre reselleri și doriți să calculați cât a vândut fiecare reseller. Totuși, doriți să afișați volumul vânzărilor doar pentru acei reselleri care au vândut mai multe unități ale produselor cu valori mai mari. Următoarea formulă, bazată pe registrul de lucru eșantion DAX, afișează un exemplu cu modul în care puteți crea acest calcul utilizând un filtru:
=SUMX(
FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Cantitate] > 5 && "ResellerSales_USD"[ProductStandardCost_USD] > 100), 'ResellerSales_USD'[Vânzător] )-
Prima parte a formulei specifică una dintre funcțiile de agregare Power Pivot, care preia un tabel ca argument. SUMX calculează o sumă peste un tabel.
-
A doua parte a formulei, FILTER(table, expression),spune SUMX ce date să utilizați. SUMX necesită un tabel sau o expresie care are ca rezultat un tabel. Aici, în loc să utilizați toate datele dintr-un tabel, utilizați funcția FILTER pentru a specifica care dintre rândurile din tabel se utilizează.
Expresia filtrului are două părți: primele nume ale tabelului la care se aplică filtrul. A doua parte definește o expresie de utilizat ca condiție de filtrare. În acest caz, filtrați după resellerii care au vândut mai mult de 5 unități și produse care au costat peste 100 lei. Operatorul, &&, este un operator AND logic, care indică faptul că ambele părți ale condiției trebuie să fie adevărate pentru ca rândul să aparțină subsetului filtrat.
-
A treia parte a formulei spune funcției SUMX ce valori trebuie însumate. În acest caz, utilizați doar cantitatea de vânzări.
Rețineți că funcții precum FILTER, care returnează un tabel, nu returnează niciodată tabelul sau rândurile direct, dar sunt întotdeauna încorporate în altă funcție. Pentru mai multe informații despre FILTER și alte funcții utilizate pentru filtrare, inclusiv mai multe exemple, consultați Funcții de filtrare (DAX).
Notă: Expresia filtrului este afectată de contextul în care este utilizată. De exemplu, dacă utilizați un filtru într-o măsură și măsura este utilizată într-un raport PivotTable sau PivotChart, subsetul de date returnat poate fi afectat de filtre sau slicere suplimentare pe care utilizatorul le-a aplicat în raportul PivotTable. Pentru mai multe informații despre context, consultați Contextul în formulele DAX.
Filtre care elimină dublurile
În plus față de filtrarea după anumite valori, puteți returna un set unic de valori din alt tabel sau altă coloană. Acest lucru poate fi util atunci când doriți să contorizați numărul de valori unice dintr-o coloană sau să utilizați o listă de valori unice pentru alte operațiuni. DAX oferă două funcții pentru returnarea valorilor distincte: funcția DISTINCT și funcția VALUES.
-
Funcția DISTINCT examinează o singură coloană pe care o specificați ca argument pentru funcție și returnează o coloană nouă care conține doar valorile distincte.
-
Funcția VALUES returnează, de asemenea, o listă de valori unice, dar returnează și membrul Necunoscut. Acest lucru este util atunci când utilizați valori din două tabele care sunt asociate printr-o relație, iar o valoare lipsește dintr-un tabel și este prezentă în celălalt. Pentru mai multe informații despre membru necunoscut, consultați Contextul din formulele DAX.
Ambele funcții returnează o coloană întreagă de valori; Prin urmare, utilizați funcțiile pentru a obține o listă de valori care este transmisă apoi altei funcții. De exemplu, puteți utiliza următoarea formulă pentru a obține o listă cu produsele distincte vândute de un anumit reseller, utilizând cheia de produs unică, apoi să contorizați produsele din lista respectivă utilizând funcția COUNTROWS:
=COUNTROWS(DISTINCT('ResellerSales_USD'[CheieProdus]))
Cum afectează contextul filtrele
Atunci când adăugați o formulă DAX la un raport PivotTable sau PivotChart, rezultatele formulei pot fi afectate de context. Dacă lucrați într-un tabel Power Pivot, contextul este rândul curent și valorile sale. Dacă lucrați într-un raport PivotTable sau PivotChart, contextul înseamnă setul sau subsetul de date definit prin operațiuni cum ar fi selicarea sau filtrarea. Proiectarea raportului PivotTable sau PivotChart impune, de asemenea, propriul său context. De exemplu, dacă creați un raport PivotTable care grupează vânzările după regiune și an, doar datele care se aplică acelor regiuni și ani apar în raportul PivotTable. Prin urmare, orice măsuri pe care le adăugați la raportul PivotTable sunt calculate în contextul titlurilor de coloană și de rând, plus orice filtre din formula de măsură.
Pentru mai multe informații, consultați Contextul în formulele DAX.
Eliminare filtre
Atunci când lucrați cu formule complexe, se recomandă să știți exact care sunt filtrele curente sau să modificați partea de filtrare a formulei. DAX oferă mai multe funcții care vă permit să eliminați filtrele și să controlați ce coloane sunt păstrate ca parte a contextului de filtrare curent. Această secțiune oferă o prezentare generală a modului în care aceste funcții afectează rezultatele dintr-o formulă.
Se suprascrie toate filtrele cu funcția ALL
Puteți utiliza funcția ALL pentru a înlocui orice filtre aplicate anterior și a returna toate rândurile din tabel funcției care efectuează operațiunea agregată sau altă operațiune. Dacă utilizați una sau mai multe coloane, nu un tabel, ca argumente pentru a ALL, funcția ALL returnează toate rândurile, ignorând orice filtre de context.
Notă: Dacă sunteți familiarizat cu terminologia relațională a bazelor de date, vă puteți gândi la ALL ca la generarea unirii externe naturale la stânga a tuturor tabelelor.
De exemplu, să presupunem că aveți tabele, Vânzări și Produse și doriți să creați o formulă care va calcula suma vânzărilor pentru produsul curent împărțit la vânzările pentru toate produsele. Trebuie să luați în considerare faptul că, dacă formula este utilizată într-o măsură, este posibil ca utilizatorul raportului PivotTable să utilizeze un slicer pentru a filtra după un anumit produs, cu numele produsului pe rânduri. Prin urmare, pentru a obține valoarea reală a numitorului indiferent de filtre sau slicere, trebuie să adăugați funcția ALL pentru a înlocui orice filtre. Următoarea formulă este un exemplu de utilizare a all pentru a înlocui efectele filtrelor anterioare:
=SUM (Vânzări[Volum])/SUMX(Vânzări[Volum], FILTER(Vânzări, ALL(Produse)))
-
Prima parte a formulei, SUM (Vânzări[Volum]), calculează numărătorul.
-
Suma ia în considerare contextul curent, ceea ce înseamnă că, dacă adăugați formula într-o coloană calculată, se aplică contextul de rând și, dacă adăugați formula într-un raport PivotTable ca măsură, se aplică orice filtre aplicate în Raportul PivotTable (contextul de filtrare).
-
A doua parte a formulei calculează numitorul. Funcția ALL înlocuiește toate filtrele care pot fi aplicate la tabelul Products .
Pentru mai multe informații, inclusiv exemple detaliate, consultați Funcția ALL.
Înlocuirea filtrelor specifice cu funcția ALLEXCEPT
Funcția ALLEXCEPT înlocuiește și filtrele existente, dar puteți specifica ca unele dintre filtrele existente să fie păstrate. Coloanele pe care le denumiți ca argumente pentru funcția ALLEXCEPT specifică coloanele care vor continua să fie filtrate. Dacă doriți să înlocuiți filtrele din majoritatea coloanelor, dar nu toate, ALLEXCEPT este mai convenabil decât ALL. Funcția ALLEXCEPT este utilă în special atunci când creați rapoarte PivotTable care pot fi filtrate în mai multe coloane diferite și doriți să controlați valorile utilizate în formulă. Pentru mai multe informații, inclusiv un exemplu detaliat despre cum să utilizați ALLEXCEPT într-un raport PivotTable, consultați Funcția ALLEXCEPT.