Ovaj odeljak opisuje kako da kreirate filtere u Data Analysis Expressions (DAX) formulama. Možete da kreirate filtere u okviru formula da biste ograničili vrednosti iz izvornih podataka koji se koriste u izračunavanjima. To radite tako što ćete navesti tabelu kao unos za formulu, a zatim definisati izraz filtera. Izraz filtera koji pružite koristi se za upite podataka i vraćanje samo podskupa izvornih podataka. Filter se dinamički primenjuje svaki put kada ažurirate rezultate formule, u zavisnosti od trenutnog konteksta podataka.
U ovom članku
Creating a Filter on a Table used in a Formula
Filtere možete primeniti 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 prosleuje drugoj funkciji za operacije kao što su prilagođene agregatne funkcije.
Na primer, pretpostavimo da imate tabelu sa podacima koji sadrže informacije o porudžbini o prodavcima i želite da izračunate koliko se svakog prodavca prodalo. Međutim, želite da pokažete iznos prodaje samo za one prodavce koji su prodali više jedinica proizvoda sa više vrednosti. Sledeća formula, zasnovana na DAX uzorku radne sveske, prikazuje jedan primer toga kako možete da napravite 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 određuje jednu od agregatnih Power Pivot, koja uzima tabelu kao argument. SUMX izračunava zbir preko tabele.
-
Drugi deo formule govori FILTER(table, expression),da SUMX koje podatke da koristite. SUMX zahteva tabelu ili izraz koji za rezultat ima tabelu. Ovde umesto da koristite sve podatke u tabeli, koristite funkciju FILTER da biste naveli koji se redovi iz tabele koriste.
Izraz filtera ima dva dela: prvi deo imenuje tabelu na koju se filter primenjuje. Drugi deo definiše izraz koji se koristi kao uslov filtriranja. 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 filtriranom podskupu.
-
Treći deo formule sažeta je funkciji SUMX koje vrednosti treba da se sabira. U ovom slučaju koristite samo iznos prodaje.
Imajte na primer da funkcije kao što je FILTER, koje vraćaju tabelu, nikada ne vraćaju tabelu ili redove direktno, 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 temi Funkcije filtera (DAX).
Napomena: Na izraz filtera utiče kontekst u kojem se koristi. Na primer, ako koristite filter u meri i mera se koristi u izvedenoj tabeli ili Izvedeni grafikon, na podskup podataka koji se vraćaju mogu da utiču dodatni filteri ili segmentatori koje je korisnik primenio u izvedenoj tabeli. Više informacija o kontekstu potražite u kontekstu u DAX formulama.
Filteri koji uklanjaju duplikate
Pored filtriranja za određene vrednosti, možete da vratite 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 pruža 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. Ovo 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 kontekstu u DAX formulama.
Obe ove funkcije vraćaju celu kolonu vrednosti; stoga funkcije koristite za dobijanje liste vrednosti koje se zatim proslećuju drugoj funkciji. Na primer, možete da koristite sledeću formulu da biste priveli listu različitih proizvoda koje je prodao određeni prodavac, koristeći jedinstvenu šifru proizvoda, a zatim prebrojite proizvode sa te liste pomoću funkcije COUNTROWS:
=COUNTROWS(DISTINCT('ResellerSales_USD'[Šifra Proizvoda]))
Kako kontekst utiče na filtere
Kada dodate DAX formulu u izvedenu tabelu ili Izvedeni grafikon, na rezultate formule može da utiče taj kontekst. Ako radite u Power Pivot, kontekst je trenutni red i njegove vrednosti. Ako radite u izvedenoj tabeli ili Izvedeni grafikon, kontekst znači skup ili podskup podataka koji su definisani operacijama kao što su secanje ili filtriranje. Dizajn izvedene tabele ili tabele Izvedeni grafikon nameće i sopstveni kontekst. Na primer, ako napravite 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. Zato se sve mere koje dodate u izvedenu tabelu izračunaju u kontekstu naslova kolona i redova, kao i filtera u formuli mere.
Više informacija potražite u kontekstu u DAX formulama.
Uklanjanje filtera
Prilikom rada sa složenim formulama, možda ćete želeti da znate tačno šta su trenutni filteri ili želite da izmenite deo filtera formule. 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 da koristite da biste poništili prethodno primenjene filtere i vratili sve redove u tabeli u funkciju koja izvršava agregatnu ili drugu operaciju. Ako umesto tabele koristite neke kolone, kao argumente za ALL, funkcija ALL vraća sve redove zanemarujući sve kontekstualne filtere.
Napomena: Ako ste upoznati sa terminologijom relacijanih baza podataka, možete misliti ALL kao o generisanju prirodnog levog spoja svih tabela.
Na primer, recimo da imate tabele, tabele "Prodaja" i "Proizvodi" i želite da kreirate formulu koja će izračunati zbir prodaje trenutnog proizvoda podeljenog prodajom za sve proizvode. Morate da uzmete u obzir činjenicu da, ako se formula koristi u meri, korisnik izvedene tabele možda koristi Slicer za filtriranje za određeni proizvod, sa imenom proizvoda u redovima. Stoga morate da dodate funkciju ALL da biste preuzeli pravu vrednost imenatora bez obzira na filtere ili segmentatore, morate da dodate funkciju ALL da biste poništili 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 obzir trenutni kontekst, što znači da ako dodate formulu u izračunatu kolonu, primenjuje se 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 denominatora. Funkcija ALL zamenje sve filtere koji se mogu primeniti na tabelu Products tabelu.
Više informacija, uključujući detaljne primere, potražite u temi Funkcija ALL.
Zamena određenih filtera funkcijom ALLEXCEPT
Funkcija ALLEXCEPT takođe zamenjuje postojeće filtere, ali možete da navedete da neki od postojećih filtera treba da se sačuvaju. Kolone koje navedete kao argumente za funkciju ALLEXCEPT navode koje kolone će i dalje biti filtrirane. Ako želite da poništite filtere iz većine kolona, ali ne sve, ALLEXCEPT je praktičniji od all. Funkcija ALLEXCEPT je naročito korisna kada pravite izvedene tabele koje su možda filtrirane po 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 temi Funkcija ALLEXCEPT.