書名: DAX設計模式(第2版)作者名: (意)阿爾貝托·法拉里等本章字數: 681字更新時間: 2022-12-20 18:38:57
2.1.1 什么是標準DAX時間智能函數
標準時間智能函數是表函數,該函數返回在CALCULATE中用作篩選器的日期列表。通過編寫更復雜的篩選器表達式可以獲得時間智能函數的結果。例如,DATESYTD函數可以返回篩選上下文中從顯示的日期所在年份的第一天到顯示的最后一天之間的所有日期。下方的表達式:
DATESYTD ( 'Date'[Date] )
對應下方的FILTER表達式:
VAR LastDateAvailable = MAX ( 'Date'[Date] )
VAR FirstJanuaryOfLastDate = DATE ( YEAR ( LastDateAvailable ), 1, 1 )
RETURN
FILTER (
ALL ( 'Date'[Date] ),
AND (
'Date'[Date] >= FirstJanuaryOfLastDate,
'Date'[Date] <= LastDateAvailable
)
)
時間智能函數有很多,大多數時間智能函數是以這種方式呈現的。請注意:時間智能函數應用作CALCULATE的篩選器參數,有時你會通過使用變量來實現這一點。在迭代器中使用時間智能函數是很危險的,因為會觸發隱式上下文轉換,從而導致從篩選上下文中檢索有效日期。DAX指南文檔中提供了更多詳細信息。
以下是使用時間智能函數時最佳做法的快速指南。
● 僅在CALCULATE / CALCULATETABLE的篩選器參數中使用諸如DATESYTD之類的時間智能函數,或給變量分配篩選器。
● 在返回值的DAX公式中使用EDATE和EOMONTH之類的標量函數(也稱為標量表達式)。這些函數不是時間智能函數,可以用于以行上下文執行的表達式中。
● 使用CONVERT將日期轉換為數字,反之亦然。
● 有關時間智能函數的完整最新列表,請訪問DAX GUIDE網站。
DAX初學者經常將時間智能函數與常規(標量)時間函數混淆。這種混淆導致出現常見錯誤,可以通過遵循以下建議來避免。
● 不要使用DATEADD來返回前一天或后一天。可以使用簡單的數學運算符來做到這一點。
● 不要使用PREVIOUSDAY來計算標量表達式中的前一天。從日期中減1,即可獲得標量表達式中的前一天。
● 不要將EOMONTH用作篩選器,而應使用ENDOFMONTH。EOMONTH是標量表達式。ENDOFMONTH是時間智能函數。請始終注意函數的返回類型:只有表函數是時間智能函數,因此不應當用于標量表達式中。
- 中文版SketchUp 2022完全實戰技術手冊
- Photoshop CC實戰從入門到精通
- EJB 3.0 Database Persistence with Oracle Fusion Middleware 11g
- Premiere Pro 2022從新手到高手
- Maya 2019三維動畫基礎案例教程
- 我為PS狂 Photoshop照片處理一分鐘秘笈
- 輕松玩轉3D One AI
- AutoCAD 2016中文版完全自學手冊
- 碼上學會:中文版Creo 3.0機械設計全能一本通(雙色版)
- Vue.js快速入門
- Backbone.js Cookbook
- RAW 數碼底片演義
- 音樂日記:Studio One 6場景×風格編曲實用教程
- Photoshop后期強:多重曝光專業技法寶典
- Joomla! E/Commerce with VirtueMart