TOP

DAX-Lecția 2. Funcția CALCULATE

Descriere

Prima funcție care începe să învețe DAX este CALCULATE. Această funcție nu are o contrapartidă exactă în Excel, dar este comparabilă cu funcțiile SUMIFS și COUNTIFS . Pe scurt, această funcție aplică filtre altor funcții de calcul, astfel putem selecta și include în calcule doar datele de care avem nevoie.

Sintaxa funcției CALCULATE()

=CALCULATE(< expresie statistică >, < filtrul 1 >, < filtrul2 >,...)

< expresie statistică >

Expresie statistică ar trebui să ne returneze rezultatul calculului (o valoare, nu un tabel). Din acest motiv, funcțiile statistice de acest tip sunt adesea folosite în această setare SUM , MIN , MAX , COUNTROWS etc.

  1. SUM([ Numele coloanei ])
  2. SUM([ NumeColoane1 ]) / MAX([ NumeColoane2 ])
  3. Numele altui câmp de calcul (măsură)

< filtrul 1 >, < filtrul2 >,...

Filtru definește intervalul de date la care se lucrează. Condițiile de selectare a valorilor sunt specificate aici.

  1. [ Numele coloanei ] = Auto
  2. [ Numele coloanei ] >= 6
  3. ALL( „TableName” ) sau ALL( „TableName” [ Numele coloanei ] )
  4. FILTER ( „TableName” , „TableName” [ Numele coloanei ] = " Verde ")

Să presupunem că avem un astfel de tabel, care este numit Demo si incarcat in PowerPivot .

Să creăm un tabel rezumat pe baza acestuia și să numărăm numărul de înregistrări pentru fiecare produs.

Acum să creăm un nou câmp de calcul (Measure) Count_All_Product în tabelul nostru pivot, care va afișa numărul total de înregistrări pe toate rândurile.

Cum am obținut numerele din câmpul de calcul Count_All_Product 16 ? Explicația este că am eliminat pentru acest câmp toate filtrele care au fost aplicate în tabelul pivot (fiecare rând din tabelul pivot este un filtru separat), folosind funcția ALL() . Adică, cu alte cuvinte, o funcție ALL (Demo) dă comanda de a elimina toate filtrele pentru câmpul calculat Count_All_Product care sunt aplicate tabelului Demo .

Să adăugăm un alt câmp (City) pe rânduri pentru a vedea vânzările fiecărui produs în funcție de oraș:

Vedem că numerele sunt în câmp Count of Rows modificare, dar nu în câmpul de calcul Count_All_Product. Este corect, pentru că pentru ultimul am eliminat toate filtrele din formulă. Acum să facem câteva modificări minore formulei noastre și să vedem rezultatul.

=CALCULATE(COUNTROWS(Demo);ALL(Demo[Product]))

Am schimbat argumentul în funcția ALL() prin înlocuire Demo pe Demo[Product] . Acum filtrele nu vor fi eliminate pentru întregul tabel Demo , dar numai pentru coloana sa Demo[Product] .

Deci vedem ce este pe teren Count of Rows filtrele sunt în vigoare Product și City , și doar un filtru în câmpul calculat Count_All_Product City .