- DAX設(shè)計(jì)模式(第2版)
- (意)阿爾貝托·法拉里等
- 823字
- 2022-12-20 18:38:58
2.1.4 創(chuàng)建Date表
DAX時(shí)間智能函數(shù)可在任何標(biāo)準(zhǔn)公歷日歷表上使用。如果你已經(jīng)有一個(gè)Date表,則可以將其導(dǎo)入并使用,而不會(huì)出現(xiàn)任何問題。如果沒有Date表,則可以使用DAX計(jì)算表來創(chuàng)建。例如,以下DAX表達(dá)式定義了本章中使用的簡單Date表。
計(jì)算表
Date =
VAR FirstFiscalMonth = 7 -- 會(huì)計(jì)年度的第一個(gè)月
VAR FirstDayOfWeek = 0 -- 0 = 周日, 1 = 周一, ...
VAR FirstYear = -- 自定義使用的第一個(gè)年份
YEAR ( MIN ( Sales[Order Date] ))
RETURN
GENERATE (
FILTER (
CALENDARAUTO (),
YEAR ( [Date] ) >= FirstYear
),
VAR Yr = YEAR ( [Date] ) -- 年份編號
VAR Mn = MONTH ( [Date] ) -- 月份編號(1-12)
VAR Qr = QUARTER ( [Date] ) -- 季度編號(1-4)
VAR MnQ = Mn - 3 * (Qr - 1) -- 季度中的月份編號(1-3)
VAR Wd = WEEKDAY ( [Date], 1 ) –1 -- 星期幾(0 = 周日,1 = 周一,...)
VAR Fyr = -- 會(huì)計(jì)年度編號
Yr + 1 * ( FirstFiscalMonth > 1 && Mn >= FirstFiscalMonth )
VAR Fqr = -- 會(huì)計(jì)季度(字符串)
FORMAT ( EOMONTH ( [Date], 1 - FirstFiscalMonth ), "\QQ" )
RETURN ROW (
"Year", DATE ( Yr, 12, 31 ),
"Year Quarter", FORMAT ( [Date], "\QQ-YYYY" ),
"Year Quarter Date", EOMONTH ( [Date], 3 - MnQ ),
"Quarter", FORMAT ( [Date], "\QQ" ),
"Year Month", EOMONTH ( [Date], 0 ),
"Month", DATE ( 1900, MONTH ( [Date] ), 1 ),
"Day of Week", DATE ( 1900, 1, 7 + Wd + (7 * (Wd < FirstDayOfWeek)) ),
"Fiscal Year", DATE ( Fyr + (FirstFiscalMonth = 1), FirstFiscalMonth, 1 ) - 1,
"Fiscal Year Quarter", "F" & Fqr & "-" & Fyr,
"Fiscal Year Quarter Date", EOMONTH ( [Date], 3 - MnQ ),
"Fiscal Quarter", "F" & Fqr
)
)
你可以自定義前3個(gè)變量以創(chuàng)建滿足特定業(yè)務(wù)需求的Date表。為了獲得正確的結(jié)果,當(dāng)列不是文本格式,而是具有標(biāo)準(zhǔn)或自定義格式的“日期”數(shù)據(jù)類型時(shí),必須按以下方式在數(shù)據(jù)模型中對列進(jìn)行設(shè)置。
● Date:m/dd/yyyy(8/14/2007),用作標(biāo)記為日期表的列。
● Year:yyyy(2007)。
● Year Quarter:文本(Q3-2008)。
● Year Quarter Date:隱藏(9/30/2008)。
● Quarter:文本(Q1)。
● Year Month:mmm yyyy(Aug 2007)。
● Month:mmm(Aug)。
● Day of Week:ddd(Tue)。
● Fiscal Year:\F\Y yyyy(FY 2008)。
● Fiscal Year Quarter:文本(FQ1-2008)。
● Fiscal Year Quarter Date:隱藏(9/30/2008)。
● Fiscal Quarter:文本(FQ1)。
此模式中的Date表具有兩個(gè)層次結(jié)構(gòu)。
● 日歷:年(Year)、季度(Year Quarter)和月(Year Month)。
● 會(huì)計(jì):年(Fiscal Year)、季度(Fiscal Year Quarter)和月(Year Month)。
不管來源如何,若要使用此模式的公式,Date表必須包括一個(gè)隱藏的DateWithSales計(jì)算列。
Date表中的計(jì)算列
DateWithSales =
'Date'[Date] <= MAX ( Sales[Order Date] )
如果日期早于或等于Sales表中的最后交易日期,則Date[DateWithSales]列是TRUE,否則為FALSE。換句話說,“過去”日期的DateWithSales為TRUE,“未來”日期的DateWithSales為FALSE,這里的“過去”和“未來”均是相對于Sales中的最后交易日期來定義的。
- Object/Oriented Programming in ColdFusion
- OpenStack實(shí)戰(zhàn)指南
- 移動(dòng)App測試的22條軍規(guī)
- Cacti 0.8 Beginner's Guide
- Microsoft SharePoint 2010 Power User Cookbook: SharePoint Applied
- CMS Design Using PHP and jQuery
- Photoshop CC摳圖+修圖+調(diào)色+合成+特效實(shí)戰(zhàn)視頻教程
- 正則表達(dá)式必知必會(huì)(修訂版)
- 從零開始:AutoCAD 2010中文版建筑制圖基礎(chǔ)培訓(xùn)教程(第2版)
- Photoshop CC完全自學(xué)教程:從入門到實(shí)踐(全新版)
- Photoshop數(shù)字圖像處理
- 剪映:從零開始精通短視頻剪輯(電腦版)
- Magento: Beginner's Guide
- Revit技巧精選應(yīng)用教程
- Deep Inside osCommerce: The Cookbook