a FILTER függvény
2019-09-20    Excel 2019
Ha a DAX-képlettel nem a teljes táblát kívánjuk feldolgozni, akkor szűrő-függvényekkel kell meghatároznunk a művelet hatókörét. Ma­gya­rul, a szűrő-függvénnyel válogathatjuk ki azokat a rekordokat, amelyeket a bővítménynek a gazda-képlet kiértékelésekor figyelembe kell vennie. A szelektálás a felhasználó által szerkesztett feltétel-rendszeren alapul. A szűrő-kifejezéseket az alkalmazott függvény feltétel-ar­gu­men­tu­ma­i­val kell deklarálnunk.
    A két-argumentumos FILTER a függvény-család reprezentása. Első argumentumával a feldolgozandó táblát kell deklarálnunk, amely nem csak valós hanem virtuális tábla is lehet. A szűrő-kifejezést a függvény második argumentumában kell összeállítanunk. Példánk egy két-táblás adatbázis legyen: „munkahelyek” és „munkatársak”. Kimutatással vizsgálni szeretném a vállalatnál dolgozó, fiatal nők helyzetét.
DAX, FILTER függvény, példa
Mivel a munkatársak táblában nincs rögzítve sem a munkatársak neme, sem születési dátuma, ezért a kollégák nemét és életkort a „sze­mé­lyi szám” mező segítségével állapíthatjuk meg. Az „fnők” egyéni összesítés képlete két beágyazott FILTER függvényt tartalmaz: a külső le­vá­lo­gat­ja az 1979 után születetteket, azokból a női rekordokból, amelyeket az első argumentumában álló, belső FILTER függvény vá­laszt ki a mun­ka­tár­sak táblából. Az így kapott rekordokat a COUNTROWS függvénynyel számoltatjuk meg.
DAX, több feltétel egymásba ágyazott FILTER függvényekkel
A TRUNC függvény funkciója és működése azonos a program CSONK függvényével: az első argumentumával meghatározott számot, a második argumentumával meghatározott számjegyre alakítja át, a számegyenesen a nulla felé „mozdulva” el! A MOD függvény pedig a prog­ram MARADÉK függvényének megfelelője: az első argumentumával meghatározott számot elosztja a második argumentumával dek­la­rált számmal és az osztási maradékot adja eredményül!
    Ezzel a két FILTER-rel kicsit bonyolult ez a képlet Tanító bácsi! Miért nem használunk logikai operátort? Igazad van Pistike! Csináljuk meg úgy is!
DAX, FILTER függvény, több feltétel logikai operátorokkal összekötve
A képen az ÉS logikai operátort kék betűszínnel emeltem ki. A fenti módszerrel egyetlen FILTER függvénnyel is eredményre jutottunk. Most vegyünk egy összetett feltétel-rendszert tartalmazó feladatot! Állapítsuk meg a bajai és a váci telephely dolgozóinak számát, de csak azo­kat a kollégákat vegyük számba, akinek legalább kilenc bónusz-pontjuk van!
DAX, FILTER függvény, több feltétel logikai operátorokkal összekötve
A RELATED függvénynek nincs a programban megfelelője: segítségével kérdezhetjük le a kapcsolódó rekord adott mezőjében álló be­jegy­zést. Egyetlen argumentuma a mezőnév.
    Adatnézetben a teljes táblára vonatkozóan az egyéni összesítés eredménye száznegyvennyolc. Ahhoz képest, hogy a munkatársak táb­lá­ban összesen tíz rekordban találunk kilences vagy tízes bejegyzést, ez kissé soknak tűnik. A jelenség magyarázata: a DAX-ban a két lo­gi­kai operátor nem egyenrangú, tehát a kiértékelés nem balról jobbra halad, hanem először az ÉS azután a VAGY kifejezések lesznek ki­ér­té­kel­ve. Természetesen zárójelek vagy az IN operátor használatával már a helyes eredményre jutunk.
DAX, FILTER függvény, több feltétel kiértékelésének sorrendje
A felső képletben zárójelekkel, az alsóban az IN operatorral kényszerítettük ki a helyes kiértékelési sorrendet. Ha az IN operátor listája a szo­ká­sos, és nem kapcsos zárójelek között áll, akkor a #HIBA karakterláncot kapjuk eredményül. A hiba okaként ezt az üzenetet ol­vas­hat­juk: «Szemantikai hiba: A következő operátor vagy kifejezés ebben a környezetben nem támogatott: „()”.» Természetesen ez nem sze­man­ti­kai, hanem szintaktikai hiba.
    Ne felejtsük el, hogy a DAX-nak nincs NOT IN operátora, tehát az IN tagadása közvetve történik. Például, hányan dolgoznak a vállalatnál a bajai és a váci telephely munkatársai kivételével?
DAX, FILTER függvény, az IN szócska tagadása
A feltétel deklarálása a CONTAINSROW függvénnyel is történhet. Hányan dolgoznak az „előkészítés”-ben illetve a „gyártás”-ban. Ez a két te­rü­let a munkahelyek tábla részleg mezőjének egy-egy tétele.
DAX, FILTER függvény, feltétel a CONTAINSROW függvénnyel
A függvény első argumentuma kapcsos zárójelek között, pontosvesszővel elválasztva tartalmazza a második argumentumában álló mező számításba veendő tételeit. A kapcsos zárójelek itt is a VAGY logikai viszony alkalmazását jelentik. De a függvény kezelni tudja a logikai ÉS viszonyt is. Lássunk erre is egy példát.
DAX, CONTAINSROW függvény
Ezzel a képlettel a hét bónusz-pontos bajai előkészítők és a hatpontos váci gyártók létszámát kapjuk meg. A CONTAINSROW függvény el­ső argumentuma ebben a képletben is a számításba veendő tételeket tartalmazza kapcsos zárójelek között, de most két zárójeles cso­port­ban. A két zárójeles egység és a zárójelek között álló tételek is pontosvesszővel vannak elválasztva. A két zárójeles egység VAGY, a zá­ró­je­le­ken belül álló tételek ÉS logikai viszonyban vannak egymással. A függvény további argumentumai a szűrt mezők, a zárójelek között ál­ló té­te­lek­kel azo­nos sorrendben. Valahogy így:
DAX, CONTAINSROW függvény argumentum-listája
A CONTAINSROW függvényről, a névkiegészítős bevítel során megjelenített leírás valamint a szerkesztés közben látható ar­gu­men­tum­lis­ta hibás! Sőt a szerkesztést követő hibaüzenet szövege sem igaz. De legalább működik Tanító bácsi! Ez Igaz Pistike!
  ismertető letöltése pdf-ben   munkafüzet letöltése
margitfalvi.arpad@gmail.com