
今天我們來了解下,在Power Query中如何提取需要的時間。
日期作為業務次元裡面一個很重要的因素,大部分的業務分析都離不開時間這個條件,是以對于時間的提取的準确性就顯得尤為重要。
在轉換擷取中,我們也可以通過快速方式及菜單方式進行轉換格式擷取。
1. 提取日期
一般情況下,分析業務很大一部分都是用天為最小計量機關,但是一般導入到PQ裡面的日期資料格式,都是日期時間格式DateTime,後面會帶有0:00:00的時間字尾。但是我們隻需要年月日的時間,那我們可以通過函數進行提取,也可以通過菜單進行快速轉換。
DateTime.Date(datetime as any) as nullable date
因為參數中是any,是以參數内的格式可以是日期,日期時間,時間區域等格式。
DateTime.Date(#date(2018,11,11))=2018/11/11
DateTime.Date(#datetimezone(2018, 11, 11, 0, 0, 0, 8, 0))=2018/11/11
DateTime.Date(#datetime(2018,11,11,1,1,0))=2018/11/11
2. 提取年份
Date.Year(datetime as any) as nullable number
Date.Year(#datetime(2018,11,11,1,1,0))=2018
注意:雖然參數格式是any,但是也需要包含有年份資料的格式。如果是純時間格式則會發生錯誤。
Date.StartOfYear(datetime as any) as any 提取起始年份
Date.StartOfYear(#datetime(2018,11,11,1,1,0))=2018/1/1 0:00:00
Date.StartOfYear(#date(2018,11,11))=2018/1/1
生成的格式是轉換資料的格式。
Date.EndOfYear(datetime as any) as any 提取結束年份
Date.EndOfYear(#datetime(2018,11,11,1,1,0))=2018-12-31T23:59:59.9999999
3. 提取季度
Date.QuarterOfYear(datetime as any) as nullable number
提取季度數,生成的是數值1-4
Date.StartOfQuarter(datetime as any) as any
提取起始季度,傳回的格式是提取資料的格式
Date.StartOfQuarter(#date(2018,11,1))=2018/10/1
Date.StartOfQuarter(#datetime(2018,5,1,09,10,1))=2018/4/1 0:00:00
Date.EndOfQuarter(datetime as any) as any
提取結束季度,傳回的格式是提取資料的格式
Date.EndOfQuarter(#date(2018,11,1))=2018/12/31
Date.EndOfQuarter(#datetime(2018,11,1,12,10,10))=2018-12-31T23:59:59.9999999
4. 提取月份
Date.Month(date as any) as nullabel number
傳回的是月份數字格式
Date.Month(#date(2018,11,11))=11
Date.MonthName(date as any, optional culture as nullable text) as nullable text
傳回的是月份名稱文本格式,第2參數可以選擇中文或英文
Date.MonthName(#date(2018,11,11),"cn")=十一月
Date.MonthName(#date(2018,11,11),"en")=November
Date.StartOfMonth(datetime as any) as any
提取初始月份,傳回的格式是提取資料的格式
Date.StartOfMonth(#date(2018,11,11))=2018/11/1
Date.StartOfMonth(#datetime(2018,11,11,10,1,20))=2018/11/1 0:00:00
Date.EndOfMonth(datetime as any) as any
提取期末月份,傳回的格式是提取資料的格式
Date.EndOfMonth(#date(2018,11,11))=2018/12/31
Date.EndOfMonth(#datetime(2018,11,11,10,1,20))=2018-11-30T23:59:59.9999999
5. 提取日
Date.Day(datetime as any) as nullable number
傳回的是日的數字格式
Date.Day(#date(2018,11,11))=11
Date.StartOfDay(datetime as any) as any
傳回初始日,傳回的格式是提取資料的格式
Date.StartOfDay(#date(2018,11,11))=2018/11/1
Date.EndOfDay(datetiem as any) as any
傳回結束日,傳回的格式是提取資料的格式
Date.EndOfDay(#datetime(2018,11,11,23,00,00))=2018-11-11T23:59:59.9999999
Date.DaysInMonth(datetime as any) as nullable number
傳回月的實際天數,傳回格式是數值28-31
Date.DaysInMonth(#date(2016,2,10))=29
Date.DaysInMonth(#date(2018,2,10))=28
Date.DayOfYear(datetime as any) as nullable number
傳回為當年的多少天,傳回格式是數值1-366
Date.DaysOfYear(#date(2016,12,31))=366
Date.DaysOfYear(#date(2018,12,31))=365
Date.DaysOfYear(#date(2018,11,11))=315