1. 程式人生 > 其它 >如何實現一個支援分級資料統計的增強型透檢視

如何實現一個支援分級資料統計的增強型透檢視

文/明道雲銷售部顧問 文靜
編輯/麥壁瑜

一個常見的企業需求

在企業的日常管理中,我們經常遇到需要對工作任務或者專案進行成本核算的任務,比如:統計員工在不同任務上的工時投入,並且按客戶、產品、部門等多個維度進行分析。

讓我們讓問題更加複雜一點

如果只是簡單按某個維度進行彙總,那麼在明道雲裡設計好統計明細表,並配合相應的統計圖表(餅狀圖、柱狀體、透檢視)就可以輕鬆實現。而我們今天要分享的是一個相對複雜的分層統計需求:按照資料的層級結構分層進行資料統計。

例如:在將工作任務逐級分解執行後,需要再根據員工的日報逐級進行工時彙總,一項工作任務可以關聯到任何一級任務。下圖這個任務工時統計,就將從總任務到二級子任務的各級任務都逐級進行資料彙總。

然而目前,這樣分層彙總的報表統計在明道雲還無法直接支援。難道只能找產品經理提需求嗎?當然不是,明道雲自身的自定義能力給我們提供了無限的發揮空間。下面我們就來利用明道現有的基礎功能,改裝出一個具備分層彙總能力的增強型透檢視。

將大問題拆解成小問題,逐一解決

首先明確,我們最終需要的是一個統計資料表,並且按不同的層級進行彙總,因此在所有的報表型別中,“透檢視”是最合適的。

透檢視可以新增多個行統計維度,報表會把內容相同的行維度自動進行合併展示。如果按照資料的範圍大小進行維度排序,就可以實現逐層展開的效果。如果還不太熟悉透檢視,可以先參考一個包含行政區劃的簡單例子:工作表記錄中每個地址都包含“省—市—(區)縣”3個欄位,如果嚴格按照這個順序來設定,即可按照地區範圍的大小逐級展示。

按照省—市—縣順序展示

當然,不按照特定的順序來排序也不會影響報表呈現,只是無法更好的展示資料本身的層級或者分組關係。在本文的需求中,我們自然會選擇按照工作任務本身的層級關係來統計。

按照市—區(縣)—省順序展示

確定了最終的報表呈現形式,下一步就是要為報表提供資料來源。通過剛才對透視表的特點分析,我們看到目前透視表本身不具備的功能:

  • 展現形式上,要想實現具備相同的上層資料自動合併展示,必須要讓上層資料有完全相同的內容才行(任務名稱+彙總結果)
  • 透視表雖然可以按維度合併資料,但本身無法分層進行資料統計,因此需要我們在資料來源表中先計算好各層的彙總資料

明確了這兩個目標,下一步就要基於當前基本的功能來改造資料結構,以滿足要求。

解決問題

1.建立分層統計的資料結構(月度/分類彙總表)

各層有唯一的一條記錄,用於累計本層工作的彙總資料。記錄通過日報提交的事件自動建立即可。

2.建立透檢視的資料來源表,用於分層顯示的各級彙總欄位

注意:這裡還是需要根據業務需求確定一個最大層級,因為透視表的行維度在配置時就固定下來。

欄位格式設定為“任務名稱-本層工時彙總”,裡面需要按層級分別關聯上一步的分類統計資料。也就是說,每條資料除了要儲存自身的工時以外,也要儲存所屬所有上層任務的彙總工時,並通過“文字組合”統一格式。

3.逐層統計

一旦有新的資料提交,工作流自動根據提交所在的層級向上追溯,並將本層新增的工時累加到上層各級的彙總欄位。由於這些欄位已經和統計源資料建立關聯,所以可以讓所有相關資料都同步更新。

當有日報增加時,通過工作流直接建立一個步驟(2)對應的工時資料彙總記錄,此時該資料中只有當前日報本身的工時數,還沒有建立和(1)的彙總資料關聯。

然後按照層級關係逐級累加,並且將各級彙總資料關聯到當前記錄。在逐層累加的設計中我們使用了A、B子流程迴圈呼叫的模式,子流程中封裝了累加當前層級彙總資料和關聯資料來源表記錄的邏輯。一個子流程處理完成後,只需要判斷當前計算的層級是否還有上級,如有就呼叫另一個相同結構的子流程B繼續進行累加,迴圈往復。

完成這些配置和資料錄入後,各個日報的資料裡就會分別顯示上面各級的彙總資訊,並且實現一個增強版本的透檢視效果。

最終自動累加出來的資料來源表自動生成的增強型透檢視

結束語

通過一個小案例,我們就實現了一個產品本身沒有的功能,這就是明道雲的魅力所在——只要掌握所有基本元件的特性,在充分分析業務需求的基礎上,我們可以一定程度上突破產品本身的邊界,總結一句話:

“使用明道雲產品最大的困難可能不是產品目前還沒有什麼功能,而是你缺乏想象力!”