PowerBI之時間智能函數詳解(一)


  關於時間智能函數,我只能用NB兩個字來形容了。如果說CALCULATE是靈魂,那時間智能函數就是PBI的任督二脈了。如果想要練得絕世神功,就必須要將它們打通。它們可以幫你創建使用內置日歷和日期有關的知識的計算。通過使用組合與聚合或計算的時間和日期范圍,然后在銷售、 庫存、 可比較的時間段生成多維度的比較。還能支持在年,季,年中,月,周,日等等任意時間周期隨意轉換調整。

    既然時間智能函數這么強大,那還等什么呢?還不趕緊搞起來

話不多說,咱們直接開干吧!時間智能函數大概有35個,我計划將它們大卸三塊,然后慢慢的一層層剝開。今天搞的第一塊有12個函數,接下來一個一個的上了。

1、CLOSINGBLANCEMONTH        在當前月份的最后一個日期計值的表達式。

  說人話就是:這個函數可以返回一個值,這個值可以是任意數據類型。這個值是該表中最大日期對應的一個值。如果涉及到行上下文,這個值是該表中該月最大日期對應的一個值

  語法:

CLOSINGBALANCEMONTH ( <表達式>, <日期列>, [<篩選器>] )

  上案例:

 

  上述數據中有6月和7月2個月份上海和湖北的銷售件量情況。

  問題1:我想知道最后一個銷售日期的省份是誰?(這里肉眼可見是7月1日那天,上海)那如何讓PowerBI幫我們找呢?畢竟我這里只是個案例,數據很少。

該月最后一個銷售日的銷售省份是誰 = CLOSINGBALANCEMONTH(VALUES('業務表'[省份]),'業務表'[日期])

 

 

 

  注意了,這里返回的可是一個文本型哦!是不是非常的神奇。這里Values純粹只是起到一個充當表達式的作用。第三參數我沒有輸入。第一參數我還是計算銷售件量,這樣返回的就是一個數值型

 

  如果我再帶上一個篩選條件,那又會是什么樣呢?

 

這里說明第二參數與第三參數是一個取交集的關系,很顯然7月1日與湖北沒有交集,不信咱們把第三參數里的湖北改成上海試試。

 

 

 

 

  問題2:上面是把CLOSINGBALANCEMONTH用在了篩選上下文中,那如果放在行上下文中又是什么個情況呢?

 

這就讓人蒙圈了,這里居然顯示了兩個值。大家是不是忘記了這里實在行上下文中,那6月的最后一個銷售日是6月30日,對應是省份是上海。7月只有一個銷售日,對應的也是上海。這樣為了讓大家理解,我把湖北的數據再加一個7月2號試試,看7月的最后一個銷售日期的省份會不會變成湖北。

   果然不出所料,7月的最后一個銷售日的省份變成了湖北。那看到這里想必大家都CLOSINGBALANCEMONTH應該已經完全理解了吧!那同樣的道理CLOSINGBALANCEQUARTER和CLOSINGBALANCEYEAR的用法和該函數的用法肯定完全一致,只不過把時間拉長到了季度和年了而已。

  2、OPENINGBALANCEMONTH  在當前上下文中月份的第一個日期計值的表達式。

  目前全網所有資料對這個函數的解釋是返回在當前上下文中月份的第一個日期計值的表達式。但是我計算出來的結果卻是返回上一個的最后一天的表達式。而且用法與CLOSINGBALANCEMONTH的用法也是有所區別的。

返回該行上下文里上一個的最后一天的結果 = OPENINGBALANCEMONTH(sum('業務表'[件量]),'業務表'[日期]) 

 

  針對上面全網解釋跟實際情況不一致的問題,我已請教過行業專家,結果等待回復中,那在這里對OPENINGBALANCEMONTH、OPENINGBALANCEQUARTR、OPENINGBALANCEYEAR暫時就不多做解釋了。后面得到結果會准時跟大家分享。

3、ENDOFMONTH    返回當前月份的最后一天

  語法

ENDOFMONTH ( <日期列> )

 

   通過上面的銷售表可以看出該表中最大的日期是2021/7/2,那我們輸入該函數必定也是返回這個值了。

該表中最大日期 = ENDOFMONTH('業務表'[日期])

 

那一般的情況我們不會單獨使用這個函數,一般會配合CALCULATE對表格中的一些數據進行求和或者計數。例如:

最后一天的業務量 = CALCULATE(sum('業務表'[件量]),ENDOFMONTH('業務表'[日期]))

 

  這樣計算出來的結果就可以和某些日期產生的業務量進行一個縱向的比較。

  ENDOFMONTH還可以放在行上下文當中,例如:

  

 

   這里返回的結果通過前面上下文篩選后得出各省個月最后一個日期的結果了。注意:如果該省該月只有1號1天的數據,結果會返回空。

  ENDOFQUARTER、ENDOFYEAR的用法與ENDOFMONTH的用法基本一致,在這里我就不在贅述了。

 4、STARTOFMONTH   返回當前月份的第一天。

  START  和   END 本來就是一對反義詞,所以用法想必不會有什么太大的區別。

  語法:

該表中最小日期 = STARTOFMONTH('業務表'[日期])

 

      

 

 

 

 

 

 

其他的案例請參考ENDOFMONT,在這里我也不再啰嗦了。那同樣的道理STARTOFQUARTER 和STARTOFYEAR的用法和STARTOFMONTH也是一樣的,大家不會的可以參考STARTOFMONTH。

 

本小節內容就講完了,非常感謝大家的觀看,如果有描述的不對的地方還請多多指點。最后還是需要大家多多練習,才能掌握其中的全奧秘。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM