Power Pivot #20 – DAX-da Filter kontekstinin sadə izahı

Power Analytics

Power Pivot və DAX haqqındakı yazıların demək olar hər birində filter kontekstindən dəfələrlə söz etmişik. Müəyyən hallarda qaranlıq qalan bir mövzu olması baxımından, bu yazıda filter kontekstini daha ətraflı şəkildə ələ alacaq, sadə, lakin diqqət tələb edən yönlərini müzakirə edəcəyik.

Şəkil 1. Cədvəl və fərqli növ filterlərimiz

DAX dilini ənənəvi Excel-dən fərqləndirən inqilabi özəlliklərdən biri evaluation context adlandırılan, hesablamaların müəyyən kontekst çərçivəsində həyata keçirildiyi, yəni “ətrafda baş verən” hadisələr işığında hesablamalar apardığıdır. DAX haqqındakı 4-cü yazımızda evaluation kontekstin 2 fundamental komponenti olan Row ContextFilter Context olduğunu qeyd etmişdik.


Filter Context nədir?

Şəkil 1-dəki cədvəli, gəlin, yaxından analiz edək və, məsələn, Şəkil 2-dəki mavi xananın hansı prinsiplərlə hesablandığını anlamağa çalışaq.

Şəkil 2. Filter kontekstinin komponentləri

Sual isə belədir – Şəkil 2-dəki göy fondakı dəyər (eyni şəkildə digər bütün dəyərlər) hansı komponentlər hesabına formalaşmışdır?


Cavab – 178,835 dəyərini formalaşdıran 5 fərqli komponent var:

  1. DAX-ın arxa fonundakı Measure
  2. Customer slicer-ındakı Amazon
  3. Product slicer-ındakı DVD-player
  4. Sütunlar (2017-ci il)
  5. Sətirlər (May ayı)

Başqa deyişlə, Amazon şirkətinə aid DVD-player-ların 2017-ci il May ayındakı ümumi satışlarının cəmi.

Şəkil 3. Dəyərləri formalaşdıran komponentlər


Filter kriteriyalarının tətbiqi

Kriteriyalar tətbiq edildikdən sonra, arxa fondakı DAX, müvafiq cədvəldəki bütün sətirləri bir-bir yoxlayaraq Şəkil 3-dəki 4 kriteriyaya eyni anda uyğun olub-olmadıqlarını yoxlayır. Əməliyyat o qədər sürətli baş verir ki, bu kriteriyaları eyni anda təmin edən bütün sətirlər filterlənərək yeni virtual cədvəl qurulur. Və yalnız bu cədvəl qurulduqdan sonra, DAX müvafiq measure-ı cəlb edərək, hesablamanı aparır.

Vacib Qeyd!

Hesablama, yalnız müvafiq filter kontekstləri bəlirləndikdən sonra aparılır. Düşünülməsin ki, bütün cədvəl hesablanır, daha sonra filter ilə lazımsız sətirlər atılır. Tam tərsi, hesablama, yalnız filterləri təmin edən sətirlər müəyyən edildikdən sonra aparılır.


Bu səbəblə də DAX, böyük həcmli dataları “çeynəməkdə” ənənəvi Excel-dən hər zaman daha sürətli, DAX olan fayllar hər zaman həcmcə daha kiçik olacaqdır.

Son olaraq, Excel-dən bizə tanış olmayan bəzi filter funksiyalarına misallar vermək istərdim – ALL, ALLSELECTED, FILTER, CALCULATE, DISTINCT və s. Bu DAX funksiyaları da arxa fonda cədvəlləri filterləməyə yarayır.  Hər biri ilə üzərinə klikləyərək bir daha tanış ola bilərsiniz.

Uğurlar!