<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>

          如何在 PowerBI 中快速調(diào)試上百行 DAX 公式

          共 1539字,需瀏覽 4分鐘

           ·

          2022-01-20 13:01

          作為剛剛開始寫 DAX 公式的小伙伴,會遇到一個非常明顯的問題,那就是:我怎么知道我的 DAX 公式在某一步算出來了什么。

          DAX 公式的特點

          DAX 公式是可以嵌套的,且中間是可以產(chǎn)生出表的,但最終以度量值呈現(xiàn)的結(jié)果必須返回值。

          也就是說,不論中間步驟產(chǎn)生了多么復雜的表結(jié)構(gòu),最后必須返回一個值。

          這就導致很多伙伴希望知道中間過程中的表到底與預期是否一致。

          典型的錯誤

          來看一個典型的錯誤信息:

          Power BI 的錯誤信息并不友好,真不知道產(chǎn)品經(jīng)理是怎么想的,一旦出現(xiàn)錯誤就給出一個恐怖的差子,而且還就是這么設計的,導致很多伙伴遇到這樣的恐怖信息就望而卻步了。

          這里首先要告訴大家的是:不必擔心自己編寫的 DAX 公式,它們不會在本質(zhì)有任何負面破壞性效果,僅僅是無法計算出來結(jié)果而已。

          分析錯誤信息

          排除錯誤信息的第一步,是要分析錯誤信息,如下:

          絕大多數(shù)伙伴遇到這步的第一反應是:

          啊,出錯了。啊!哪里錯了?然后就點擊【關閉】了。然后就去思考自己的公式哪里出錯了。

          這是不正確的表現(xiàn),因為這個信息非常重要,它可以告訴我們問題是什么,至少可以幫助我們鎖定問題出現(xiàn)的位置。

          我們仔細來看下這個信息:

          百分位數(shù)值必須介于 xxxx 范圍之間,其中 N 是數(shù)據(jù)值的個數(shù)。

          這個信息幾乎可以幫助我們鎖定出現(xiàn)問題的位置是百分位數(shù)的計算位置。

          進行調(diào)試

          回到 DAX 公式中,大概如下:

          不難發(fā)現(xiàn)錯誤是在這里引起的。

          很多伙伴看到這么長的公式直接就放棄了,但是的確可以進行調(diào)試。而不需要借助復雜的工具。

          首先來確定是不是這個公式引起的,可以替換為一個特征值,如:9999999。如下:

          效果如下:

          可以看出:此時的錯誤消除了,而返回了特征值,說明:定位的錯誤位置是正確的

          接下來,就是要分析這個錯誤到底是為什么了。

          這時候的技巧在于三點:

          • 【技巧一】再次審視錯誤信息。

          • 【技巧二】看函數(shù)中涉及的中間表數(shù)據(jù)。

          • 【技巧三】分析函數(shù)的執(zhí)行過程。(可能涉及到上下文轉(zhuǎn)換)

          如果可以同時考慮到上述三點,幾乎 80% 的錯誤就可以被分析出來。我們來試一試。

          先來看【技巧一】錯誤信息:

          百分位數(shù)值必須介于 1/(N+1) ... N/(N+1) 范圍之間,其中 N 是數(shù)據(jù)值的個數(shù)。

          也就是說,錯誤來自于數(shù)值的范圍不對。我們嘗試代入:

          N = 1,則:1/2 ... 1/2

          N = 2,則:1/3 ... 2/3

          而我們使用的公式是:

          PERCENTILEX.EXC( SoldDaysList , [已售在庫天數(shù)] , 0.75 )

          這個公式中用到了一個表中的元素 [已售在庫天數(shù)],后面的參數(shù) 0.75 必須介于合理的范圍之間,如果:

          N = 1 或 N = 2,都會導致這個公式錯誤,那么 SoldDaysList 的 [已售在庫天數(shù)] 會有多少個元素呢?

          我們需要提取 SoldDaysList 的信息,就需要【技巧二】了,如下:

          得到:

          這個元素的確很多,還可以看到:

          這個元素只有一個,因此正好命中了錯誤信息的含義。

          我們找到了問題所在。

          調(diào)整公式如下:

          返回的結(jié)果不再報錯。問題得解。

          當然,如果這個語義不合理,可以進一步調(diào)整公式。但已經(jīng)至少排除了錯誤本身。

          總結(jié)

          DAX 公式的調(diào)試的確是一個問題,這里給出了不依賴任何第三方工具,完全依靠邏輯上的分析以及 CONCATENATEX 這個既具技巧的函數(shù)來返回中間表內(nèi)容結(jié)果以便排除問題的過程。

          與精英一起討論 Power BI,驗證碼:data2022

          點擊“閱讀原文”進入學習中心

          瀏覽 58
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  99久久久国产精品无码 | 人人妻人人操人人 | 日韩欧美人妻无码精品 | 夜夜操av | 黄色片大女人吃大鸡巴老头子日大逼逼 |