V tem razdelku je opisano, kako ustvarite filtre v formulah jezika Data Analysis Expressions (DAX). Znotraj formul lahko ustvarite filtre, s katerimi omejite vrednosti izvornih podatkov, ki se uporabljajo v izračunih. To naredite tako, da določite tabelo kot vnos za formulo in nato določite izraz filtra. Izraz filtra, ki ga navedete, se uporablja za poizvedanje po podatkih in vrne le podnabor izvornih podatkov. Filter se uporabi dinamično vsakič, ko posodobite rezultate formule, odvisno od trenutnega konteksta podatkov.
V tem članku
Creating a Filter on a Table used in a Formula
Filtre lahko uporabite v formulah, ki uporabljajo tabelo kot vnos. Namesto vnašanja imena tabele lahko s funkcijo FILTER določite podnabor vrstic iz določene tabele. Ta podmnožica je nato posredovana drugi funkciji za operacije, kot so združevanja po meri.
Recimo, da imate tabelo s podatki o naročilih za prodajalce in želite izračunati, koliko je posamezni prodajalec prodan. Vendar pa želite prikazati znesek prodaje le za prodajalce, ki so prodali več enot vaših izdelkov z višjo vrednostjo. Ta formula, ki temelji na vzorčnem delovnem zvezku JEZIKA DAX, prikazuje en primer, kako lahko ustvarite ta izračun s filtrom:
=SUMX(
FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Količina] > 5 && 'ResellerSales_USD'[ProductStandardCost_USD] > 100), 'ResellerSales_USD'[ProdajaAmt] )-
Prvi del formule določa eno od Power Pivot združevanja, ki vzame tabelo kot argument. SUMX izračuna vsoto nad tabelo.
-
Drugi del formule, FILTER(table, expression),pove SUMX katere podatke uporabiti. SUMX potrebujete tabelo ali izraz, ki vrne tabelo. Tukaj namesto uporabe vseh podatkov v tabeli uporabite funkcijo FILTER , da določite, katere vrstice iz tabele so uporabljene.
Izraz filtra ima dva dela: prvi del poinoti tabelo, za katero velja filter. Drugi del določa izraz, ki ga želite uporabiti kot pogoj filtra. V tem primeru filtrirate prodajalce, ki so prodali več kot 5 enot in izdelkov, ki so stali več kot 100 $. Operator( &&) je logični operator AND, ki označuje, da morata biti oba dela pogoja »true«, da vrstica sodi v filtrirano podmnožico.
-
Tretji del formule sporoči funkciji SUMX katere vrednosti je treba sešteti. V tem primeru uporabite le znesek prodaje.
Upoštevajte, da funkcije, kot je FILTER, ki vrnejo tabelo, nikoli ne vrnejo neposredno tabele ali vrstic, ampak so vedno vdelane v drugo funkcijo. Če želite več informacij o funkciji FILTER in drugih funkcijah, ki se uporabljajo za filtriranje, vključno z več primeri, glejte Funkcije filtriranja (DAX).
Opomba: Na izraz filtra vpliva kontekst, v katerem je uporabljen. Če na primer uporabite filter v meri in je mera uporabljena v vrtilni tabeli ali vrtilnem grafikonu, lahko na podnabor vrnjenih podatkov vplivajo dodatni filtri ali razčlenjevalniki, ki jih je uporabnik uporabil v vrtilni tabeli. Če želite več informacij o kontekstu, glejte Kontekst v formulah jezika DAX.
Filtri, ki odstranijo dvojnike
Poleg filtriranja določenih vrednosti lahko vrnete enolični nabor vrednosti iz druge tabele ali stolpca. To je uporabno, ko želite prešteti število enoličnih vrednosti v stolpcu ali pa uporabiti seznam enoličnih vrednosti za druge operacije. DAX nudi dve funkciji za vračanje razlikovalnih vrednosti: Funkcija DISTINCTin Funkcija VALUES.
-
Funkcija DISTINCT pregleda en stolpec, ki ga določite kot argument za funkcijo, in vrne nov stolpec, ki vsebuje samo razlikovalne vrednosti.
-
Funkcija VALUES vrne tudi seznam enoličnih vrednosti, vendar vrne tudi neznanega člana. To je uporabno, če uporabite vrednosti iz dveh tabel, ki sta združeni z relacijo, vrednost pa manjka v eni tabeli in je prisotna v drugi. Če želite več informacij o neznanem članu, glejte Kontekst v formulah jezika DAX.
Obe funkciji vrneta celoten stolpec vrednosti; Zato uporabite funkcije, da dobite seznam vrednosti, ki so nato posredovane drugi funkciji. S to formulo lahko na primer dobite seznam razlikovalnih izdelkov, ki jih prodaja določen prodajalec z enoličnim ključem izdelka, nato pa preštejete izdelke na tem seznamu s funkcijo COUNTROWS:
=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
Kako kontekst vpliva na filtre
Ko dodate formulo DAX v vrtilno tabelo ali vrtilni grafikon, lahko kontekst vpliva na rezultate formule. Če delate v tabeli Power Pivot, je kontekst trenutna vrstica in njene vrednosti. Če delate v vrtilni tabeli ali vrtilnem grafikonu, kontekst pomeni nabor ali podmnožico podatkov, ki je opredeljena z postopki, kot je na primer zliciranje ali filtriranje. Načrt vrtilne tabele ali vrtilnega grafikona določa tudi svoj kontekst. Če na primer ustvarite vrtilno tabelo, ki razvrsti prodajo po regijah in letih, so v vrtilni tabeli prikazani le podatki, ki veljajo za te regije in leta. Zato so vse mere, ki jih dodate v vrtilno tabelo, izračunane v kontekstu glav stolpcev in vrstic ter vseh filtrov v formuli mere.
Če želite več informacij, glejte Kontekst v formulah jezika DAX.
Odstranjevanje filtrov
Pri delu z zapletenimi formulami boste morda želeli natančno vedeti, kateri so trenutni filtri, ali pa morda želite spremeniti del filtra formule. DAX ponuja več funkcij, s katerimi lahko odstranite filtre in nadzorujete, kateri stolpci se ohranijo kot del trenutnega konteksta filtra. V tem razdelku je pregled, kako te funkcije vplivajo na rezultate v formuli.
Prepis vseh filtrov s funkcijo ALL
S funkcijo ALL lahko preglasite vse filtre, ki so bili že uporabljeni, in vrnete vse vrstice v tabeli v funkcijo, ki izvaja združevanje ali drugo operacijo. Če namesto tabele uporabljate enega ali več stolpcev kot argumente za ALL, funkcija ALL vrne vse vrstice, pri tem pa preze vse kontekstne filtre.
Opomba: Če poznate terminologijo relacijske zbirke podatkov, si lahko ALL , da bi generiranje naravnega levega zunanjega združevanja vseh tabel.
Recimo, da imate tabele»Prodaja« in »Izdelki« in želite ustvariti formulo, s katero boste izračunali vsoto prodaje za trenutni izdelek, deljeno s prodajo za vse izdelke. Upoštevati morate, da uporabnik vrtilne tabele morda uporablja razčlenjevalnik za filtriranje določenega izdelka z imenom izdelka v vrsticah, če uporablja formulo v meri. Če želite torej dobiti pravo vrednost imenovalca ne glede na filtre ali razčlenjevalnike, morate dodati funkcijo ALL, da preglasite vse filtre. Ta formula je primer, kako uporabiti ALL za preglasitev učinkov prejšnjih filtrov:
=SUM (Prodaja[Znesek])/SUMX(Prodaja[Znesek], FILTER(Prodaja, ALL(Izdelki)))
-
Prvi del formule, SUM (Prodaja[Znesek]), izračuna števec.
-
Vsota upošteva trenutni kontekst, kar pomeni, da se uporabi kontekst vrstice, če dodate formulo v izračunan stolpec, in če dodate formulo v vrtilno tabelo kot mero, so uporabljeni vsi filtri, uporabljeni v vrtilni tabeli (kontekst filtra).
-
Drugi del formule izračuna imenovalec. Funkcija ALL preglasi vse filtre, ki so morda uporabljeni za Products tabeli.
Če želite več informacij, vključno s podrobnimi primeri, glejte Funkcija ALL.
Prepis določenih filtrov s funkcijo ALLEXCEPT
Funkcija ALLEXCEPT preglasi tudi obstoječe filtre, vendar lahko določite, da morajo biti nekateri obstoječi filtri ohranjeni. Stolpci, ki jih poimenujte kot argumente za funkcijo ALLEXCEPT, določajo, kateri stolpci bodo še naprej filtrirani. Če želite preglasiti filtre iz večine stolpcev, ne pa vseh, je ALLEXCEPT bolj priročen kot ALL. Funkcija ALLEXCEPT je še posebej uporabna, ko ustvarjate vrtilne tabele, ki so lahko filtrirane v številnih različnih stolpcih, in želite nadzirati vrednosti, ki so uporabljene v formuli. Če želite več informacij, vključno s podrobnim primerom uporabe zdravila ALLEXCEPT v vrtilni tabeli, glejte Funkcija ALLEXCEPT.