上一节介绍了如何在Power BI中设计一个简约的日历图表,如下图所示。本文更进一步,尝试为该日历增加信息,依然使用内置的矩阵去设计。
日历可以突出显示今天(27日),并且增加农历:
可以增加星座:
还可以农历、节气、节日同时显示:
显示信息可以切片器动态切换,法定节假日有休假和上班调休提醒:
除了日历相关的内容,还可以增加模型中的指标信息提示。例如,截止今日,每天分配的业绩达成如何。每天下方红绿线条形成达成热力图:
如何制作?
基础的日期表同上一节一样,一个度量值完成,以下列举2年:
代码语言:javascript复制日期表 =
ADDCOLUMNS(CALENDAR(DATE(2021,1,1),DATE(2022,12,31)),
"年",YEAR([Date]),
"月",MONTH([Date]),
"日",DAY([Date]),
"星期",RIGHT(FORMAT([Date],"AAA"),1),
"星期值",WEEKDAY([Date],2),
"第几周",WEEKNUM([Date],2)
)
农历、节气、节日、星座、放假安排等信息可在网上搜索万年历获得(文末的二维码作者已经整理好了2022年的,供星友使用):
新建一个切换条件表,以便设置切片器进行显示内容切换:
动画演示:
图表完整度量值如下,设置为图像URL,将度量值如上一节方法拖入矩阵即可正常显示:
代码语言:javascript复制SVG日_复合版 =
"data:image/svg xml;utf8,"&"
<svg xmlns='http://www.w3.org/2000/svg' height='100' width='100'>"&
IF(SELECTEDVALUE('日期表'[Date])=Today(),"<rect x='0' y='0' rx='30' width='100' height='100' fill='Tomato'/>",BLANK())&"
<text x='50' y='40' font-size='30' text-anchor='middle' dominant-baseline='middle' fill='"&
IF(SELECTEDVALUE('日期表'[Date])=TODAY(),"White",IF(SELECTEDVALUE('日期表'[星期值])>=6,"Grey","Black"))&"'>"&SELECTEDVALUE('日期表'[日])&"</text>
<text x='50' y='70' font-size='20' text-anchor='middle' dominant-baseline='middle' fill='"&
IF(SELECTEDVALUE('日期表'[Date])=TODAY(),"White",IF(SELECTEDVALUE('日期表'[星期值])>=6,"Grey","Black"))& "'>"&
SWITCH(SELECTEDVALUE('切换条件'[条件]),"农历 节气 节日",SELECTEDVALUE('日期表'[农历节日节气]),"农历",SELECTEDVALUE('日期表'[农历]),"星座",SELECTEDVALUE('日期表'[星座]),BLANK())&"</text>"&
"<text x='80' y='20' font-size='20' text-anchor='middle' dominant-baseline='middle' fill='Darkcyan'>"&SELECTEDVALUE('日期表'[放假安排])&"</text>
</svg> "
以上度量值中,三个text分别显示日期、农历节气节日信息、放假安排。日期居中,农历在日期下方,放假安排在右上角,像素级对齐。rect加在当天显示为圆角正方形。
如需加业绩达成等指标提示,在最下方加个rect,高度设置的很低(本例为3个像素)以至于看上去像一条线,fill填充颜色按照业绩达成情况IF语句切换。
完整Power BI模板扫码下载,预存了2021、2022年的日历,以及2022年的放假信息,读者明年可直接使用,后年更新下相关信息即可。