PowerBI日期表创建方式

一、Web免费获取日期/节假日

api接口:https://www.mxnzp.com/doc/detail?id=1
PowerQuery添加Web查询,免费获取日期及工作日、法定节假日时间

PowerQuery  Web:
https://www.mxnzp.com/api/holiday/list/year/2015?app_id=sxypjdqmgmpppvyr&app_secret=L0tobmFXQ3ppTTY4WDhwMW1jeW5VZz09

二、日期表制作

1、在Excel中制作日期表

在A1:J1中输入日期表的表头,然后在A2:J2中分别输入以下公式:

A2 = 2019-1-1
B2 = DAY(A2)
C2 = MONTH(A2)
D2 = "M"&C2
E2 = LEN(2^C2)
F2 = "Q"&E2
G2 = YEAR(A2)
H2 = G2*100+C2
I2 = G2&F2
J2 = WEEKDAY(A2,2)

然后选中A2:J2,向下公式填充731行,就可得到从2019到2020年的日期表。

2、使用PowerQuery制作日期表

进入PQ编辑器,新建空查询,打开高级编辑器,把高级编辑器中的代码全部删除,然后把以下代码输入到高级编辑器中((可以在随书附件中找到此文件),

(optional 请输入开始年份 as number,
optional 请输入结束年份 as number)=>
let
x = 请输入开始年份,
y = if 请输入结束年份 = null
then 请输入开始年份 else 请输入结束年份,
begin_date = if x = null
then #date(Date.Year(DateTime.LocalNow()),1,1)
else #date(x,1,1),
end_date = if y = null then #date(Date.Year(DateTime.LocalNow()),12,31)
else #date(y,12,31),
list = {1..Number.From(end_date)-Number.From(begin_date)+1},
dates = List.Transform( list , (item)=> Date.AddDays(begin_date,item-1) ),
table = Table.TransformColumnTypes(Table.RenameColumns(Table.FromList(dates,
Splitter.SplitByNothing(), null, null, ExtraValues.Error),{{"Column1", "日期"}}),{{"日期", type date}}),
data_id=Table.AddColumn(table,"日", each Date.Day([日期]), type number),
month_id = Table.AddColumn(data_id, "月份", each Date.Month([日期])),
month_name=Table.AddColumn(month_id, "月份名称", each "M"& Text.From(Date.Month([日期]))),
quarter = Table.AddColumn(month_name, "季度", each Date.QuarterOfYear([日期])),
quarter_name = Table.AddColumn(quarter, "季度名称", each "Q"&Text.From(Date.QuarterOfYear([日期]))),
year_id = Table.AddColumn(quarter_name,"年度", each Date.Year([日期]), type number),
year_month_id = Table.AddColumn(year_id, "年度月份", each Date.Year([日期])*100+ Date.Month([日期]), type number),
year_quarter_id = Table.AddColumn(year_month_id, "年度季度", each Text.From([年度])&[季度名称]),
day_in_week = Table.AddColumn(year_quarter_id, "周几", each Number.Mod(Date.DayOfWeek([日期]),7)+1, type number)
in
day_in_week
3、DAX生成日期表

在PowerBI Desktop界面点击“新建表”,输入以下的其中一种DAX表达式即可。

常用的有以下几种方式生成日期表:

3.1 利用ADDCOLUMNS与CALENDAR函数生成日期表

日期表 DAX_1 = 
ADDCOLUMNS (
    CALENDAR (DATE(2019,1,1), DATE(2020,12,31)),
    "日",FORMAT ( [Date], "D" ),
    "月份", MONTH([Date]),
    "月份名称", "M" & MONTH([Date]),
    "季度", FORMAT ( [Date], "Q" ),
    "季度名称", "Q" & FORMAT ( [Date], "Q" ),
    "年度", YEAR ( [Date] ),
    "年度月份", FORMAT ( [Date], "YYYYMM" ),
    "年度季度", FORMAT ( [Date], "YYYY" ) & "Q" & FORMAT ( [Date], "Q" ),
    "星期几", WEEKDAY ( [Date],2 )
)

3.2 利用GENERATE和CALENDAR函数生成日期表

日期表 DAX_2 = 
  GENERATE (
    CALENDAR ( DATE ( 2019, 1, 1 ), DATE ( 2020, 12, 31 ) ),
    VAR currentDay = [Date]
    VAR day = DAY( [Date] )
    VAR month =  MONTH( currentDay )
    VAR monthname =  "M" & MONTH( currentDay )
    VAR quarter =   QUARTER( currentDay )
    VAR quartername =  "Q" & QUARTER( currentDay )
    VAR year =  YEAR ( currentDay )  
    VAR weekid =  WEEKDAY ( currentDay,2)
  RETURN   ROW (
    "日", day,
    "月份", month,
    "月份名称",monthname, 
    "季度",quarter,
    "季度名称",quartername,
    "年度", year ,
    "年度月份", year*100+month,     
    "年度季度", year&quartername, 
    "星期几", weekid
    )
  )

3.3 GENERATE与CALENDARAUTO函数

日期表 DAX_3 = 
  GENERATE (
    CALENDARAUTO(),
    VAR currentDay = [Date]
    VAR day = DAY( [Date] )
    VAR month =  MONTH( currentDay )
    VAR monthname =  "M" & MONTH( currentDay )
    VAR quarter =   QUARTER( currentDay )
    VAR quartername =  "Q" & QUARTER( currentDay )
    VAR year =  YEAR ( currentDay )  
    VAR weekid =  WEEKDAY ( currentDay,2)
  RETURN   ROW (
    "日", day,
    "月份", month,
    "月份名称",monthname, 
    "季度",quarter,
    "季度名称",quartername,
    "年度", year ,
    "年度月份", year*100+month,     
    "年度季度", year&quartername, 
    "星期几", weekid
    )
  )

(来源:采悟Power BI商业数据分析)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容

  • 1.DAX建立日期表 2.Powerquery建立日期表 简单粗暴,先上代码: 使用方法: 1、新建一个空查询,点...
    BI罗阅读 1,639评论 0 2
  • 可以用简单的方式构建日期表,例如:Power Query / M 日期表。这种方式对于一般场景是足够的,但并非极致...
    PowerBI战友联盟阅读 27,245评论 11 36
  • 使用方法:在PQ中新建一个【空查询】,然后在【视图】打开【高级编辑器】,清除原来的内容,输入以下内容,设置你的起始...
    S数据分析阅读 3,125评论 0 1
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,042评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,877评论 0 2