Filtriranje podataka u DAX formulama

Primenjuje se na
Excel za Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Ovaj odeljak opisuje kako da kreirate filtere u Data Analysis Expressions (DAX) formulama. Možete da kreirate filtere u okviru formula kako biste ograničili vrednosti iz izvornih podataka koji se koriste u izračunavanjima. To radite tako što ćete navesti tabelu kao ulaz u formulu, a zatim definisati izraz filtera. Izraz filtera koji navedete koristi se za upit nad podacima i vraća samo podskup 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 unosite 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, recimo da imate tabelu sa podacima koja sadrži informacije o porudžbinama o lokalnim prodavcima i želite da izračunate koliko je svaki prodavac prodat. Međutim, želite da prikažete iznos prodaje samo za one prodavce koji su prodali više jedinica vaših proizvoda veće vrednosti. Sledeća formula, zasnovana na uzorku radne sveske u jeziku DAX, prikazuje jedan primer 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 Power Pivot agregatnih funkcija koja uzima tabelu kao argument. SUMX izračunava zbir u tabeli.

  • Drugi deo formule FILTER(table, expression),govori SUMX koje podatke da koristite. SUMX Zahteva tabelu ili izraz koji kao rezultat stvara 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 će se koristiti kao uslov filtera. U ovom slučaju, vršite filtriranje po lokalnim prodavcima koji su prodali više od 5 jedinica i proizvodima koji koštaju više od 100 USD. Operator && je logički operator AND, koji ukazuje na to da oba dela uslova moraju biti ispunjena da bi red pripadao filtriranom podskupu.

  • Treći deo formule govori funkciji SUMX koje vrednosti treba da se saberu. U ovom slučaju koristite samo iznos prodaje.
    Imajte na umu da funkcije kao što je FILTER, koje daju tabelu, nikada ne vraćaju tabelu ili redove direktno, već 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 za meru, a mera se koristi u izvedenoj tabeli ili izvedenom grafikonu, na vraćeni podskup podataka 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 vratiti jedinstveni skup vrednosti iz druge tabele ili kolone. Ovo može biti od pomoći 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 posebnih vrednosti: funkciju DISTINCT i funkciju 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 vraća nepoznatog člana. Ovo je korisno kada koristite vrednosti iz dve tabele koje su spojene relacijom, a vrednost nedostaje u jednoj tabeli, a postoji u drugoj. Više informacija o nepoznatom članu potražite u članku "Kontekst u DAX formulama".

Obe ove funkcije vraćaju čitavu kolonu vrednosti; Stoga koristite funkcije da biste dobili listu vrednosti koja se zatim prosleđuje 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 da prebrojite proizvode na toj listi pomoću funkcije COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

Vrh stranice

Kako kontekst utiče na filtere

Kada dodate DAX formulu u izvedenu tabelu ili izvedeni grafikon, kontekst može da utiče na rezultate formule. Ako radite u Power Pivot tabeli, kontekst su trenutni red i njegove vrednosti. Ako radite u izvedenoj tabeli ili izvedenom grafikonu, kontekst predstavlja skup ili podskup podataka koji je definisan operacijama kao što su rezanje 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 filtera u formuli mere.

Više informacija potražite u članku Kontekst u DAX formulama.

Vrh stranice

Uklanjanje filtera

Kada radite sa složenim formulama, možda ćete želeti da znate tačno koji su to trenutni filteri ili želite da izmenite deo filtera formule. DAX obezbeđuje nekoliko funkcija koje vam omogućavaju da uklonite filtere i da kontrolišete koje kolone se zadržavaju u sklopu trenutnog konteksta filtera. Ovaj odeljak pruža pregled toga kako ove funkcije utiču na rezultate u formuli.

Zamena svih filtera funkcijom ALL

Funkciju ALL možete koristiti da biste zamenili sve prethodno primenjene filtere i vratili sve redove u tabeli u funkciju koja izvršava agregatnu ili drugu operaciju. Ako umesto tabele koristite jednu kolonu ili više njih kao argumente za ALL, ALL funkcija vraća sve redove zanemarujući kontekstualne filtere.

Napomena

Ako ste upoznati sa terminologiju relacionih baza podataka, možete da posmatrate ALL generisanje prirodnog levog spoljnog spajanja svih tabela.

Na primer, pretpostavimo da imate 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 na redovima. Stoga, da biste dobili pravu vrednost imenioca bez obzira na filtere ili module za sečenje, morate da dodate funkciju ALL da biste zamenili sve filtere. Sledeća formula je jedan primer kako se koristi funkcija ALL za zamenu efekata prethodnih filtera:

=SUM (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales, ALL(Products)))

  • 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, a ako formulu dodate u izvedenu tabelu kao meru, primenjuju se svi filteri primenjeni u izvedenoj tabeli (kontekst filtera).
  • Drugi deo formule izračunava imenilac. Funkcija ALL zamenjuje sve filtere koji mogu biti primenjeni na tabelu Products .

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 neki od postojećih filtera treba da budu očuvani. Kolone koje imenujete kao argumente za funkciju ALLEXCEPT navode koje će kolone nastaviti da se filtriraju. Ako želite da zamenite filtere iz većine kolona, ali ne i iz svih, funkcija ALLEXCEPT je prikladnija od funkcije ALL. Funkcija ALLEXCEPT je posebno korisna kada pravite izvedene tabele koje se mogu filtrirati po mnogo različitih kolona i želite da kontrolišete vrednosti koje se koriste u formuli. Više informacija, uključujući detaljan primer kako se koristi funkcija ALLEXCEPT u izvedenoj tabeli, potražite u članku Funkcija ALLEXFE.

Vrh stranice