Ovaj odeljak opisuje kako da kreirate filtere u okviru Data Analysis Expressions (DAX) formula. U okviru formula možete da kreirate filtere da biste ograničili vrednosti iz izvornih podataka koji se koriste u izračunavanjima. To radite tako što ćete navesti tabelu kao unos u formulu, a zatim definisati izraz filtera. Izraz filtera koji obezbedite koristi se za upite podataka i vraćanje samo podskup izvornih podataka. Filter se primenjuje dinamički svaki put kada ažurirate rezultate formule, u zavisnosti od trenutnog konteksta podataka.
U ovom članku
Kreiranje filtera na tabeli korišćenoj u formuli
Možete da primenite filtere u formulama koje uzimaju tabelu kao unos. Umesto da unesete ime tabele, koristite funkciju FILTER da biste definisali podskup redova iz navedene tabele. Taj podskup se zatim prosleđuje drugoj funkciji za operacije kao što su prilagođene agregacije.
Na primer, pretpostavimo da imate tabelu sa podacima koja sadrži informacije o porudžbinama o prodavcima i želite da izračunate koliko je prodatih svakog prodavca. Međutim, želite da prikažete iznos prodaje samo za one prodavce koji su prodavali više jedinica proizvoda sa više vrednosti. Sledeća formula, na osnovu DAX uzorka radne sveske, prikazuje jedan primer toga kako možete da kreirate ovo izračunavanje pomoću filtera:
=SUMX(
FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Količina] > 5 && 'ResellerSales_USD'[ProductStandardCost_USD] > 100), 'ResellerSales_USD'[SalesAmt] )-
Prvi deo formule navodi jednu od Power Pivot agregatne funkcije, koja uzima tabelu kao argument. SUMX izračunava zbir preko tabele.
-
Drugi deo formule govori FILTER(table, expression),vam SUMX podatke da koristite. SUMX tabelu ili izraz koji za rezultat ima tabelu. Ovde, umesto korišćenja svih podataka u tabeli, koristite funkciju FILTER biste naveli koji se redovi iz tabele koriste.
Izraz filtera ima dva dela: prvi deo imenuje tabelu na koju se primenjuje filter. Drugi deo definiše izraz koji će se koristiti kao uslov filtera. U ovom slučaju filtrirate prodavce koji su prodavali više od 5 jedinica i proizvoda koji koštaju više od 100 USD. Operator, &&, je logički operator AND koji ukazuje na to da oba dela uslova moraju biti tačna da bi red pripadao filtriranim podskupom.
-
Treći deo formule saopštava funkciji SUMX koje vrednosti treba sabrati. U ovom slučaju koristite samo iznos prodaje.
Imajte na umu da funkcije kao što je FILTER, koje vraćaju tabelu, nikada direktno ne vraćaju tabelu ili redove, ali su uvek ugrađene u drugu funkciju. Više informacija o funkciji FILTER i drugim funkcijama koje se koriste za filtriranje, uključujući još primera potražite u članku Funkcije filtera (DAX).
Napomena: Na izraz filtera utiče kontekst u kojem se koristi. Na primer, ako koristite filter u meri i ta mera se koristi u izvedenoj tabeli ili izvedenom grafikonu, na podskup podataka koji se vraćaju mogu da utiču dodatni filteri ili moduli "Slicer" koje je korisnik primenio u izvedenoj tabeli. Više informacija o kontekstu potražite u članku Kontekst u DAX formulama.
Filteri koji uklanjaju duplikate
Pored filtriranja određenih vrednosti, možete da dobijete jedinstveni skup vrednosti iz druge tabele ili kolone. To može biti korisno kada želite da prebrojite jedinstvene vrednosti u koloni ili da koristite listu jedinstvenih vrednosti za druge operacije. DAX obezbeđuje dve funkcije za vraćanje različitih vrednosti: Funkcija DISTINCTi funkcija VALUES.
-
Funkcija DISTINCT ispituje jednu kolonu koju navedete kao argument funkcije i vraća novu kolonu koja sadrži samo različite vrednosti.
-
Funkcija VALUES takođe vraća listu jedinstvenih vrednosti, ali takođe daje nepoznati član. To je korisno kada koristite vrednosti iz dve tabele koje su spojljene relacijama, a vrednost nedostaje u jednoj tabeli, a prisutna u drugoj. Više informacija o nepoznatom članu potražite u članku Kontekst u DAX formulama.
Obe ove funkcije daju celu kolonu vrednosti; stoga funkcije koristite da biste dobili listu vrednosti koje se zatim prosleđuju drugoj funkciji. Na primer, možete da koristite sledeću formulu da biste dobili listu različitih proizvoda koje je prodao određeni prodavac, pomoću jedinstvene šifre proizvoda, a zatim prebrojite proizvode sa te liste pomoću funkcije COUNTROWS:
=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
Kako kontekst utiče na filtere
Kada dodate DAX formulu u izvedenu tabelu ili izvedeni grafikon, na rezultate formule može da utiče kontekst. Ako radite u tabeli Power Pivot, kontekst je trenutni red i njegove vrednosti. Ako radite u izvedenoj tabeli ili izvedenom grafikonu, kontekst znači skup ili podskup podataka koji su definisani operacijama kao što su sečenje ili filtriranje. Dizajn izvedene tabele ili izvedenog grafikona takođe nameće sopstveni kontekst. Na primer, ako kreirate izvedenu tabelu koja grupiše prodaju po regionu i godini, u izvedenoj tabeli se pojavljuju samo podaci koji se odnose na te regione i godine. Stoga se sve mere koje dodate u izvedenu tabelu izračunavaju u kontekstu naslova kolona i redova, kao i svi filteri u formuli mere.
Više informacija potražite u članku Kontekst u DAX formulama.
Uklanjanje filtera
Prilikom rada sa složenim formulama, možda ćete želeti da znate tačno šta su trenutni filteri ili da izmenite deo formule za filtriranje. DAX pruža nekoliko funkcija koje vam omogućavaju da uklonite filtere i da kontrolišete koje kolone se zadržavaju kao deo trenutnog konteksta filtera. Ovaj odeljak pruža pregled načina na koji ove funkcije utiču na rezultate u formuli.
Zamena svih filtera funkcijom ALL
Funkciju ALL možete da koristite da biste zamenili prethodno primenjene filtere i vratili sve redove u tabeli funkciji koja izvršava agregatnu ili drugu operaciju. Ako koristite jednu ili više kolona umesto tabele, kao argumente za ALL, funkcija ALL sve redove zanemarujući sve kontekstualne filtere.
Napomena: Ako ste upoznati sa terminologijom relacionih baza podataka, možete da mislite ALL kao o generisanju prirodnog levog spoljnog spajanja svih tabela.
Na primer, pretpostavimo da imate tabele, tabele "Prodaja" i "Proizvodi" i želite da kreirate formulu koja će izračunati zbir prodaje za trenutni proizvod podeljen prodajom za sve proizvode. Morate uzeti u obzir činjenicu da, ako se formula koristi u meri, korisnik izvedene tabele možda koristi modul "Slicer" za filtriranje određenog proizvoda, sa imenom proizvoda u redovima. Stoga, da biste dobili pravu vrednost imenioca bez obzira na filtere ili module "Slicer", morate da dodate funkciju ALL da biste zamenili sve filtere. Sledeća formula je jedan primer kako da koristite ALL da biste poništili efekte prethodnih filtera:
=SUM (Prodaja[Iznos])/SUMX(Prodaja[Iznos], FILTER(Prodaja, ALL(Proizvodi))
-
Prvi deo formule SUM (Prodaja[Iznos]) izračunava brojilac.
-
Zbir uzima u vidu trenutni kontekst, što znači da će se, ako formulu dodate u izračunatu kolonu, primeniti kontekst reda i, ako dodate formulu u izvedenu tabelu kao meru, primenjuju se svi filteri primenjeni u izvedenoj tabeli (kontekst filtera).
-
Drugi deo formule izračunava imenioca. Funkcija ALL zamenuje sve filtere koji se mogu primeniti na Products tabelu.
Više informacija, uključujući detaljne primere, potražite u članku Funkcija ALL.
Zamena određenih filtera funkcijom ALLEXCEPT
Funkcija ALLEXCEPT takođe zamenjuje postojeće filtere, ali možete da navedete da neke od postojećih filtera treba sačuvati. Kolone koje date kao argumente za funkciju ALLEXCEPT navode koje kolone će i dalje biti filtrirane. Ako želite da zamenite filtere iz većine kolona, ali ne svih, ALLEXCEPT je praktičniji od all. Funkcija ALLEXCEPT je posebno korisna kada kreirate izvedene tabele koje se mogu filtrirati u mnogim različitim kolonama i želite da kontrolišete vrednosti koje se koriste u formuli. Više informacija, uključujući detaljan primer korišćenja funkcije ALLEXCEPT u izvedenoj tabeli, potražite u članku Funkcija ALLEXCEPT.