Filtriranje podatkov v formulah jezika DAX

Velja za
Excel za Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

V tem razdelku je opisano, kako ustvarite filtre v formulah jezika DAX (Data Analysis Expressions). V formulah lahko ustvarite filtre, da omejite vrednosti iz izvornih podatkov, ki se uporabljajo v izračunih. To naredite tako, da določite tabelo kot vhod v formulo in nato določite izraz filtra. Izraz filtra, ki ga navedete, se uporablja za poizvedovanje 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

Ustvarjanje filtra v tabeli, uporabljeni v formuli

Filtre lahko uporabite v formulah, ki vzamejo tabelo kot vhod. Namesto vnosa imena tabele uporabite funkcijo FILTER, da določite podnabor vrstic iz določene tabele. Ta podmnožica se nato posreduje drugi funkciji za operacije, kot so združevanja po meri.

Recimo, da imate tabelo s podatki, ki vsebuje informacije o naročilih o prodajalcih, in želite izračunati, koliko je vsak prodajalec prodal. Vendar pa želite prikazati znesek prodaje samo za tiste prodajalce, ki so prodali več enot vaših izdelkov z višjo vrednostjo. V spodnji formuli, ki temelji na vzorčnem delovnem zvezku jezika DAX, je prikazan 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'[SalesAmt]
     )

  • Prvi del formule določa eno od združevalnih funkcij dodatka Power Pivot, ki tabelo vzame kot argument. SUMX izračuna vsoto za tabelo.

  • Drugi del formule poveSUMX, FILTER(table, expression),katere podatke uporabiti. SUMX Zahteva tabelo ali izraz, katerega rezultat je tabela. Tukaj namesto uporabe vseh podatkov v tabeli uporabite funkcijo FILTER , da določite, katere vrstice iz tabele bodo uporabljene.
    Izraz filtra je sestavljen iz dveh delov: prvi del imenuje tabelo, za katero se filter nanaša. Drugi del opredeljuje izraz, ki se uporabi kot pogoj filtra. V tem primeru filtrirate prodajalce, ki so prodali več kot 5 enot, in izdelke, ki stanejo več kot 100 USD. Operator && je logični operator AND, ki označuje, da morata biti oba dela pogoja resnična, da vrstica pripada filtriranemu podnaboru.

  • Tretji del formule funkciji SUMX pove, katere vrednosti je treba sešteti. V tem primeru uporabljate samo znesek prodaje.
    Upoštevajte, da funkcije, kot je FILTER, ki vrnejo tabelo, nikoli ne vrnejo tabele ali vrstic neposredno, 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 vrnjeni podnabor 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 DAX.

Filtri, ki odstranijo dvojnike

Poleg filtriranja za določene vrednosti lahko vrnete tudi enoličen nabor vrednosti iz druge tabele ali stolpca. To je lahko koristno, če želite prešteti število enoličnih vrednosti v stolpcu ali uporabiti seznam enoličnih vrednosti za druge operacije. DAX ponuja dve funkciji za vračanje različnih vrednosti: funkcijo DISTINCT in funkcijo VALUES.

  • Funkcija DISTINCT pregleda en stolpec, ki ga določite kot argument funkcije, in vrne nov stolpec, ki vsebuje le različne vrednosti.
  • Funkcija VALUES vrne tudi seznam enoličnih vrednosti, vendar vrne tudi neznanega člana. To je uporabno, če uporabljate vrednosti iz dveh tabel, ki sta združeni z relacijo, vrednost pa manjka v eni tabeli, v drugi pa je prisotna. Č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 se nato posreduje drugi funkciji. S to formulo lahko na primer pridobite seznam različnih izdelkov, ki jih prodaja določen prodajalec, z edinstvenim ključem izdelka in nato preštejete izdelke na tem seznamu s funkcijo COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[KljučIzdelka]))

Na vrh strani

Kako kontekst vpliva na filtre

Ko dodate formulo DAX v vrtilno tabelo ali vrtilni grafikon, lahko na rezultate formule vpliva kontekst. Č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 podnabor podatkov, ki ga določajo operacije, kot sta rezanje ali filtriranje. Zasnova vrtilne tabele ali vrtilnega grafikona prav tako vsiljuje svoj kontekst. Če na primer ustvarite vrtilno tabelo, ki združuje prodajo po regijah in letih, se v vrtilni tabeli prikažejo le podatki, ki veljajo za te regije in leta. Zato so vse mere, ki jih dodate v vrtilno tabelo, izračunane v kontekstu naslovov stolpcev in vrstic ter vseh filtrov v formuli mere.

Če želite več informacij, glejte Kontekst v formulah DAX.

Na vrh strani

Odstranjevanje filtrov

Ko delate z zapletenimi formulami, boste morda želeli natančno vedeti, kateri so trenutni filtri, ali pa boste želeli spremeniti del formule s filtrom. DAX ponuja več funkcij, ki omogočajo odstranjevanje filtrov in nadziranje, kateri stolpci se ohranijo kot del trenutnega konteksta filtra. V tem razdelku je pregled, kako te funkcije vplivajo na rezultate v formuli.

Preglasitev vseh filtrov s funkcijo ALL

S funkcijo ALL lahko preglasite vse filtre, ki so bili prej uporabljeni, in vrnete vse vrstice v tabeli funkciji, ki izvaja združevanje ali drugo operacijo. Če namesto tabele uporabite enega ali več stolpcev kot argumente za ALL, ALL funkcija vrne vse vrstice in ne upošteva morebitnih kontekstnih filtrov.

Opomba

Če ste seznanjeni s terminologijo relacijske baze podatkov, si lahko predstavljate ALL ustvarjanje naravnega levega zunanjega združevanja vseh tabel.

Recimo, da imate tabele Prodaja in Izdelki in želite ustvariti formulo, ki bo izračunala vsoto prodaje za trenutni izdelek, deljeno s prodajo za vse izdelke. Upoštevati morate dejstvo, da če je formula uporabljena v merilu, uporabnik vrtilne tabele morda uporablja razčlenjevalnik za filtriranje določenega izdelka z imenom izdelka v vrsticah. Če želite dobiti pravo vrednost imenovalca, ne glede na filtre ali razčlenjevalnike, morate dodati funkcijo ALL, da preglasite vse filtre. Naslednja formula je primer, kako uporabiti funkcijo ALL za preglasitev učinkov prejšnjih filtrov:

=SUM (Prodaja[Znesek])/SUMX(Prodaja[Znesek]], FILTER(Prodaja; VSE(Izdelki)))

  • Prvi del formule, SUM (Prodaja[Znesek]), izračuna števec.
  • Vsota upošteva trenutni kontekst, kar pomeni, da če formulo dodate v izračunani stolpec, se uporabi kontekst vrstice, in če formulo dodate v vrtilno tabelo kot merilo, se uporabijo vsi filtri, uporabljeni v vrtilni tabeli (kontekst filtra).
  • Drugi del formule izračuna imenovalec. Funkcija ALL preglasi vse filtre, ki so morda uporabljeni za tabelo Products .

Če želite več informacij, vključno s podrobnimi primeri, glejte Funkcija ALL.

Preglasitev določenih filtrov s funkcijo ALLEXCEPT

Funkcija ALLEXCEPT prav tako preglasi obstoječe filtre, vendar lahko določite, da morajo biti nekateri obstoječi filtri ohranjeni. Stolpci, ki jih poimenujete kot argumente funkcije ALLEXCEPT, določajo, kateri stolpci bodo še naprej filtrirani. Če želite preglasiti filtre iz večine stolpcev, vendar ne vseh, je ALLEXCEPT bolj priročen kot ALL. Funkcija ALLEXCEPT je še posebej uporabna, ko ustvarjate vrtilne tabele, ki jih je mogoče filtrirati po številnih različnih stolpcih, in želite nadzorovati vrednosti, ki so uporabljene v formuli. Če želite več informacij, vključno s podrobnim primerom uporabe funkcije ALLEXCEPT v vrtilni tabeli, glejte Funkcija ALLEXCEPT.

Na vrh strani