• HAQQIMIZDA
  • MƏQALƏLƏR
    • Excel&Power Pivot
    • Power BI
      • A-dan Z-ə Power BI
      • DAX
      • Dashboards
  • VİDEOLAR
    • Excel&Power Pivot
    • Power BI
      • A-dan Z-ə Power BI
      • DAX
      • Dashboards
  • XƏBƏRLƏR
  • ƏLAQƏ
Data analitikası üzrə peşəkar tədris platforması
Haqqımızda

DATA LINEAGE

22noy
DAX Baxış sayı: 411 Şərh sayı: 0

DATA LINEAGE  NƏDİR

Data  lineage (datanın mənşəyi) DAX (FE)’in daxili işləyiş prinsipine əsasən, modelin her bir sütununa təyin edilən etiketdir.Hər bir sütunun özunəməxsus data lineage'i  vardır ve bu özəllik ancaq modeldə fiziki olaraq var olan sütunlara xas bir özəllikdir.Her bir model sütunu ilkin vəziyyətdə data lineage’ə sahibdir.Biz bunu fabrik data lineage’i adlandıracayiq.DAX funksiyları tərkibində sadə sütun referansı göstərilən təqdirdə fabrik data lineage’i qorunur (ADDCOLUMNS istisnadır,ADDCOLUMNS vasitəsilə əlavə edilən sütunlar sadə sütun referansı olsa belə, data lineage qorunmur):

EVALUATE

 

    VAR FilterTablo =

    SELECTCOLUMNS(

        CALCULATETABLE(

            VALUES('Date'[Year]),

            'Date'[Year] = "2006"),

        "yeni_il_sütunu", CALCULATE(MAX('Date'[Year]))  )

 

    RETURN

 

        ADDCOLUMNS(

            FilterTablo,

            "SatisMiqdari", [satismiqdari]  )



Fikir verirsinizsə,"yeni_il_sütunu" sadə sütun referansı nəticəsində yarandı -'Date'[Year].Aşağdakı tablodan göründüyü kimi nəticə doğrudur.DAX motoru “2006” dəyərinin Date[Year] sütununa mənsub olduğunu anlayır.Sütunun adı da dəyişsə bele, fabrik lineage’i toxunulmaz qalır.

EVALUATE

VAR FilterTablo =

    SELECTCOLUMNS (

        CALCULATETABLE ( VALUES ( 'Date'[Year] ), 'Date'[Year] = "2006" ),

        "yeni_il_sütunu", CALCULATE ( MAX ( 'Date'[Year] ) )

    )

RETURN

    ADDCOLUMNS ( FilterTablo, "SatisMiqdari", [satismiqdari] )


Bir öncəki nümunədən fərqli olaraq, bu dəfə sadə sütun referansı yerinə ifadə -CALCULATE(MAX('Date'[Year])) istifadə etdik və nəticə göz qabağındadır:



DATA LINEAGE VƏ FİLTERLƏRİN YAYILMASI

Bəzən DAX developer hər hansı bir kod yazarkən həmin koda müəyyən filtrlər daxil edir ki, bu filtrlər özlüyündə crossfilter direction sayəsində digər tabloları filtrləyir.Bu, DAX-ın normal davranışıdır.Amma bu prosesin arxa tərəfində motor, filtrin gəldiyi sütunun əslində hansı sütun olduğunu, modeldəki yerini, digər tablolarla əlaqələrini və s. data lineage vasitəsilə anlayır. Məsələn, belə sadə DAX kodu yazıb, illər üzrə satış miqdarlarını hesablamaq istəyirik (datalar reallığı əks etdirmir, tədris məqsədi daşıyır).

EVALUATE

ADDCOLUMNS (

    VALUES ( 'Date'[Year] ),

    "SatisMiqdari", FIXED ( CALCULATE ( SUM ( Sales[Quantity] ) ), 0, FALSE () )

)


Kodun nəticəsi olaraq döndürülən tablo yuxarıdakı kimidir. Tablodan gördüyümüz kimi, 2006-cı ildə satış miqdarı 11,544 əd., 2007-ci ildə 10,760 əd., 2016-cı ildə satış olmayıb və s. Sətirlərdəki Date[Year] dəyərlərinin ‘Date’ tablosundan gəldiyi aydındır. ‘Date’ tablosunun modeldə ‘Sales’ tablosu ilə one-to-many (birə çox) fiziki aktiv əlaqəsi var və bu əlaqə Date[Date] və Sales[Date] sütunları üzərindən qurulub. O zaman belə bir sual yaranır: DAX motoru birinci sətirdəki "2006" dəyərinin Date[Year] sütunundan gəldiyini necə anlayır və necə bilir ki, context transition nəticəsində "2006" dəyərində olan filter ‘Sales’ tablosuna yayılmalı və ‘Sales’ tablosu crossfiltrlənməlidir? Cavab çox sadədir–data lineage vasitəsilə.DAX həmin "2006" dəyərinin Date[Year] sütunundan gəldiyini, bunun sıradan bir dəyər olmadığını, o sütundan başlayan filtrin yayılma istiqamətini məhz data lineage sayəsində anlayır.Aşağıdakı koda baxın, DATATABLE ilə ‘Date[Year]’ sütununu döndüren bir DAX ifadəsi yazdıq və həmin sütuna eynilə ADDCOLUMNS vasitəsilə sütun əlavə edib, satış miqdarını hesabladıq

EVALUATE

VAR DateYear =

    DATATABLE (

        "Date[Year]", STRING,

        {

            { "2006" },{ "2007" },{ "2008" },{ "2009" },{ "2010" },{ "2011" },{ "2012" },

            { "2013" },{ "2014" },{ "2015" },{ "2016" },{ "2017" },{ "2018" }

        }

    )

RETURN

    ADDCOLUMNS (

        DateYear,

        "SatisMiqdari", FIXED ( CALCULATE ( SUM ( Sales[Quantity] ) ), 0, FALSE () ))




Nəticə olaraq, hər sətir üçün eyni satış miqdarları hesablandı.DAX ifadəsi içərisində statik yaradılan tablo modele aid deyil və dolayısı ilə data lineage-ə sahib deyil. Yəni, "2006", "2007", DAX motoru üçün sadəcə sıradan bir sayıdır; özlüyündə ‘Sales’ tablosunu filterləyə bilməz və modeldəki tablolar arasındakı filter axışında heç bir rolu yoxdur.Nə sütunun adı önəmlidir, nə də kontenti.Sütunun adını belə dəyişsək, data lineage qorunur.

EVALUATE

    ADDCOLUMNS(

        SELECTCOLUMNS(

            VALUES('PRODUCT'[Color]),

            "ColorName", 'PRODUCT'[Color]

        ),

        "SatisMiqdar", CALCULATE(SUM(Sales[Quantity]))

    )

 



Yuxaridaki kodda PRODUCT'[Color] sütunun adını "ColorName" olaraq dəyişdirsək də, nəticələr doğrudur:




DATA LINEAGE’IN MANUAL DEYISDIRILMESI

Bir sütunun data lineage’ni manipulyasiya etməyin bir neçe yolu var. Bunlardan biri - INTERSECT. (DAX funksiyaları, onların sintaksisi və s. haqqında ətraflı məlumatı Microsoftun rəsmi səhifəsində tapa bilərsiniz. Məqsədimiz DAX-in önəm kəsb edən mövzularını ələ almaq olduğuna görə, bu mövzulara çox toxunmuruq). INTERSECT iki tablonun kəsişməsini döndərən DAX ifadəsidir. INTERSECT funksiyasının önəmli xüsusiyyətlərindən biri odur ki, nəticə olaraq döndərilən tablo birinci tablonun data lineage’ə sahib olur.


INTERSECT(<tablo_ifadesi1>, <tablo_ifadesi2>)

Yeni INTERSECT(a, b) = “a” və “b” tablolarının kəsişməsindən yaranan “c” tablosunu döndərəcək və bu tablo “a” tablosunun data lineage’ni daşıyacaq. Burdan yola çıxaraq əvvəlki kodu aşağıdakı şəkildə dəyişdirsək, tam da istədiyimiz nəticəni əldə edə bilərik.


EVALUATE

VAR DateYear =

    DATATABLE (

        "Date[Year]", STRING,

        {

            { "2006" },{ "2007" },{ "2008" },{ "2009" },{ "2010" },{ "2011" },{ "2012" },

            { "2013" },{ "2014" },{ "2015" },{ "2016" },{ "2017" },{ "2018" }

        }

    )

RETURN

    ADDCOLUMNS (

        INTERSECT ( VALUES ( 'Date'[Year] ), DateYear ),

        "SatisMiqdari", FIXED ( CALCULATE ( SUM ( Sales[Quantity] ) ), 0, FALSE () )

    )




Bu səfər yeni sütunu INTERSECT ilə yaradılan tabloya əlavə etdik, döndərilən tablo ‘Date[Year]’ data lineage’ni qoruyur və ‘Sales’ tablosunu bu dəfə filtrələyə bilir.Sütunun data lineage’i dəyişmək üçün geniş istifadə olunan digər DAX funksiyası isə TREATAS-dır. TREATAS'in sintaksisinə nəzər salsaq, ilk argumenti tablo, digər argumentləri isə sütun referansları tələb edir:

TREATAS(tablo_ifadesi, <sütun>[, <sütun>[, <sütun>[,…]]]} ) 

Birinci argumentdəki tablonun hər bir sütununa, ardıcıl olaraq ikinci argumentdəki sütunların data lineage’ni əlavə edir və birinci tablonu döndərir. Bunu yuxarıdakı DAX kodunda özünüz də test edə bilərsiniz. Gəlin başqa bir nümunəyə baxaq:

EVALUATE

VAR NewTableWithColor =

    DATATABLE ( "Color", STRING, { { "White" }, { "Black" } } )

RETURN

    ADDCOLUMNS (

        NewTableWithColor,

        "SatisMiqdari", CALCULATE ( SUM ( Sales[Quantity] ) )

    )




DATATABLE ilə yaradılan tablonun data lineage-i olmadığından ‘Sales’ tablosu filtrələnmədi və hər sətir üçün eyni dəyər döndərildi. Bu aydındır. Gəlin indi TREATAS ilə “Color” sütunun data lineage'ni dəyişək:

EVALUATE

VAR NewTableWithColor =

    DATATABLE ( "Color", STRING, { { "White" }, { "Black" } } )

RETURN

    ADDCOLUMNS (

        TREATAS ( NewTableWithColor, 'PRODUCT'[Color] ),

        "SatisMiqdari", CALCULATE ( SUM ( Sales[Quantity] ) )

    )




TREATAS vasitəsilə “NewTableWithColor” tablosuna ‘PRODUCT[Color]’ sütununun data lineage’ni yüklədik. Artıq “NewTableWithColor” tablosunun “Color” sütunu ‘Product[Color]’ sütununun data lineage’ni daşıyır. Beləliklə, ‘Sales’ tablosuna filter yayılması mümkün olur.
 

DAX dünyasında data lineage mövzusu olduqca önəmli yer tutur. Bu mövzuya hakim olmaqla siz, istənilən virtual tablonu filter contexte əlavə edə, hətta mövcud sütunların data lineage’ni qıraraq və ya mövcud sütunların data lineage’ni dəyişərək modeldəki filter axışının məcrasını dəyişə biləcəksiniz. Əsas olan DAX funksiyalarının sintaksisini əzbərdən bilmək deyil, DAX-in onurğa sütununu təşkil edən mövzuların məntiqini anlamaqdır.








Faylı yükləmək üçün aşağıdakı linkə keçid edin  



Paylaş :
Oxşar mövzular
DATA LINEAGE
22-11-2024, 15:30

DATA LINEAGE

SET FUNKSIYALAR
21-11-2024, 15:35

SET FUNKSIYALAR

Şərhlər (0)
Sizin reklam burada

Vennboo.com-un məlumatlarından istifadə etdikdə istinad mütləqdir.© Copyright © 2024. Müəllif hüquqları qorunur.Məlumat internet səhifələrində istifadə edildikdə müvafiq keçidin qoyulması mütləqdir.

  • Ana səhifə
  • Haqqımızda
  • Xəbərlər
  • Bizimlə əlaqə

Əlaqə
info@vennboo.com

© Copyright © 2024. Müəllif hüquqları qorunur.Məlumat internet səhifələrində istifadə edildikdə müvafiq keçidin qoyulması mütləqdir.