Šiame skyriuje aprašoma, kaip kurti filtrus duomenų analizės išraiškų (DAX) formulėse. Formulėse galite kurti filtrus, kad apribotumėte iš skaičiavimų metu naudojamų pirminių duomenų gaunamas reikšmes. Tai atliksite kaip formulės įvestį nurodydami lentelę ir apibrėždami filtro išraišką. Jūsų pateikta filtro išraiška naudojama teikiant duomenų užklausą ir grąžinant tik pirminių duomenų antrinį rinkinį. Filtras dinamiškai taikomas kiekvieną kartą naujinant formulės rezultatus, atsižvelgiant į jūsų duomenų dabartinį kontekstą.
Šiame straipsnyje
Filtro kūrimas formulėje naudojamoje lentelėje
Galite taikyti filtrus formulėse, kurios į lentelę reaguoja kaip į įvestį. Užuot įvedę lentelės pavadinimą, naudokite funkciją FILTER, kad iš nurodytos lentelės apibrėžtumėte antrinį antrinį eilučių rinkinį. Tada tas rinkinys perduodamas kitoms funkcijoms taikyti ir veiksmams, pvz., pasirinktiniams grupavimams, atlikti.
Pvz., įsivaizduokite, kad turite lentelę su duomenimis, kuriuose saugoma užsakymo informacija apie perpardavėjus, ir norite apskaičiuoti, kiek pardavė kiekvienas perpardavėjas. Bet pardavimų kiekį norite rodyti tik tiems perpardavėjams, kurie pardavė kelis jūsų didesnės vertės gaminių vienetus. Toliau pateikiama formulė, pagrįsta DAX pavyzdžio darbaknyge, rodo vieną šio skaičiavimo naudojant filtrą sukūrimo pavyzdį:
=SUMX(
FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Kiekis] > 5 && "ResellerSales_USD"[ProductStandardCost_USD] > 100), "ResellerSales_USD"[SalesAmt] )-
Pirmoje formulės dalyje nurodoma viena iš „Power Pivot“ grupavimo funkcijų, į lentelę reaguojanti kaip į argumentą. SUMX apskaičiuoja visos lentelės sumą.
-
Antroji formulės dalis FILTER(table, expression),nurodoSUMX SUMX, kuriuos duomenis naudoti. „SUMX“ reikalinga lentelė arba išraiška, kurios rezultatas yra lentelė. Užuot naudodami visus lentelėje pateiktus duomenis, naudojate funkciją FILTER, kad nurodytumėte naudojamas lentelės eilutes.
Filtro išraišką sudaro dvi dalys: pirmoji dalis įvardija lentelę, kuriai taikomas filtras. Antroji dalis apibrėžia išraišką, naudotiną kaip filtro sąlyga. Šiuo atveju filtruojate perpardavėjus, pardavusius daugiau nei 5 vienetus gaminių, kainuojančių daugiau nei 100 EUR. Operatorius && yra loginis IR operatorius, nurodantis, kad abi sąlygos dalys turi būti teisingos, jei norite, kad eilutė būtų priskirta antriniam rinkiniui, kuriam buvo pritaikytas filtras.
-
Trečia formulės dalis nurodo funkciją SUMX , kurios vertes reikia susumuoti. Šiuo atveju naudojate tik pardavimų kiekį.
Atminkite, kad tokios lentelę grąžinančios funkcijos, pvz., FILTER, lentelės arba eilučių niekada negrąžina tiesiogiai, bet visada įdedama į kitą funkciją. Daugiau informacijos apie FILTER ir kitas filtruojant naudojamas funkcijas, įskaitant daugiau pavyzdžių, žr. Filtravimo funkcijos (DAX).
Pastaba: Filtro išraišką veikia jo naudojimo kontekstas. Pavyzdžiui, jei naudojate filtrą mate, o matas naudojamas "PivotTable" arba "PivotChart", grąžinamų duomenų antrinį rinkinį gali paveikti papildomi filtrai arba duomenų filtrai, kuriuos vartotojas pritaikė "PivotTable". Daugiau informacijos apie kontekstą rasite DAX formulių kontekstas.
Dublikatų šalinimo filtrai
Be filtravimo siekiant gauti tam tikras reikšmes, galite grąžinti unikalų reikšmių rinkinį iš vienos lentelės arba stulpelio. Tai gali būti naudinga norint suskaičiuoti unikalių reikšmių skaičių stulpelyje arba norint panaudoti unikalių reikšmių sąrašą atliekant kitas operacijas. DAX pateikia dvi skirtingų reikšmių grąžinimo funkcijas: funkcija DISTINCT ir funkcija VALUES.
-
Funkcija DISTINCT tiria vieną stulpelį, kurį nurodote kaip funkcijos argumentą, ir grąžina naują stulpelį, kuriame pateikiamos tik skirtingos reikšmės.
-
Funkcija VALUES taip pat grąžina unikalių reikšmių sąrašą ir Nežinomąjį narį. Tai naudinga, kai naudojate dviejose pagal santykį sujungtose lentelėse pateikiamas reikšmes ir kai vienoje iš jų trūksta reikšmės, o kitoje reikšmė yra. Daugiau informacijos apie nežinomąjį narį rasite skyriuje DAX formulių kontekstas.
Abi šios funkcijos grąžina visą reikšmių stulpelį; todėl naudojate funkcijas, kad gautumėte reikšmių sąrašą, kuris perduodamas kitai funkcijai. Pvz., galite naudoti toliau pateikiamą formulę, kad naudodami unikalų gaminio raktą gautumėte konkretaus perpardavėjo parduodamų skirtingų gaminių sąrašą ir tada naudodami funkciją COUNTROWS apskaičiuotumėte į tą sąrašą įtrauktų gaminių skaičių:
=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
Kaip filtrus veikia kontekstas
Kai DAX formulę įtraukiate į „PivotTable“ arba „PivotChart“, formulės rezultatus gali paveikti kontekstas. Jei dirbate su „Power Pivot“ lentele, kontekstą sudaro dabartinė eilutė ir jos reikšmės. Jei dirbate naudodami „PivotTable“ arba „PivotChart“, kontekstas reiškia duomenų, kuriuos apibrėžia tokios operacijos kaip sluoksniavimas arba filtravimas, rinkinys arba antrinis rinkinys. Savitą kontekstą primeta ir „PivotTable“ arba „PivotChart“ dizainas. Pvz., jei kuriate „PivotTable“ kurioje pardavimai sugrupuojami pagal regioną ir metus, „PivotTable“ rodomi tik tiems regionams ir metams taikomi duomenys. Todėl visi matavimai, kuriuos įtraukiate į "PivotTable", yra skaičiuojami pagal stulpelių ir eilučių antraštes bei visus matų formulės filtrus.
Daugiau informacijos žr. DAX formulių kontekstas.
Filtrų šalinimas
Dirbant su sudėtingomis formulėmis rekomenduojame tiksliai žinoti, kokie filtrai taikomi dabar, arba modifikuoti formulės filtro dalį. DAX pateikia kelias funkcijas, leidžiančias šalinti filtrus ir valdyti, kurie stulpeliai išlaikomi kaip dabartinio filtro konteksto dalis. Šiame skyriuje pateikiama šių funkcijų poveikio formulės rezultatams apžvalga.
Visų filtrų nepaisymas naudojant funkciją ALL
Galite naudoti funkciją ALL, kad nepaisytumėte visų anksčiau pritaikytų filtrų ir grąžintumėte visas lentelės eilutes funkcijai, atliekančiai sveikojo skaičiaus ar kurią nors kitą operaciją. Jei naudojate vieną ar daugiau stulpelių, vietoje lentelės kaip ALL argumentus funkcija ALL grąžina visas eilutes ir nepaiso visų konteksto filtrų.
Pastaba: Jei esate susipažinęs su santykinių duomenų bazių terminija, funkciją ALL galite suvokti kaip generuojančią visų lentelių natūralią kairiąją išorinę sujungimo liniją.
Pvz., įsivaizduokite, kad naudojate lenteles Pardavimai ir Gaminiai ir norite kurti formulę, apskaičiuojančią dabartinio gaminio sumą, padalytą iš visų gaminių pardavimų skaičiaus. Turite atsižvelgti į tai, kad jei formulė naudojama mate, "PivotTable" vartotojas gali naudoti duomenų filtrą tam tikram produktui filtruoti, o eilutėse – produkto pavadinimą. Todėl norėdami gauti tikrąją vardiklio reikšmę nepriklausomai nuo bet kokių filtrų arba sluoksniavimo priemonių, turite įtraukti funkciją ALL, kad nepaisytumėte filtrų. Toliau pateikta formulė – pavyzdys, kaip naudoti ALL formulę norint nepaisyti anksčiau naudotų filtrų:
=SUM (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales, ALL(Products)))
-
Pirmoje formulės SUM (Sales[Amount]) dalyje apskaičiuojamas skaitiklis.
-
Suma atsižvelgia į dabartinį kontekstą, o tai reiškia, kad jei įtrauksite formulę į apskaičiuojamąjį stulpelį, bus taikomas eilutės kontekstas ir, jei įtrauksite formulę į "PivotTable" kaip matą, bus taikomi visi "PivotTable" taikomi filtrai (filtro kontekstas).
-
Antroje formulės dalyje apskaičiuojamas vardiklis. Funkcija ALL nepaiso visų filtrų, kurie gali būti taikomi lentelei Products.
Daugiau informacijos, įskaitant išsamius pavyzdžius, žr. Funkcija ALL.
Konkrečių filtrų nepaisymas naudojant funkciją ALLEXCEPT
Funkcija ALLEXCEPT taip pat nepaiso esamų filtrų, bet galite nurodyti išsaugoti kai kuriuos esamus filtrus. Stulpeliai, kuriuos įvardijate kaip funkcijos ALLEXCEPT argumentus, nurodo, kurių stulpelių filtravimas bus tęsiamas. Jei norite nepaisyti daugelio, bet ne visų stulpelių filtrų, funkcija ALLEXCEPT yra patogesnė nei funkcija ALL. Funkcija ALLEXCEPT itin naudinga kuriant „PivotTables“, kurios gali būti filtruojamos daugelyje skirtingų stulpelių, o jūs norite valdyti formulėje naudojamas reikšmes. Daugiau informacijos, įskaitant išsamų funkcijos ALLEXCEPT naudojimo "PivotTable" pavyzdį, žr. Funkcija ALLEXCEPT.