BOSS:白茶朴摊,我們最近有很多項目,能不能做個甘特圖此虑?
白茶:沒問題I醺佟(應(yīng)用市場上隨便找個甘特圖就OK了嘛!)
BOSS:對了朦前,不要那種點進(jìn)來會有點卡介杆,等半天的那種鹃操,要保持速度!
白茶:(#¥%@春哨!&)沒問題荆隘!
日常分析時,當(dāng)我們需要針對某一個連續(xù)事件進(jìn)行進(jìn)度更新的時候赴背,往往會采用甘特圖來進(jìn)行展示椰拒,這樣肉眼看起來直觀,方便一眼定位到目前的項目節(jié)點凰荚。
在應(yīng)用市場中燃观,有兩個應(yīng)用可以幫助大家滿足制作甘特圖的需求:
Gantt和Gantt Chart By MAQSoftware。
除了使用應(yīng)用市場的應(yīng)用以外便瑟,還可以通過內(nèi)置的矩陣缆毁,來實現(xiàn)甘特圖的制作。對比市場的應(yīng)用到涂,內(nèi)置的圖表無論是性能上還是兼容性上都會更優(yōu)一些脊框。
案例數(shù)據(jù):
案例數(shù)據(jù)只有兩張表,一張維度表践啄,索引使用浇雹,一張項目狀態(tài)表。將數(shù)據(jù)導(dǎo)入到PowerBI中往核,模型關(guān)系如下:
白茶模擬的數(shù)據(jù)比較簡單箫爷,但實際應(yīng)用中,會存在項目中斷重啟的情況聂儒,因此為了能夠在完整的維度下展示虎锚,我們需要構(gòu)建一張日期表。
Dim_Data =
VAR MaxxData =
MAX (
MAXX ( ALL ( 'Fact_Status' ), [開始日期] ),
MAXX ( ALL ( 'Fact_Status' ), [結(jié)束日期] )
)
VAR MinxData =
MIN (
MINX ( ALL ( 'Fact_Status' ), [開始日期] ),
MINX ( ALL ( 'Fact_Status' ), [結(jié)束日期] )
)
VAR Result =
GENERATE (
CALENDAR ( MinxData, MaxxData ),
VAR DA = [Date]
VAR FactYear =
YEAR ( DA )
VAR FactQuarter =
"Q" & FORMAT ( DA, "Q" )
VAR FactMonth =
FORMAT ( DA, "M" )
VAR FactDAY =
DAY ( DA )
RETURN
ROW (
"年度", FactYear,
"季度", FactQuarter,
"月份索引", VALUE ( FactMonth ),
"月份", FactMonth & "月",
"日", FactDAY
)
)
RETURN
Result
模型關(guān)系更新如下:
注:新生成的日期表衩婚,不需要和原本的模型建立關(guān)系窜护。
思考一下
接下來需要做什么?
1
2
3
獲取事實表的開始日期和結(jié)束日期非春,再根據(jù)維度表進(jìn)行條件判斷即可柱徙。
編寫如下DAX:
開始日期:
001.StartData =
MONTH ( SELECTEDVALUE ( 'Fact_Status'[開始日期] ) )
結(jié)束日期:
002.EndData =
MONTH ( SELECTEDVALUE ( 'Fact_Status'[結(jié)束日期] ) )
維度日期:
003.ConditionData =
SELECTEDVALUE ( 'Dim_Data'[月份索引] )
條件判斷:
004.ProjectStatus =
VAR ConditionStatus =
IF (
AND (
[003.ConditionData] >= [001.StartData],
[003.ConditionData] <= [002.EndData]
),
1,
0
)
VAR Result =
IF (
AND ( HASONEFILTER ( 'Dim_Sort'[項目階段] ), ConditionStatus = 1 ),
1,
BLANK ()
)
RETURN
Result
將度量值拉到矩陣中進(jìn)行展示如下:
看起來矩陣已經(jīng)有甘特圖的樣子了,我們繼續(xù)編寫如下代碼:
配色:
005.FillColor =
IF ( [004.ProjectStatus] = 1, "#00B050", "#FFFFFF" )
將上述度量值奇昙,設(shè)置為矩陣值的背景和字體顏色:
再對矩陣一些細(xì)節(jié)進(jìn)行調(diào)整护侮,展示效果如下:
可以看到,已經(jīng)將甘特圖的樣式储耐,在矩陣中復(fù)現(xiàn)羊初。除了根據(jù)日期節(jié)點進(jìn)行判斷以外,我們也可以加一些其他元素做判斷,例如:項目的狀態(tài)长赞、當(dāng)前日期節(jié)點等晦攒。
這里我們用當(dāng)前日期節(jié)點判斷標(biāo)識一下:
006.FillColorToday =
VAR TodayMonth =
MONTH ( TODAY () )
VAR Result =
IF (
[004.ProjectStatus] = 1,
IF ( [003.ConditionData] = TodayMonth, "#FF0000", "#00B050" ),
"#FFFFFF"
)
RETURN
Result
展示效果如下:
這里是白茶,一個PowerBI的初學(xué)者得哆。