<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何理解 DAX 數(shù)據(jù)沿襲

          共 2844字,需瀏覽 6分鐘

           ·

          2021-11-16 04:56

          數(shù)據(jù)沿襲,這個(gè)詞匯,相當(dāng)生僻,很多小伙伴都問(wèn)這個(gè)什么意思,以及如何去使用他。那本文就來(lái)幫大家理解這個(gè)事物。

          數(shù)據(jù)沿襲

          數(shù)據(jù)沿襲(data lineage),表示數(shù)據(jù)的一種本質(zhì)聯(lián)系。

          舉一個(gè)例子,如下:

          在?SUMX?進(jìn)行計(jì)算的時(shí)候,問(wèn)題來(lái)了:

          • vTable,是一個(gè)孤立的表嗎?

          • vTable,是一個(gè)與原數(shù)據(jù)模型實(shí)際保持關(guān)聯(lián)的表數(shù)據(jù)嗎?

          從?SUMX?的計(jì)算結(jié)果來(lái)看,這的確是總計(jì)結(jié)果。

          這說(shuō)明,在針對(duì) vTable 進(jìn)行計(jì)算時(shí)候,進(jìn)行的上下文轉(zhuǎn)換,的確由于篩選上下文對(duì)模型有實(shí)際的影響,這說(shuō)明:

          雖然 vTable 是通過(guò) VAR 獨(dú)立構(gòu)建的,但它依然保持著在實(shí)際數(shù)據(jù)模型中的數(shù)據(jù)血緣關(guān)系。

          進(jìn)一步的案例

          如果剛剛的案例沒(méi)能讓你覺(jué)得有什么特別,那么請(qǐng)看這個(gè)例子:

          DataLineage.Demo = 
          VAR vTable = SELECTCOLUMNS( DISTINCT( 'Product'[Category] ) , "Item" , 'Product'[Category] )
          RETURN SUMX( vTable , [KPI] )

          現(xiàn)在,用 VAR 構(gòu)建的 vTable 的過(guò)程是:

          第一步,先計(jì)算?DISTINCT( 'Product'[Category]?得到一個(gè)過(guò)程中的表;

          第二步,再通過(guò)?SELECTCOLUMNS?取出上述過(guò)程表的?'Product'[Category]?列,并更名為:Item;

          第三步,針對(duì)這個(gè) vTable 計(jì)算度量值后求和。

          我們看看最后的結(jié)果:

          可以看出,與此前的結(jié)果是一致的。

          也就是說(shuō),不管我們?cè)谥虚g的計(jì)算過(guò)程再增加多少過(guò)程,如果其本質(zhì)只是針對(duì)數(shù)據(jù)模型中的列的獲取,那都不會(huì)改變數(shù)據(jù)模型本身,也就不會(huì)改變計(jì)算過(guò)程中數(shù)據(jù)與數(shù)據(jù)模型的聯(lián)系。

          一個(gè)反例

          當(dāng)然,我們需要一個(gè)反例來(lái)更好的理解這個(gè)數(shù)據(jù)沿襲,如下:

          DataLineage.Error = 
          VAR vTable = SELECTCOLUMNS( DISTINCT( 'Product'[Category] ) , "Item" , 'Product'[Category] & "" )
          RETURN SUMX( vTable , [KPI] )

          這里的區(qū)別在于:

          在使用?SELECTCOLUMNS?取出元素的時(shí)候,將該列的元素進(jìn)行了計(jì)算,那么雖然元素沒(méi)有變化,但計(jì)算結(jié)果就不再一樣了,如下:

          由于沒(méi)有了數(shù)據(jù)沿襲,在計(jì)算 SUMX 的時(shí)候,vTable 有 3 行,由于其山下文轉(zhuǎn)換沒(méi)有了數(shù)據(jù)沿襲的存在,不再構(gòu)成對(duì)數(shù)據(jù)模型的聯(lián)系,也就不會(huì)篩選數(shù)據(jù)模型,進(jìn)而導(dǎo)致總的結(jié)果是普通計(jì)算結(jié)果的 3 倍。

          進(jìn)一步實(shí)驗(yàn)

          從剛才的反例可以看出,如果破壞了列的元素,就會(huì)丟失數(shù)據(jù)沿襲。

          還可以再做一個(gè)更仔細(xì)的實(shí)驗(yàn),如下:

          DataLineage.Error2 = 
          VAR vTable =
          SELECTCOLUMNS(
          DISTINCT( 'Product'[Category] ) ,
          "Item" , IF( 'Product'[Category] = "家具" , 'Product'[Category] & "" , 'Product'[Category] )
          )
          RETURN SUMX( vTable , [KPI] )

          這個(gè)實(shí)驗(yàn)的特點(diǎn)是,僅僅針對(duì)某個(gè)元素進(jìn)行破壞數(shù)據(jù)沿襲的計(jì)算,而其他元素保持不變,那么可以還會(huì)部分保持?jǐn)?shù)據(jù)沿襲嗎?

          神奇的效果出現(xiàn)了:

          也就是說(shuō),如果某行的計(jì)算并非獲取原始元素,而進(jìn)行了計(jì)算;而其他元素直接獲取原始元素,在這種情況下,是否可以部分保持?jǐn)?shù)據(jù)沿襲?

          請(qǐng)?jiān)诹粞詤^(qū)寫(xiě)下你的看法和你的理解吧。

          當(dāng)然,你可以自己完成這個(gè)實(shí)驗(yàn)里知道這個(gè)結(jié)果是什么。

          數(shù)據(jù)沿襲有什么用

          數(shù)據(jù)沿襲,其本質(zhì)是一種非常自然的存在。請(qǐng)大家考慮一個(gè)經(jīng)典的帕累托積累 % 計(jì)算問(wèn)題,如下:

          針對(duì)這條積累 % 的計(jì)算曲線,考慮以下 DAX 公式:

          ABC.KPI.Cumulate% =
          VAR vCurrentValue = [KPI.Sales]
          VAR vItemList = ALLSELECTED( 'Model_產(chǎn)品'[產(chǎn)品子類別] )
          VAR vItems =
          FILTER(
          vItemList , [KPI.Sales] >= vCurrentValue
          )
          RETURN CALCULATE( [KPI.Sales], vItems ) / CALCULATE( [KPI.Sales] , ALLSELECTED( 'Model_產(chǎn)品'[產(chǎn)品子類別] ) )

          其中,vItemList = ALLSELECTED( 'Model_產(chǎn)品'[產(chǎn)品子類別] )?已經(jīng)將數(shù)據(jù)模型的某列進(jìn)行了暫存,而進(jìn)一步對(duì)其進(jìn)行計(jì)算,得到 vItems,更重要的是在最后的計(jì)算中,vItems 作為 CALCULATE 的篩選參數(shù)是否可以起到篩選的作用呢,畢竟 vItems 已經(jīng)經(jīng)過(guò)了四次轉(zhuǎn)換:

          • 第一次,ALLSELECTED ('Model_產(chǎn)品 '[產(chǎn)品子類別] );

          • 第二次,賦給 vItemList;

          • 第三次,F(xiàn)ILTER;

          • 第四次,vItems。

          在四次轉(zhuǎn)換后所得到的 vItems,即使你理解了上述的數(shù)據(jù)沿襲的概念,但此時(shí)你可以意識(shí)到以下兩個(gè)重要的知識(shí)嗎?

          • 【重要知識(shí)】即使經(jīng)過(guò)多達(dá) 4 次,且包括取出,暫存,過(guò)濾等操作,依然會(huì)保持?jǐn)?shù)據(jù)沿襲,與原有數(shù)據(jù)模型有關(guān)系。

          • 【重要啟發(fā)】可以通過(guò)數(shù)據(jù)沿襲的特性構(gòu)建邏輯清晰但形式多步復(fù)雜的計(jì)算流程,由于數(shù)據(jù)沿襲,整個(gè)計(jì)算流程完全自然與數(shù)據(jù)模型打通。

          上述的?ABC.KPI.Cumulate% ?的計(jì)算邏輯是正確的,而且,這正反應(yīng)了這兩點(diǎn)重要的知識(shí)。

          結(jié)論

          數(shù)據(jù)沿襲,表面是一個(gè)晦澀的概念,但其實(shí)它是數(shù)據(jù)模型在計(jì)算中的自然演化,保持對(duì)數(shù)據(jù)模型的聯(lián)系。

          注意:這里用了 “聯(lián)系” 二字,而沒(méi)有用 “關(guān)系” 二字。請(qǐng)你理解我們想強(qiáng)調(diào)的以及避免的混淆。

          另外,在理解了數(shù)據(jù)沿襲的知識(shí)后,我們通過(guò)上述的【重要啟發(fā)】構(gòu)建很多復(fù)雜的計(jì)算而邏輯清晰,這篇文章就是為了后續(xù)的內(nèi)容做的引子。有了數(shù)據(jù)沿襲,我們就可以設(shè)計(jì)出一些通用的模式,在隨后的文章中會(huì)和大家分享。

          最后,請(qǐng)你猜猜:上述 DataLineage.Error2 的計(jì)算會(huì)不會(huì)保持部分?jǐn)?shù)據(jù)沿襲?請(qǐng)你在留言區(qū)寫(xiě)出你的想法吧。

          在訂閱了BI佐羅講授的《BI真經(jīng)》之《BI進(jìn)行時(shí)》課程區(qū),除了可以下載本文案例,還可以觀看視頻講解。

          Power BI 終極系列課程《BI真經(jīng)》


          BI真經(jīng) - 讓數(shù)據(jù)真正成為你的力量

          掃碼與精英一起討論 Power BI,驗(yàn)證碼:data2021

          點(diǎn)擊“閱讀原文”進(jìn)入學(xué)習(xí)中心


          瀏覽 119
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  特一级一性一交一视频 | 欧美超逼视频 | 午夜激情一级 | 在线一级黄片 | 精品无码久久久久久久久爆乳 |