1. 程式人生 > >資料分析 | 資料視覺化圖表,BI工具構建邏輯

資料分析 | 資料視覺化圖表,BI工具構建邏輯

本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/data-manage-parent) || [GitEE·點這裡](https://gitee.com/cicadasmile/data-manage-parent) # 一、資料視覺化 ## 1、基礎概念 資料視覺化,是關於資料視覺表現形式的科學技術研究。其中,這種資料的視覺表現形式被定義為,一種以某種概要形式抽取出來的資訊,包括相應資訊單位的各種屬性和變數。 如果說的實際貼切的話:系統開發中常見的資料報表統計,將資料用圖表或表格的形式呈現出來,幫助運營或者決策人員瞭解這些資料的規律或者價值,就是簡單的視覺化應用。 從開發角度來看,把系統中的核心資料,用一定的手段進行統計,在藉助一些精美的圖表樣式,展示出來,或者把一系列圖表組裝成一個數據大屏,格調十足。 但是從運營人員的角度看,更多的是藉助視覺化資料分析業務場景,得到有價值的參考資料,為後續的決策或者開展活動提供指導。所以隨著業務線的不斷髮展,對資料分析的要求越來越高,也就誕生現在比較常見的BI分析工具和BI分析師。 ## 2、資料視覺化價值 - 準確高效直觀的傳遞傳遞資料中的規律和資訊; - 實時監控系統各項資料指標,實現資料的自解釋; - 基於視覺化洞察資料規律,指定精準的運營策略; ## 3、基礎構建原則 簡單的步驟如下:基於業務需求,完成視覺化資料處理(收集,規則,定時任務等)。藉助常用的圖表進行組合展示,但是也有一些注意事項如下: - 視覺化的資料要關聯核心的有業務價值的資料; - 圖表的展現注意簡單,明瞭,圖表的本質就是讓資料更直觀; - 不要為了追求系統花哨,可以大批量新增圖表; # 二、常用圖表設計 ## 1、常見基礎圖表 **柱狀圖** ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602214808383-1416649308.png) 特點:一般展現分組資料,直觀展示各組資料差異,例如常見以每週,每月,或者不同客戶端劃分為軸的資料。 **折線圖** ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602214819395-298878985.png) 特點:重點展現資料的變化趨勢,常見以時間為軸,展示時間下的資料趨勢。 **餅狀圖** ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602214830663-1803724884.png) 特點:不注重資料明細,強調資料中各項佔總體的百分比,或者分佈情況,注重模組模組之間的對比。 **漏斗圖** ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602214842292-897244786.png) 特點:強調資料之間的轉化關係和遞進規律,經典常見就是使用者瀏覽量,點選量,到訂單支付數量。 **組合圖** ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602214853404-1614203595.png) 特點:多種基礎圖表組合,某些特殊業務資料,需要結合兩種圖或者更多種圖表,強調裝載該業務報表的關鍵組合資訊。 ## 2、資料大屏 顧名思義,放在大螢幕的報表,一般有多種豐富的業務資料,自然需要多種報表展現形式,比較有立體感和視覺上的衝擊力。 ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602214932592-1640619177.jpg) **絮叨一句**:資料大屏在更多時候所追求的是讓人印象深刻,這才是最關鍵的,懂的都懂。 # 三、常用統計方式 ## 1、SQL分析語句 在報表類業務中,經常使用SQL分析語句,常用的幾個方法: - count:資料求和,求總數,例如多少使用者; - sum:求和函式,例如總銷量,總成本等; - group-by:分組統計,分組結果就是軸標識; - average:平均值計算,例如平均每天銷量; 業務類的報表雖然複雜,但是報表相關的資料介面相對而言簡單,基於一些基礎的統計SQL,生成報表資料。 ## 2、基礎案例 **產品和緯度表** ```sql CREATE TABLE `vc_product_info` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `product_sort` varchar(20) DEFAULT '' COMMENT '產品分類', `product_name` varchar(50) DEFAULT '' COMMENT '產品名稱', `inventory` int(11) DEFAULT '0' COMMENT '庫存剩餘', `price` decimal(10,2) DEFAULT '0.00' COMMENT '單價', `total_sales` int(11) DEFAULT '0' COMMENT '銷售總量', `sales_amount` decimal(10,2) DEFAULT '0.00' COMMENT '銷售總額', `create_time` datetime DEFAULT NULL COMMENT '建立時間', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='產品資訊表'; CREATE TABLE `vc_product_detail` ( `id` INT (11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `product_id` INT (11) NOT NULL COMMENT '產品ID', `place_origin` VARCHAR (50) DEFAULT '' COMMENT '產品產地', `weight` DECIMAL (10, 2) DEFAULT '0.00' COMMENT '重量', `color` VARCHAR (50) DEFAULT '' COMMENT '顏色', `high_praise` INT (11) DEFAULT '0' COMMENT '好評數量', `low_praise` INT (11) DEFAULT '0' COMMENT '差評數量', `create_time` datetime DEFAULT NULL COMMENT '建立時間', PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '產品維度表'; ``` **基礎查詢語句** ```xml ``` # 四、自定義工具 ## 1、資料集 **資料集概念** DataSet是一個數據的集合,通常以列表形式出現。每一列代表一個特定變數。每一行都對應於某一成員的資料集的問題。在統計分析的業務中,通常稱為大寬表,方便業務分析。 **資料集生成** `檢視方式` 基於檢視的方式,生成一個單表的資料集,方便簡化操作。該方式不提倡,檢視在大部分公司裡是禁止使用的,這裡只是單純演示。 基於上述產品資訊表和維度表,通過檢視手段生成資料集,單純為了簡化業務分析的操作難度,因為多表聯合簡化成感覺上的單表。 ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602215004068-1142025439.jpg) ```sql CREATE OR REPLACE VIEW data_set_view AS SELECT t1.*, t2.place_origin, t2.weight, t2.color, t2.high_praise, t2.low_praise FROM vc_product_info t1 LEFT JOIN vc_product_detail t2 ON t1.id = t2.product_id ``` `任務方式` 通過定時任務,獲取要分析的資料結構,不斷注入到分析表中,這是業務開發中最常見的報表資料集生成方式,有的甚至通過定時任務直接統計出報表需要的資料,不適應於大資料場景。 `離線或實時計算` 通過大資料分析手段,離線計算或者實時計算,獲取業務報表資料,注入OLAP實時分析計算庫,使用大資料分析場景。 ## 2、定製化BI工具 ![](https://img2020.cnblogs.com/blog/1691717/202006/1691717-20200602214953794-1296677407.jpg) BI工具可以快速對業務資料進行有效的整合,快速準確的提供報表並提出決策依據,幫助企業做出明智的業務經營決策。商業智慧的概念最早在1996年提出。當時將商業智慧定義為一類由資料倉庫(或資料集市)、查詢報表、資料分析、資料探勘、資料備份和恢復等部分組成的、以幫助企業決策為目的技術及其應用。 基本搭建思路: - 管理資料來源,建立資料表之間關係,維護特定資料集; - 建立可拖拉拽的報告面板,用來承載單個圖表組合; - 封裝不同的圖表的處理邏輯,規則展示,關聯資料集欄位; - 封裝圖表樣式,例如大小、顏色、背景、互動等可配置; - 圖表關聯分析資料集,報告面板組合多個圖表生成報告; 實際的開發過程是非常複雜的,管理各個業務線的資料來源,聯合分析,適配各種圖表規範和樣式,都是一個十分漫長的過程。 ## 3、基礎案例 **介面入參** 承接上述業務場景,這裡引數都需要動態傳入,例如操作的:資料集、圖表、引數歸屬軸、或者業務產品引數等。 ```java @RestController public class DefineController { @Resource private DataSetService dataSetService ; /** * 自定義視覺化報告入參 */ @GetMapping("/getDefChart") pu