U ovom se odjeljku opisuje stvaranje filtara unutar DAX (Data Analysis Expressions) formula. Filtre možete stvoriti unutar formula da biste ograničili vrijednosti iz izvorišnih podataka koje se koriste u izračunima. To možete učiniti tako da navedete tablicu kao ulazni podatke u formulu, a zatim definirate izraz filtra. Izraz filtra koji navedete koristi se za slanje upita podacima i vraća samo podskup izvorišnih podataka. Filtar se dinamički primjenjuje svaki put kada ažurirate rezultate formule, ovisno o trenutnom kontekstu podataka.
Sadržaj članka
Stvaranje filtra na tablici koja se koristi u formuli
Filtre možete primijeniti u formulama koje uzimaju tablicu kao ulaz. Umjesto unošenja naziva tablice, koristite funkciju FILTER da biste definirali podskup redaka iz navedene tablice. Taj se podskup zatim prosljeđuje drugoj funkciji radi operacija kao što su prilagođene agregacije.
Pretpostavimo, na primjer, da imate tablicu podataka koja sadrži informacije o narudžbama o prodavačima i želite izračunati koliko je koji prodavač prodao. No želite prikazati iznos prodaje samo za one prodavače koji su prodali više jedinica vaših proizvoda veće vrijednosti. Sljedeća formula, utemeljena na oglednoj radnoj knjizi jezika DAX, prikazuje jedan primjer izračuna pomoću filtra:
=SUMX(
FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Količina] > 5 &&
"ResellerSales_USD'[ProductStandardCost_USD] > 100),
'ResellerSales_USD'[SalesAmt]
)
U prvom dijelu formule određuje se jedna od agregacijskih funkcija dodatka Power Pivot, koja kao argument uzima tablicu. SUMX izračunava zbroj tablice.
Drugi dio formule govori
FILTER(table, expression),kojeSUMXpodatke koristiti.SUMXPotrebna je tablica ili izraz koji rezultira tablicom. U ovom slučaju umjesto korištenja svih podataka u tablici koristite funkcijuFILTERda biste odredili koji će se reci iz tablice koristiti.
Izraz filtra sastoji se od dva dijela: u prvom dijelu nalazi se naziv tablice na koju se primjenjuje filtar. U drugom dijelu definira se izraz koji se koristi kao uvjet filtra. U ovom slučaju filtrirate preprodavače koji su prodali više od 5 jedinica i proizvode koji koštaju više od 100 USD. Operator && logički je operator AND, koji označava da oba dijela uvjeta moraju biti zadovoljena da bi redak pripadao filtriranom podskupu.Treći dio formule govori funkciji
SUMXkoje vrijednosti treba zbrojiti. U ovom slučaju koristite samo iznos prodaje.
Imajte na umu da funkcije kao što je FILTER, koje vraćaju tablicu, nikad ne vraćaju tablicu ili retke izravno, već su uvijek ugrađene u drugu funkciju. Dodatne informacije o funkciji FILTER i drugim funkcijama koje se koriste za filtriranje, uključujući dodatne primjere, potražite u odjeljku Funkcije filtra (DAX).Napomena
Na izraz filtra utječe kontekst u kojem se koristi. Ako, primjerice, u mjeri koristite filtar, a mjera se koristi u zaokretnoj tablici ili zaokretnom grafikonu, na podskup vraćenih podataka mogu utjecati dodatni filtri ili rezači koje je korisnik primijenio u zaokretnoj tablici. Dodatne informacije o kontekstu potražite u članku Kontekst u DAX formulama.
Filtri koji uklanjaju duplikate
Osim filtriranja određenih vrijednosti, možete vratiti i jedinstveni skup vrijednosti iz druge tablice ili stupca. To može biti korisno kada želite izbrojati jedinstvene vrijednosti u stupcu ili koristiti popis jedinstvenih vrijednosti za druge operacije. DAX nudi dvije funkcije za vraćanje različitih vrijednosti: funkciju DISTINCT i funkciju VALUES.
- Funkcija DISTINCT pregledava stupac koji navedete kao argument funkcije i vraća novi stupac koji sadrži samo jedinstvene vrijednosti.
- Funkcija VALUES vraća i popis jedinstvenih vrijednosti, ali vraća i nepoznati član. To je korisno kada koristite vrijednosti iz dviju tablica koje su međusobno spojene odnosom, a u drugoj nedostaje vrijednost, a u drugoj je prisutna. Dodatne informacije o nepoznatom članu potražite u odjeljku Kontekst u DAX formulama.
Obje funkcije vraćaju cijeli stupac vrijednosti; Stoga koristite funkcije da biste dobili popis vrijednosti, koji se zatim prosljeđuje drugoj funkciji. Pomoću sljedeće formule možete, primjerice, pomoću jedinstvenog ključa proizvoda dobiti popis zasebnih proizvoda koje prodaje određeni prodavač, a zatim izbrojati proizvode na tom popisu pomoću funkcije COUNTROWS:
=COUNTROWS(DISTINCT('ResellerSales_USD'[KljučProizvoda]))
Kako kontekst utječe na filtre
Kada dodate DAX formulu u zaokretnu tablicu ili zaokretni grafikon, na rezultate formule može utjecati kontekst. Ako radite u tablici dodatka Power Pivot, kontekst su trenutni redak i njegove vrijednosti. Ako radite u zaokretnoj tablici ili zaokretnom grafikonu, kontekst se odnosi na skup ili podskup podataka definiran operacijama kao što su rezanje ili filtriranje. I dizajn zaokretne tablice ili zaokretnog grafikona nameće vlastiti kontekst. Ako, primjerice, stvorite zaokretnu tablicu u kojoj se prodaja grupira po regiji i godini, u zaokretnoj će se tablici pojaviti samo podaci koji se primjenjuju na te regije i godine. Stoga se mjere koje dodate u zaokretnu tablicu izračunavaju u kontekstu zaglavlja stupaca i redaka te svih filtara u formuli mjere.
Dodatne informacije potražite u odjeljku Kontekst u DAX formulama.
Uklanjanje filtara
Kada radite sa složenim formulama, možda ćete htjeti znati točnost trenutnih filtara ili izmijeniti dio formule koji se sastoji od filtra. DAX sadrži nekoliko funkcija koje omogućuju uklanjanje filtara i određivanje stupaca koji se zadržavaju u trenutnom kontekstu filtra. U ovom se odjeljku prikazuje kako te funkcije utječu na rezultate u formuli.
Nadjačavanje svih filtara funkcijom ALL
Pomoću ALL te funkcije možete nadjačati filtre koji su prethodno primijenjeni i vratiti sve retke u tablici funkciji koja provodi postupak zbrajanja ili drugu operaciju. Ako kao argumente za ALLtablicu umjesto tablice koristite jedan ili više stupaca, ALL funkcija će vratiti sve retke zanemarujući sve kontekstne filtre.
Napomena
Ako ste upoznati s terminologijom relacijskih baza podataka, možete to ALL smatrati generiranjem prirodnog lijevog vanjskog spoja svih tablica.
Pretpostavimo, na primjer, da imate tablice Prodaja i Proizvodi i želite stvoriti formulu koja će izračunati zbroj prodaje za trenutni proizvod podijeljen s prodajom za sve proizvode. Morate uzeti u obzir da, ako se formula koristi u mjeri, korisnik zaokretne tablice možda koristi rezač za filtriranje određenog proizvoda s nazivom proizvoda u recima. Da biste dobili pravu vrijednost nazivnika neovisno o filtrima i rezačima, morate dodati funkciju ALL da biste nadjačali filtre. Sljedeća je formula jedan od primjera kako pomoću funkcije ALL nadjačati učinke prethodnih filtara:
=SUM (Prodaja[Iznos])/SUMX(Prodaja[Iznos], FILTER(Prodaja; ALL(Proizvodi)))
- Prvi dio formule, SUM (Prodaja[iznos]), izračunava brojnik.
- Zbroj uzima u obzir trenutni kontekst, što znači da ako formulu dodate u izračunati stupac, primjenjuje se kontekst retka, a ako u zaokretnu tablicu dodate formulu kao mjeru, primijenit će se svi filtri primijenjeni u zaokretnoj tablici (kontekst filtra).
- Drugi dio formule izračunava nazivnik. Funkcija ALL nadjačava sve filtre koji se mogu primijeniti na tablicu
Products.
Dodatne informacije, uključujući detaljne primjere, potražite u članku Funkcija ALL.
Nadjačavanje određenih filtara funkcijom ALLEXCEPT
Funkcija ALLEXCEPT nadjačava postojeće filtre, ali možete odrediti da se neki od postojećih filtara zadrže. Stupci koje imenujete kao argumenti funkcije ALLEXCEPT određuju koji će se stupci dalje filtrirati. Ako želite nadjačati filtre iz većine stupaca, ali ne i svih, ALLEXCEPT je prikladniji od SVE. Funkcija ALLEXCEPT osobito je korisna kada stvarate zaokretne tablice koje se mogu filtrirati prema mnogo različitih stupaca, a želite kontrolirati vrijednosti koje se koriste u formuli. Dodatne informacije, uključujući detaljan primjer korištenja funkcije ALLEXCEPT u zaokretnoj tablici, potražite u članku Funkcija ALLEXCEPT.