亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會(huì)深度解析
892
2022-12-20
wps表格日期怎么自動(dòng)生成?
Excel的Power Query(簡(jiǎn)稱PQ)是近年來(lái)微軟重點(diǎn)推薦的一個(gè)組件,由于它支持的外部數(shù)據(jù)來(lái)源豐富,圖形化界面功能豐富,更支持自定義M函數(shù),所以確實(shí)是一個(gè)數(shù)據(jù)獲取、數(shù)據(jù)處理的強(qiáng)大工具。
通過PQ連接數(shù)據(jù) → 給PP(Power Pivot)提供豐富的數(shù)據(jù) → 建立數(shù)據(jù)模型 → 輸出報(bào)表,這是微軟官方指引的一條技術(shù)路徑,確實(shí)值得跟進(jìn)學(xué)習(xí),PQ目前支持的數(shù)據(jù)來(lái)源包括:
PQ支持的數(shù)據(jù)源
由上面可以看出,微軟真的是花了大功夫去打造它,未來(lái)肯定還會(huì)支持更多數(shù)據(jù)來(lái)源,確實(shí)值得我們跟進(jìn)學(xué)習(xí)使用。當(dāng)然我們也要結(jié)合自己的工作情況,如果你公司的版本支持PQ,不妨趁空余時(shí)間學(xué)習(xí)下,但在實(shí)際應(yīng)用時(shí)一定要注意版本的兼容性問題。(自Excel2016開始,才真正地支持PQ,而且如果你是O365的用戶,PQ也會(huì)不斷迭代新的功能)
我和黃老師經(jīng)常在很多零售企業(yè)做數(shù)據(jù)咨詢項(xiàng)目,據(jù)我了解,對(duì)于傳統(tǒng)零售行業(yè)的朋友來(lái)說(shuō),PQ還是一項(xiàng)“新”的功能,不少朋友看到上面的數(shù)據(jù)來(lái)源,都會(huì)一臉懵懂。但是其實(shí)真的問題不大,因?yàn)橐矔?huì)有其他方法去解決,并不是非學(xué)不可~~~有時(shí)候幫客戶去分析幾年的數(shù)據(jù),行數(shù)都達(dá)幾千萬(wàn)行,這時(shí)我也會(huì)用PQ+PP去進(jìn)行建模處理,對(duì)于用透視表來(lái)進(jìn)行數(shù)據(jù)探索分析,還是非常高效的。
在這里也分享我的一個(gè)PQ的M函數(shù)給大家,用于自動(dòng)生成日期維度表(PP建模必備),非常方便高效~雖然在Excel工作表也能做,或者用DAX也能做,但是我就愛在PQ里實(shí)現(xiàn)!
使用方法:在PQ中新建一個(gè)【空查詢】,然后在【視圖】打開【高級(jí)編輯器】,清除原來(lái)的內(nèi)容,輸入以下內(nèi)容,設(shè)置你的起始日期和結(jié)束日期,點(diǎn)完成就ok了,優(yōu)雅方便高效~希望對(duì)大家有幫助!
大家也可以在此基礎(chǔ)上調(diào)整代碼,以便獲得自己想要的分析維度。適合在所有PQ版本,包括Power BI中。使用
let ? ?// 設(shè)置起始日期、結(jié)束日期 ? ?自定義日期區(qū)間 = {Number.From(#date(2018,1,1)) .. Number.From(#date(2020,12,31))}, ? ?轉(zhuǎn)換為表 = Table.FromList(自定義日期區(qū)間, Splitter.SplitByNothing(), null, null, ExtraValues.Error), ? ?生成日期列 = Table.RenameColumns(轉(zhuǎn)換為表,{{“Column1”, “日期”}}), ? ?日期類型 = Table.TransformColumnTypes(生成日期列,{{“日期”, type date}}), ? ?整數(shù)日期 = Table.AddColumn(日期類型, “IntDate”, each Date.ToText([日期],”yyyyMMdd”)), ? ?整數(shù)類型1 = Table.TransformColumnTypes(整數(shù)日期,{{“IntDate”, Int64.Type}}), ? ?年份數(shù) = Table.AddColumn(整數(shù)類型1, “YearID”, each Date.Year([日期]), type number), ? ?季度數(shù) = Table.AddColumn(年份數(shù), “QuarterID”, each Date.QuarterOfYear([日期]), type number), ? ?月份數(shù) = Table.AddColumn(季度數(shù), “MonthID”, each Date.Month([日期]), type number), ? ?年月數(shù) = Table.AddColumn(月份數(shù), “yyMMID”, each Text.From([YearID]) & Text.PadStart(Text.From([MonthID]),2,”0″)), ? ?整數(shù)類型2 = Table.TransformColumnTypes(年月數(shù),{{“yyMMID”, Int64.Type}}), ? ?年度周數(shù) = Table.AddColumn(整數(shù)類型2, “WeekOfYearID”, each Date.WeekOfYear([日期]), type number), ? ?月度日數(shù) = Table.AddColumn(年度周數(shù), “DayID”, each Date.Day([日期]), type number), ? ?周星期數(shù) = Table.AddColumn(月度日數(shù), “DayOfWeekID”, each Date.DayOfWeek([日期],1),type number), ? ?年份 = Table.AddColumn(周星期數(shù), “年份”, each “Y” & Text.From([YearID]),type text ), ? ?季度 = Table.AddColumn(年份, “季度”, each “Q”&Text.From([QuarterID]),type text), ? ?月份 = Table.AddColumn(季度, “月份”, each Text.From([MonthID]) & “月”,type text), ? ?年月S = Table.AddColumn(月份, “年月S”, each Date.ToText([日期],”yy-MM”),type text), ? ?年月S格式 = Table.ReplaceValue(年月S,”-“,”‘”,Replacer.ReplaceText,{“年月S”}), ? ?年月L = Table.AddColumn(年月S格式, “年月L”, each Date.ToText([日期],”yyyy年M月”), type text), ? ?年周 = Table.AddColumn(年月L, “周”, each “W” & Text.From( [WeekOfYearID] ),type text), ? ?月日 = Table.AddColumn(年周, “日”, each “D” & Text.From( [DayID] ),type text), ? ?星期 = Table.AddColumn(月日, “星期”, each Date.ToText([日期],”ddd”),type text), ? ?調(diào)整列順序 = Table.ReorderColumns(星期,{“日期”, “年份”, “季度”, “月份”, “日”, “星期”, “周”, “年月L”, “年月S”, “IntDate”, “YearID”, “QuarterID”, “MonthID”, “yyMMID”, “WeekOfYearID”, “DayID”, “DayOfWeekID”})in ? ?調(diào)整列順序
實(shí)現(xiàn)的日期表效果:(右側(cè)的排序ID已省略)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。