BAT綜合總結(jié):數(shù)據(jù)分析 | 數(shù)據(jù)可視化圖表,BI工具構(gòu)建邏輯

一押框、數(shù)據(jù)可視化

1岔绸、基礎(chǔ)概念

數(shù)據(jù)可視化,是關(guān)于數(shù)據(jù)視覺表現(xiàn)形式的科學(xué)技術(shù)研究。其中盒揉,這種數(shù)據(jù)的視覺表現(xiàn)形式被定義為晋被,一種以某種概要形式抽取出來的信息,包括相應(yīng)信息單位的各種屬性和變量刚盈。

如果說的實(shí)際貼切的話:系統(tǒng)開發(fā)中常見的數(shù)據(jù)報(bào)表統(tǒng)計(jì)羡洛,將數(shù)據(jù)用圖表或表格的形式呈現(xiàn)出來,幫助運(yùn)營或者決策人員了解這些數(shù)據(jù)的規(guī)律或者價(jià)值藕漱,就是簡單的可視化應(yīng)用欲侮。

從開發(fā)角度來看,把系統(tǒng)中的核心數(shù)據(jù)肋联,用一定的手段進(jìn)行統(tǒng)計(jì)威蕉,在借助一些精美的圖表樣式,展示出來橄仍,或者把一系列圖表組裝成一個(gè)數(shù)據(jù)大屏韧涨,格調(diào)十足。

但是從運(yùn)營人員的角度看侮繁,更多的是借助可視化數(shù)據(jù)分析業(yè)務(wù)場景虑粥,得到有價(jià)值的參考數(shù)據(jù),為后續(xù)的決策或者開展活動(dòng)提供指導(dǎo)宪哩。所以隨著業(yè)務(wù)線的不斷發(fā)展舀奶,對數(shù)據(jù)分析的要求越來越高,也就誕生現(xiàn)在比較常見的BI分析工具和BI分析師斋射。

2、數(shù)據(jù)可視化價(jià)值

準(zhǔn)確高效直觀的傳遞傳遞數(shù)據(jù)中的規(guī)律和信息但荤;

實(shí)時(shí)監(jiān)控系統(tǒng)各項(xiàng)數(shù)據(jù)指標(biāo)罗岖,實(shí)現(xiàn)數(shù)據(jù)的自解釋;

基于可視化洞察數(shù)據(jù)規(guī)律腹躁,指定精準(zhǔn)的運(yùn)營策略桑包;

3、基礎(chǔ)構(gòu)建原則

簡單的步驟如下:基于業(yè)務(wù)需求纺非,完成可視化數(shù)據(jù)處理(收集哑了,規(guī)則,定時(shí)任務(wù)等)烧颖。借助常用的圖表進(jìn)行組合展示弱左,但是也有一些注意事項(xiàng)如下:

可視化的數(shù)據(jù)要關(guān)聯(lián)核心的有業(yè)務(wù)價(jià)值的數(shù)據(jù);

圖表的展現(xiàn)注意簡單炕淮,明了拆火,圖表的本質(zhì)就是讓數(shù)據(jù)更直觀;

不要為了追求系統(tǒng)花哨,可以大批量添加圖表们镜;

二币叹、常用圖表設(shè)計(jì)

1、常見基礎(chǔ)圖表

柱狀圖

特點(diǎn):一般展現(xiàn)分組數(shù)據(jù)模狭,直觀展示各組數(shù)據(jù)差異颈抚,例如常見以每周,每月嚼鹉,或者不同客戶端劃分為軸的數(shù)據(jù)贩汉。

折線圖

特點(diǎn):重點(diǎn)展現(xiàn)數(shù)據(jù)的變化趨勢,常見以時(shí)間為軸反砌,展示時(shí)間下的數(shù)據(jù)趨勢雾鬼。

餅狀圖

特點(diǎn):不注重?cái)?shù)據(jù)明細(xì),強(qiáng)調(diào)數(shù)據(jù)中各項(xiàng)占總體的百分比宴树,或者分布情況策菜,注重模塊模塊之間的對比。

漏斗圖

特點(diǎn):強(qiáng)調(diào)數(shù)據(jù)之間的轉(zhuǎn)化關(guān)系和遞進(jìn)規(guī)律酒贬,經(jīng)典常見就是用戶瀏覽量又憨,點(diǎn)擊量,到訂單支付數(shù)量锭吨。

組合圖

特點(diǎn):多種基礎(chǔ)圖表組合蠢莺,某些特殊業(yè)務(wù)數(shù)據(jù),需要結(jié)合兩種圖或者更多種圖表零如,強(qiáng)調(diào)裝載該業(yè)務(wù)報(bào)表的關(guān)鍵組合信息躏将。

2、數(shù)據(jù)大屏

顧名思義考蕾,放在大屏幕的報(bào)表祸憋,一般有多種豐富的業(yè)務(wù)數(shù)據(jù),自然需要多種報(bào)表展現(xiàn)形式肖卧,比較有立體感和視覺上的沖擊力蚯窥。

絮叨一句:數(shù)據(jù)大屏在更多時(shí)候所追求的是讓人印象深刻,這才是最關(guān)鍵的塞帐,懂的都懂拦赠。

三、常用統(tǒng)計(jì)方式

1葵姥、SQL分析語句

在報(bào)表類業(yè)務(wù)中荷鼠,經(jīng)常使用SQL分析語句,常用的幾個(gè)方法:

count:數(shù)據(jù)求和榔幸,求總數(shù)颊咬,例如多少用戶务甥;

sum:求和函數(shù),例如總銷量喳篇,總成本等敞临;

group-by:分組統(tǒng)計(jì),分組結(jié)果就是軸標(biāo)識(shí)麸澜;

average:平均值計(jì)算挺尿,例如平均每天銷量;

業(yè)務(wù)類的報(bào)表雖然復(fù)雜炊邦,但是報(bào)表相關(guān)的數(shù)據(jù)接口相對而言簡單编矾,基于一些基礎(chǔ)的統(tǒng)計(jì)SQL,生成報(bào)表數(shù)據(jù)馁害。

2窄俏、基礎(chǔ)案例

產(chǎn)品和緯度表

CREATETABLE`vc_product_info`(

`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主鍵ID',

`product_sort`varchar(20)DEFAULT''COMMENT'產(chǎn)品分類',

`product_name`varchar(50)DEFAULT''COMMENT'產(chǎn)品名稱',

`inventory`int(11)DEFAULT'0'COMMENT'庫存剩余',

`price`decimal(10,2)DEFAULT'0.00'COMMENT'單價(jià)',

`total_sales`int(11)DEFAULT'0'COMMENT'銷售總量',

`sales_amount`decimal(10,2)DEFAULT'0.00'COMMENT'銷售總額',

`create_time`datetimeDEFAULTNULLCOMMENT'創(chuàng)建時(shí)間',

PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='產(chǎn)品信息表';

CREATETABLE`vc_product_detail`(

`id`INT(11)NOTNULLAUTO_INCREMENTCOMMENT'主鍵ID',

`product_id`INT(11)NOTNULLCOMMENT'產(chǎn)品ID',

`place_origin`VARCHAR(50)DEFAULT''COMMENT'產(chǎn)品產(chǎn)地',

`weight`DECIMAL(10,2)DEFAULT'0.00'COMMENT'重量',

`color`VARCHAR(50)DEFAULT''COMMENT'顏色',

`high_praise`INT(11)DEFAULT'0'COMMENT'好評(píng)數(shù)量',

`low_praise`INT(11)DEFAULT'0'COMMENT'差評(píng)數(shù)量',

`create_time`datetimeDEFAULTNULLCOMMENT'創(chuàng)建時(shí)間',

PRIMARYKEY(`id`)

)ENGINE=INNODBDEFAULTCHARSET= utf8COMMENT='產(chǎn)品維度表';

基礎(chǔ)查詢語句

<!-- 商品種類 -->

SELECT COUNT(product_name) FROM vc_product_info

<!-- 銷售總額度 -->

SELECT SUM(sales_amount) FROM vc_product_info

<!-- 分組求和 -->

SELECT product_sort,SUM(sales_amount) FROM vc_product_info GROUP BY product_sort

<!-- 平均單價(jià) -->

SELECT AVG(price) FROM vc_product_info

四、自定義工具

1碘菜、數(shù)據(jù)集

數(shù)據(jù)集概念

DataSet是一個(gè)數(shù)據(jù)的集合凹蜈,通常以列表形式出現(xiàn)。每一列代表一個(gè)特定變量忍啸。每一行都對應(yīng)于某一成員的數(shù)據(jù)集的問題仰坦。在統(tǒng)計(jì)分析的業(yè)務(wù)中,通常稱為大寬表计雌,方便業(yè)務(wù)分析悄晃。

數(shù)據(jù)集生成

視圖方式

基于視圖的方式,生成一個(gè)單表的數(shù)據(jù)集凿滤,方便簡化操作妈橄。該方式不提倡,視圖在大部分公司里是禁止使用的翁脆,這里只是單純演示眷细。

基于上述產(chǎn)品信息表和維度表,通過視圖手段生成數(shù)據(jù)集鹃祖,單純?yōu)榱撕喕瘶I(yè)務(wù)分析的操作難度,因?yàn)槎啾砺?lián)合簡化成感覺上的單表普舆。

CREATEORREPLACE

VIEWdata_set_viewASSELECT

t1.*, t2.place_origin,

t2.weight,

t2.color,

t2.high_praise,

t2.low_praise

FROM vc_product_info t1

LEFTJOINvc_product_detail t2ONt1.id = t2.product_id

任務(wù)方式

通過定時(shí)任務(wù)恬口,獲取要分析的數(shù)據(jù)結(jié)構(gòu),不斷注入到分析表中沼侣,這是業(yè)務(wù)開發(fā)中最常見的報(bào)表數(shù)據(jù)集生成方式祖能,有的甚至通過定時(shí)任務(wù)直接統(tǒng)計(jì)出報(bào)表需要的數(shù)據(jù),不適應(yīng)于大數(shù)據(jù)場景蛾洛。

離線或?qū)崟r(shí)計(jì)算

通過大數(shù)據(jù)分析手段养铸,離線計(jì)算或者實(shí)時(shí)計(jì)算雁芙,獲取業(yè)務(wù)報(bào)表數(shù)據(jù),注入OLAP實(shí)時(shí)分析計(jì)算庫钞螟,使用大數(shù)據(jù)分析場景兔甘。

2、定制化BI工具

BI工具可以快速對業(yè)務(wù)數(shù)據(jù)進(jìn)行有效的整合鳞滨,快速準(zhǔn)確的提供報(bào)表并提出決策依據(jù)洞焙,幫助企業(yè)做出明智的業(yè)務(wù)經(jīng)營決策。商業(yè)智能的概念最早在1996年提出拯啦。當(dāng)時(shí)將商業(yè)智能定義為一類由數(shù)據(jù)倉庫(或數(shù)據(jù)集市)澡匪、查詢報(bào)表、數(shù)據(jù)分析褒链、數(shù)據(jù)挖掘唁情、數(shù)據(jù)備份和恢復(fù)等部分組成的、以幫助企業(yè)決策為目的技術(shù)及其應(yīng)用甫匹。

基本搭建思路:

管理數(shù)據(jù)源甸鸟,建立數(shù)據(jù)表之間關(guān)系,維護(hù)特定數(shù)據(jù)集赛惩;

創(chuàng)建可拖拉拽的報(bào)告面板哀墓,用來承載單個(gè)圖表組合;

封裝不同的圖表的處理邏輯喷兼,規(guī)則展示篮绰,關(guān)聯(lián)數(shù)據(jù)集字段;

封裝圖表樣式季惯,例如大小吠各、顏色、背景勉抓、交互等可配置贾漏;

圖表關(guān)聯(lián)分析數(shù)據(jù)集,報(bào)告面板組合多個(gè)圖表生成報(bào)告藕筋;

實(shí)際的開發(fā)過程是非常復(fù)雜的纵散,管理各個(gè)業(yè)務(wù)線的數(shù)據(jù)源,聯(lián)合分析隐圾,適配各種圖表規(guī)范和樣式伍掀,都是一個(gè)十分漫長的過程。

3暇藏、基礎(chǔ)案例

接口入?yún)?/b>

承接上述業(yè)務(wù)場景蜜笤,這里參數(shù)都需要?jiǎng)討B(tài)傳入,例如操作的:數(shù)據(jù)集盐碱、圖表把兔、參數(shù)歸屬軸沪伙、或者業(yè)務(wù)產(chǎn)品參數(shù)等。

@RestController

publicclassDefineController{

@Resource

privateDataSetService dataSetService ;

/**

? ? * 自定義可視化報(bào)告入?yún)?/p>

? ? */

@GetMapping("/getDefChart")

publicMap> getDefChart (){

List chartParamList =newArrayList<>() ;

chartParamList.add(newChartParam("X",1,"data_set_view","product_sort")) ;

chartParamList.add(newChartParam("X",1,"data_set_view","product_name")) ;

chartParamList.add(newChartParam("Y",2,"data_set_view","high_praise")) ;

chartParamList.add(newChartParam("Y",2,"data_set_view","low_praise")) ;

chartParamList.add(newChartParam("Z",3,"data_set_view","inventory",1)) ;

chartParamList.add(newChartParam("Z",3,"data_set_view","total_sales",1)) ;

returndataSetService.analyData(chartParamList);

}

}

參數(shù)解析

根據(jù)各種動(dòng)態(tài)參數(shù)县好,解析查詢條件围橡,獲取查詢結(jié)果。

@Service

publicclassDataSetServiceImplimplementsDataSetService{

@Resource

privateDataSetMapperdataSetMapper;

// 分析任務(wù)劃分

? ? @Override

? ? public Map<Integer, List<ChartParam>> analyData(List<ChartParam> chartParamList) {

? ? ? ? Map<Integer, List<ChartParam>> dataMap = chartParamList.stream()

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .collect(Collectors

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .groupingBy(ChartParam::getDataType));

? ? ? ? for (Integer dataType:dataMap.keySet()){

? ? ? ? ? ? switch (dataType){

? ? ? ? ? ? ? ? case 1: // Count 風(fēng)格數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? taskCount(dataMap.get(dataType));

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 2: // Sum 風(fēng)格數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? taskSum(dataMap.get(dataType));

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 3: // Percent 風(fēng)格數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? taskPercent(dataMap.get(dataType));

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return dataMap ;

? ? }

? ? // Count 數(shù)據(jù)執(zhí)行

? ? private void taskCount (List<ChartParam> chartParamList){

? ? ? ? for (ChartParam chartParam:chartParamList){

? ? ? ? ? ? chartParam.setResultNum(dataSetMapper.taskCount(chartParam.getColumnName(),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? chartParam.getTableName()));

? ? ? ? }

? ? }

? ? // Sum 數(shù)據(jù)執(zhí)行

? ? private void taskSum (List<ChartParam> chartParamList){

? ? ? ? for (ChartParam chartParam:chartParamList){

? ? ? ? ? ? chartParam.setResultNum(dataSetMapper.taskSum(chartParam.getColumnName(),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? chartParam.getTableName()));

? ? ? ? }

? ? }

? ? // Percent 數(shù)據(jù)執(zhí)行

? ? private void taskPercent (List<ChartParam> chartParamList){

? ? ? ? for (ChartParam chartParam:chartParamList){

? ? ? ? ? ? chartParam.setResultNum(dataSetMapper.taskPercent(chartParam.getColumnName(),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? chartParam.getTableName(),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? chartParam.getProductId()));

? ? ? ? }

? ? }

}

總結(jié)一句:數(shù)據(jù)可視化工具建設(shè)是個(gè)漫長過程聘惦,不僅僅可以分析自己公司的業(yè)務(wù)某饰,也可以作為開放BI工具產(chǎn)生價(jià)值。

文章結(jié)束了善绎,分享給大家一些Java架構(gòu)師的學(xué)習(xí)教程(僅展示部分圖片)黔漂。需要的小伙伴記得添加W?:bjmsb07 免費(fèi)獲取奧!

感謝大家的閱讀禀酱,看到最后了炬守,希望大家給小編個(gè)關(guān)注,多多轉(zhuǎn)發(fā)收藏哈剂跟。咱們下一篇不見不散减途!需要資料的小伙伴記得添加W?:bjmsb07 免費(fèi)獲取奧!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曹洽,一起剝皮案震驚了整個(gè)濱河市鳍置,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌送淆,老刑警劉巖税产,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異偷崩,居然都是意外死亡辟拷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門阐斜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衫冻,“玉大人,你說我怎么就攤上這事谒出∮绶” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵笤喳,是天一觀的道長为居。 經(jīng)常有香客問我,道長莉测,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任唧喉,我火速辦了婚禮捣卤,結(jié)果婚禮上忍抽,老公的妹妹穿的比我還像新娘。我一直安慰自己董朝,他們只是感情好鸠项,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著子姜,像睡著了一般祟绊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哥捕,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天牧抽,我揣著相機(jī)與錄音,去河邊找鬼遥赚。 笑死扬舒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凫佛。 我是一名探鬼主播讲坎,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愧薛!你這毒婦竟也來了晨炕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對情侶失蹤毫炉,失蹤者是張志新(化名)和其女友劉穎瓮栗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碘箍,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遵馆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丰榴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片货邓。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖四濒,靈堂內(nèi)的尸體忽然破棺而出换况,到底是詐尸還是另有隱情,我是刑警寧澤盗蟆,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布戈二,位于F島的核電站,受9級(jí)特大地震影響喳资,放射性物質(zhì)發(fā)生泄漏觉吭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一仆邓、第九天 我趴在偏房一處隱蔽的房頂上張望鲜滩。 院中可真熱鬧伴鳖,春花似錦、人聲如沸徙硅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗓蘑。三九已至须肆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桩皿,已是汗流浹背豌汇。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留业簿,地道東北人瘤礁。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像梅尤,于是被迫代替她去往敵國和親柜思。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344