Andmete filtreerimine DAX-i valemites

Selles jaotises kirjeldatakse filtrite loomist andmeanalüüsi avaldiste (Data Analysis Expressions – DAX) valemites. Arvutustes kasutatavate lähteandmete väärtuste piiramiseks saate valemites kasutada filtreid. Selleks võite valemi sisendina määrata tabeli ja seejärel määratleda filtriavaldise. Teie sisestatud filtriavaldist kasutatakse andmepäringu esitamiseks ja lähteandmete kindla alamhulga tagastamiseks. Filter rakendatakse dünaamiliselt iga kord, kui värskendate valemi tulemeid, sõltuvalt teie andmete praegusest kontekstist.

Selle artikli teemad

Filtri loomine valemis kasutatava tabeli jaoks

Duplikaatide eemaldamise filtrid

Konteksti mõju filtritele

Filtrite eemaldamine

Kõigi filtrite ülekirjutamine funktsiooniga ALL

Kindlate filtrite ülekirjutamine funktsiooniga ALLEXCEPT

Filtri loomine valemis kasutatava tabeli jaoks

Filtreid saate rakendada valemites, mis kasutavad sisendina tabelit. Tabeli nime sisestamise asemel tuleb teil funktsiooniga FILTER määratleda määratud tabeli ridade alamhulk. See alamhulk edastatakse seejärel teisele funktsioonile järgmisteks toiminguteks (nt kohandatud liitmised).

Oletagem näiteks, et teil on andmetega tabel, mis sisaldab tellimisteavet edasimüüjate kohta, ning soovite arvutada iga edasimüüja läbimüügi. Samas soovite müügisummad kuvada üksnes nende edasimüüjate korral, kes müüsid suuremas koguses teie kõrgema väärtusega tooteid. DAX-näidistöövihikul põhinev järgmine valem näitab ühte võimalust selle arvutuse koostamiseks filtri abil:

=SUMX(
     FILTER ('ResellerSales_EUR', 'ResellerSales_EUR'[Quantity] > 5 &&
     'ResellerSales_EUR'[ProductStandardCost_EUR] > 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • Valemi esimene osa määrab ühe Power Pivoti kokkuvõttefunktsioonidest, mis kasutab argumendina tabelit. SUMX arvutab summa tabelis.

  • Valemi teine osa FILTER(table, expression), ütleb funktsioonile SUMX, milliseid andmeid kasutada. SUMX nõuab tabelit või avaldist, mis annab tulemiks tabeli. Tabeli kõigi andmete kasutamise asemel saate siin funktsiooni FILTER abil määrata, milliseid tabeli ridu tuleks kasutada.

    Filtriavaldis koosneb kahest osast: esimene osa sisaldab selle tabeli nime, millele filter rakendatakse. Teine osa määratleb filtri tingimusena kasutatava avaldise. Käesoleva näite korral tuuakse filtri abil esile edasimüüjad, kes müüsid rohkem kui viis ühikut tooteid, mille hind on üle 100 euro. Tehtemärk && on loogikatehtemärk JA, mis näitab, et selleks, et rida kuuluks filtreeritavasse alamhulka, peavad täidetud olema tingimuse mõlemad osad.

  • Valemi kolmas osa annab funktsioonile SUMX teada, millised väärtused tuleks liita. Käesoleval juhul kasutate üksnes müügisummat.

    Võtke arvesse, et tabeli tagastavad funktsioonid (nt FILTER) ei tagasta tabelit ega ridu kunagi otse, vaid neid kasutatakse alati mõnda teise funktsiooni manustatuna. Funktsiooni FILTER ja muude filtreerimiseks kasutatavate funktsioonide kohta lisateabe (sh näidete) saamiseks lugege teemat Filtrifunktsioonid (DAX).

    Märkus.: Filtriavaldist mõjutab kontekst, milles seda kasutatakse. Kui kasutate filtrit näiteks mõõdus, mida omakorda kasutatakse PivotTable-liigendtabelis või PivotChart-liigenddiagrammis, võivad tagastatavat andmete alamhulka mõjutada ka täiendavad filtrid või tükeldid, mida kasutaja on PivotTable-liigendtabelis rakendanud. Konteksti kohta leiate lisateavet teemast Kontekst DAX-valemites.

Duplikaatide eemaldamise filtrid

Lisaks kindlate väärtuste filtreerimisele saate tagastada kordumatu väärtusekomplekti mõnest muust tabelist või veerust. Sellest võib abi olla näiteks juhul, kui soovite loendada veerus leiduvad kordumatud väärtused või kasutada kordumatute väärtuste loendit mõne muu toimingu jaoks. DAX pakub ainuväärtuste tagastamiseks kahte funktsiooni: funktsiooni DISTINCT ja funktsiooni VALUES.

  • Funktsioon DISTINCT analüüsib ühte veergu, mille olete määratlenud funktsiooni argumendina, ja tagastab ainult ainuväärtusi sisaldava uue veeru.

  • Funktsioon VALUES tagastab samuti ainuväärtuste loendi, ent lisaks tagastatakse ka tundmatu liige. Sellest on abi juhul, kui kasutate väärtusi kahest tabelist, mis on omavahel seotud, ning mõni kindel väärtus on ühes tabelis olemas, kuid teises mitte. Tundmatu liikme kohta leiate lisateavet teemast Kontekst DAX-valemites.

Mõlemad funktsioonid tagastavad terve väärtuste veeru. Seetõttu saate nende funktsioonide abil tuua selliste väärtuste loendi, mis seejärel edastatakse mõnele teisele funktsioonile. Näiteks võite järgmise valemi abil koostada loendi erinevatest toodetest, mida kindel edasimüüja müüb (kasutades kordumatut tootekoodi), ja seejärel loendada selles loendis leiduvad tooted funktsiooniga COUNTROWS:

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

Lehe algusse

Konteksti mõju filtritele

Kui lisate DAX-valemi PivotTable-liigendtabelisse või PivotChart-liigenddiagrammi, võib kontekst valemi tulemeid mõjutada. Power Pivoti tabelis töötamisel tähendab kontekst praegu aktiivset rida ja selle väärtusi. PivotTable-liigendtabelis või PivotChart-liigenddiagrammis töötamisel tähendab kontekst nende andmete hulka või alamhulka, mis on teatud toimingutega (nt tükeldamise või filtreerimisega) määratletud. PivotTable-liigendtabeli või PivotChart-liigenddiagrammi kujundusel on kontekstis samuti oma osa. Kui näiteks loote PivotTable-liigendtabeli, mis rühmitab müügi piirkondade ja aastate lõikes, kuvatakse PivotTable-liigendtabelis ainult need andmed, mis vastavad nendele piirkondadele ja aastatele. Seetõttu arvutatakse kõik PivotTable-liigendtabelisse lisatavad mõõdud veeru- ja reapäiste ning mõõduvalemi filtrite kontekstis. 

Lisateavet leiate teemast Kontekst DAX-valemites.

Lehe algusse

Filtrite eemaldamine

Keerukate valemitega töötades soovite vahel kindlasti täpselt teada, millised on praegused filtrid, või valemi filtriosa muuta. DAX pakub mitut funktsiooni, mis võimaldavad filtreid eemaldada ja määrata, millised veerud praeguse filtrikonteksti raames säilitada. Selles jaotises antakse ülevaade, kuidas need funktsioonid valemis tulemeid mõjutavad.

Kõigi filtrite ülekirjutamine funktsiooniga ALL

Funktsiooni ALL abil saate üle kirjutada varem rakendatud filtrid ja tagastada kõik tabeli read kokkuvõttefunktsiooni või mõne muu tehtefunktsiooni jaoks. Kui kasutate funktsiooni ALL argumentidena tabeli asemel ühte või mitut veergu, tagastab funktsioon ALL kontekstifiltreid ignoreerides kõik read.

Märkus.: Kui olete tuttav relatsioonandmebaaside terminoloogiaga, võite funktsiooni ALL käsitleda sarnaselt kõigi tabelite loomuliku vasakpoolse välise ühendamisena.

Oletagem näiteks, et teil on tabelid nimega Müük ja Tooted ning soovite luua valemi, mis arvutab praeguse toote müügisumma jagatuna kõigi toodete müügiga. Kindlasti tuleb arvesse võtta, et kui valemit kasutada mõõdus, võib PivotTable-liigendtabeli kasutaja kasutada kindla toote filtreerimiseks ridades tükeldit. Seetõttu peate nimetaja tegeliku väärtuse saamiseks (võtmata arvesse filtreid või tükeldeid) lisama filtrite alistamiseks funktsiooni ALL. Järgmine valem kujutab ühte näidet, kuidas kasutada funktsiooni ALL eelmiste filtrite mõju alistamiseks:

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

  • Valemi esimese osa SUM (Sales[Amount]) põhjal arvutatakse lugeja.

  • Summa arvutamisel võetakse arvesse praegust konteksti, mis tähendab, et kui lisate valemi arvutatud veergu, rakendatakse rea kontekst, ja kui lisate valemi mõõduna PivotTable-liigendtabelisse, rakendatakse kõik PivotTable-liigendtabelis rakendatud filtrid (filtri kontekst).

  • Valemi teise osa põhjal arvutatakse nimetaja. Funktsioon ALL kirjutab üle kõik filtrid, mis on rakendatud tabelile Products.

Lisateavet (sh üksikasjalikke näiteid) leiate teemast Funktsioon ALL.

Kindlate filtrite ülekirjutamine funktsiooniga ALLEXCEPT

Ka funktsioon ALLEXCEPT alistab olemasolevad filtrid, ent soovi korral saate määrata mõne olemasoleva filtri säilitamise. Veerud, mille määratlete funktsiooni ALLEXCEPT argumentidena, määravad ära selle, milliseid veerge jätkuvalt filtreeritakse. Kui soovite alistada enamiku veergude (kuid mitte kõigi) filtrid, on funktsioon ALLEXCEPT funktsioonist ALL käepärasem. Funktsioon ALLEXCEPT on eriti abiks selliste PivotTable-liigendtabelite loomisel, milles on filtreeritud palju erinevaid veerge ja soovite valemis kasutatavaid väärtusi täpsemalt määrata. Lisateavet (sh üksikasjaliku näite funktsiooni ALLEXCEPT kasutamise kohta PivotTable-liigendtabelis) leiate teemast Funktsioon ALLEXCEPT.

Lehe algusse

Täiendage Office'i kasutamise oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liituge Office Insideri programmiga

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×