胡世洋 劉威



關鍵詞:農產品;可視化;商業智能;數據庫;FineBI
1 引言
隨著信息技術的快速發展,推進信息化技術與農業生產、農業產業化的深度融合,已經是大勢所趨[1]。我國農業問題也朝著數據化、智能化的方向發展[2]。農業問題的信息化需要將農業相關的數據采集至服務器端,再對這些數據的價值進行深度挖掘,從而為決策找到數據依據。數據價值的挖掘是一個復雜的問題,如何從龐雜的數據中快速提取有效的信息,是數據研究的重要目標,數據可視化為我們挖掘農業數據價值提供了新的工具[3]。本文以農產品的生產和銷售的數據為研究對象通過使用可視化分析的方法來研究農產品產銷數據背后的信息內涵。
2 問題的概述
本文的主要研究對象是農產品的生產和銷售的數據,數據源于“微農”信息服務平臺的數據采集以及部分網絡數據的整合。它主要是研究廣西壯族自治區各地區農作物、農產品、商家、顧客、商品銷售、商品求購、商品流向等相關數據,從而總體上把握本地區農產品的銷售情況,尤其是對遭受自然災害地區、貧困地區的農產品、滯銷嚴重的農產品的銷量有重點體現。還需要對農產品的地理分布、價格趨勢、產能、銷量、消費群體,受眾顧客的消費行為等進行分析,從而找到規律和特征,從而為農業信息決策提供支撐。
3 可視化工具的選擇
常用的數據可視化工具有Excel、FineBI、Tableau、PowerBI、CiteSpace等。Excel是Microsoft公司旗下的一款表格軟件,Excel提供的數據圖表可以多層次展現數據內容。FineBI 是帆軟軟件有限公司推出的一款商業智能產品。它是新一代大數據分析的BI 工具,旨在幫助企業的業務人員充分了解和利用他們的數據[4]。Tableau是基于斯坦福大學突破性技術的軟件應用程序。它幫助用戶分析實際存在的任何結構化數據。PowerBI是Microsoft公司旗下的一款商業智能軟件,它可以將復雜的數據簡化為簡潔的視圖。CiteSpace是一款著眼于分析科學分析中蘊含的潛在知識,是在科學計量學、數據可視化背景下逐漸發展起來的引文可視化分析軟件[5]。經過對比分析,本文采用FineBI 可視化工具進行數據分析。因為FineBI 擁有強大的大數據引擎,且擁有龐大的用戶群體。
4 數據的準備
農產品的生產和銷售的數據存放在MySQL數據庫當中。FineBI需要從MySQL數據庫讀取并處理數據。Fine BI在管理數據時使用分組和業務包的方式來劃分不同來源的數據,所以需要新建一個分組和業務包為后面的數據連接做好準備。FineBI中的數據類別又可以分成實時數據和抽取數據。如果選擇實時數據類別,Fine BI將直接訪問數據庫中的數據,此時數據分析速度會變慢。如果選擇抽取數據類別,Fine BI會將數據庫中的數據存取一份到Fine BI磁盤中,此時數據分析速度會更快。這里采用實時數據和抽取數據相結合的方式,對于實時性要求不高的操作,選用抽取數據類別來提高效率。對于實時性要求高的操作,如用戶交互操作等,則選用實時數據方式,從而與原始數據保持一致。在FineBI的“數據連接”的配置項里面配置數據庫驅動、數據庫名稱、端口、用戶名和密碼等內容,如果該連接經測試成功之后,它的連接的配置會被保存到FineBI之中。數據連接建立后就可以在“業務包”里面添加數據表。數據表可以是MySQL的直接數據表,也可以是基于MySQL數據表的SQL數據集,也可以是自定義的自助數據集。如果儀表盤需要有交互操作,它的數據表應是自助數據集表。
由于初始數據常常是雜亂的、不完備的,噪聲和誤差不可避免,因此需要將初始數據進清洗處理。此處采用Python程序和自定義的PROCEDURE程序相結合來完成數據的清洗。數據清洗之后需要及時與FineBI的數據表進行同步。由于有的數據在數據的海洋里隱藏頗深,所以需要將數據進行變換和特征提取等處理。這些工作完畢之后才可以使用可視化工具來映射和展現。為了進一步突然數據的個性化展示,還需要提供用戶交互的功能,使用戶在多層次感知數據的同時獲取有價值的信息[6]。
5 可視化分析的過程
數據的可視化分析需要有清晰的分析脈絡,如果以用戶的視角來劃分,農產品的生產和銷售數據的可視化分析可以從管理員視角、商家視角和顧客視角對數據進行不同維度和層次的分析和透視。
5.1 以管理員為視角的數據分析
管理員角度看到的數據應該是全局性的,關乎決策的數據信息。這種數據涉及范圍是整個數據庫里的內容。對這種數據的分析應該是粗粒度的、宏觀的分析,個別數據的變動不應對整個的數據分析有決定性影響。下面通過以下幾個方面對數據進行分析。
1)農產品銷售流向分析
農產品流向分析圖是分析某一地區的某一種農產品的銷售方向。通過對農產品流向圖的分析可以使管理員整體上把握農產品的現有銷售情況,在市場宏觀調控時這些信息具有較高的借鑒價值。此處選用FineBI中圖表類型中的流向圖來解決這個問題。FineBI中的流向圖需要提供路線和標識從而來明確農產品的來源地和目的地,然而從現有的農產品銷售數據表中并沒有路線和標識的確切信息,所以在展示流向圖時就需要采用PROCEDURE對原數據進行二次加工。首先我們將顧客、農產品和銷售這三個表進行聯表查詢,將查到的商品名稱、商品地址、顧客地址和銷售金額存放在一個視圖里面。其次,遍歷這個視圖,將視圖中商品地址作為流出地,顧客地址作為流入地。流出地和流入地的結合則形成流向路線。流出地的記錄中的“標識”被定義為0,與流向路線一起插到新表當中。同樣流入地的記錄中的“標識”被定義為1,與流向路線一起插到新表當中。二次加工完畢,我們可以將新表導入FineBI的數據列表當中。在FineBI 中創建新儀表盤,將數據來源選定剛才的新表,將維度區域中的“地區”設置成地理角色(區縣),選定圖表類型為流向地圖,拖動“經度”到橫軸,拖動“緯度”到縱軸,將指標區域中的標識拖動到連線的位置。此時流向圖基本形成,但是內容過于繁雜,如果需要分析某一地區的某一種農產品的銷售方向,就需要將“路線”和“名稱”拖動到“結果過濾器”當中,并進行過濾設置。如果把“路線”拖動到“顏色”,把“交易額”拖動到“大小”,還可以清晰看到銷往不同區域的交易量。此處我們以“萬秀區”的八角為例,可以明顯看到這種農產品銷往了灌陽、興安、荔浦等地,如圖1 所示。
2)銷售額隨時間變動分析
銷售額隨時間變動圖反映的是某一個時間段求和后的銷售交易金額隨時間浮動情況。該圖可以使管理員能夠洞悉某段時間內農產品市場的活躍程度,從而為宏觀市場決策提供數據支撐。在數據列表中選擇自助數據集中的“農產品銷售詳情表”作為數據來源并創建組件,選定圖表類型為折線圖,將交易時間和交易金額分別拖動至橫軸和縱軸。可以在交易時間字段選擇具體的某一個時間段進行顯示。為了突出浮動效果,在“交易金額”字段上選擇“設置值軸”,在“設置值軸”窗口中自定義顯示范圍。在“交易金額”字段上選擇“設置警戒線”,選擇“橫向警戒線”,并且添加均值警戒線。在此處我們以八月份的交易情況為例,我們可以得知在8月上旬交易行情頗為活躍,但是到了8月中旬和下旬交易額略有下降。說明隨著季節的替換,一部分的農產品逐漸退出市場,如圖2所示。
3)求購排名前10的產品詞云分析
求購排名前10的產品詞云圖反映的是顧客求購數量最多的農產品。該圖可以讓管理員知悉哪些農產品是顧客潛在需要的,為以后有效滿足供應提供數據支撐。在數據列表中選擇自助數據集中的“求購表”作為數據來源并創建組件,選定圖表類型為詞云。為了突出農產品種類的差異,將“求購商品”也拖動至“顏色”。為了突出農產品的求購數額差異,將指標窗口中的“需要數量”拖動至“大小”。最后把這兩個字段也都分別拖入到“標簽”和“提示”。由此可以得知八角、油茶、茶葉、茶油等農產品有較強的市場潛力,如圖3所示。
4)銷售量前10的農產品分析
銷售量前10的農產品氣泡圖反映的是所有農產品中最受歡迎的農產品。該圖可以讓管理員知悉某段時間內哪些農產品在農產品市場里活躍度較高,為以后有效滿足供應提供數據支撐。在數據列表中選擇自助數據集中的“農產品銷售詳情表”作為數據來源并創建組件,選定圖表類型為聚合氣泡圖。為了突出農產品種類的差異,將“農產品名稱”也拖動至“顏色”。為了突出農產品的銷售額差異,將指標窗口中的“農產品日銷量”拖動至“大小”。最后把這兩個字段也都分別拖至“標簽”“提示”。針對“農產品名稱”字段設置過濾,過濾的條件是“農產品日銷量”為前十的農產品,由此可以得知甘蔗、香豬、柚子等10個農產品在銷售市上的份額較高,說明這些農產品在這一階段較為受歡迎,如圖4所示。
5)原生態產品在農產品中的比重分析
原生農產品在農產品中的比重圖反映的是無須二次加工的原生農產品與二次加工后的農產品之間的比值。該圖可以讓管理員知悉某段時間內我區農產品加工水平的高低,為以后的宏觀調控提供數據支撐。現在數據都無法直接支持原生農產品在農產品中的比重的可視化,因此需要對數據進行二次加工。首先,依托“農作物信息表”設計一個關于全部農產品的產量視圖。其次,依托“農作物信息表”設計一個關于原生農產品的產量視圖。再次,將這兩個視圖按照左連接的方式連接起來,這樣連接后的視圖必然會使加工過的農產品記表中的“農作物”字段為空值。最后,我們可以將新視圖導入FineBI的數據列表當中。在FineBI中新建儀表盤,將數據來源選定剛才的新視圖,選定圖表類型為餅圖。將“農作物”字段分別拖動至“顏色”“角度”“標簽”。對“農作物”字段進行分組,這一字段為空值的記錄劃歸“二次加工產品”組。相反該字段不為空的記錄劃歸“原生農產品”組。這樣餅圖就生成成功了,如圖5所示。
6)面向管理員的地圖和地理信息分析
地圖和地理信息分析主要包括受災農產品地圖分析、滯銷產品的地理分布分析、各市存貨量分析、貧困戶農產品分布分析、各市銷售額分析等。選定數據來源之后,需在儀表盤選定圖表類型為區域地圖,將代表地理位置的字段轉換成地理角色,拖動“經度”到橫軸,拖動“緯度”到縱軸。再將需要分析的主題字段拖動至“結果過濾器”,其他相關字段拖動至“顏色”和“標簽”里進行顯示。值得注意的是,有的分析主題需要特征提取才可以。比如判斷某個農產品是否滯銷,將“存貨量”和“總產量”的比值作為農產品是否滯銷的重要數據參考。如果這個比例太高說明大概率存在滯銷的情況,反之說明很暢銷。由于篇幅所限,此處僅以受災農產品地圖為例,闡述受災農產品地理分布情況。
受災農產品地圖反映的是受災地區農產品的儲備情況。該圖可以讓管理員知悉某段時間內哪片受災區域的農產品存在潛在滯銷的問題,為將來可能的政策傾斜提供數據支撐。在數據列表中選擇自助數據集中的“農產品銷售詳情表”作為數據來源并創建組件,選定圖表類型為區域地圖,將維度區域中的“農產品所在縣”設置成地理角色(城市),拖動“經度”到橫軸,拖動“緯度”到縱軸。將維度區域中的“農產品是否災區產品”拖動至“結果過濾器”,添加過濾選項并設置“農產品是否災區產品”的值為“是”。把維度列表中的“農產品所在縣”以及指標窗口中的“農產品存貨量”拖動至“標簽”。為了突出存貨量的數額差異,將“農產品存貨量”也拖動至“顏色”。由此我們可以得知平南縣的花生、防城區的肉桂、平樂縣的沙田柚可能會因災滯銷,需要在未來的市場調控予以傾斜,如圖6所示。
5.2 以商家為視角的數據分析
商家視角關注到的數據應該是與本商家所擁有產品相關的農產品信息,這些數據應是局部的,可選擇的,具有實時性特點的。對這種數據的分析應該是細粒度的,微觀的分析,分析的目的是為經營決策提供支撐,下面通過以下幾個方面對數據進行分析。
1)實時數據集的創建
如果站在賣家的視角來分析數據的話,賣家可能對全局性的數據興趣不大,而對自己所售的農產品或其他相關的農產品興趣較大。因此這樣的數據可視化儀表應有過濾功能。因此我們在FineBI的“數據準備”中將抽取數據列表切換為實時數據列表,將DB數據庫表再添加進實時數據列表當中。
2)農產品的價格曲線分析
農產品的價格曲線圖反映的是某一種農產品在一段時間內的價格波動情況。該圖可以讓賣家對農產品的價格走勢有成熟的理解,從而制訂符合季節特征的產品價格從而獲取最大的利潤。
添加“SQL數據集”,將顧客、農產品、銷售和商家這幾個表進行聯表查詢,設置商品的小類為查詢參數從而創建“實時農產品銷售數據表”。在FineBI中新建儀表盤,將數據來源選定為“實時農產品銷售數據表”。此處我們可選用FineBI中圖表類型中的多系列折線圖來解決這個問題。將“交易時間”“交易價格”兩個字段分別拖動到橫軸和縱軸。為了突出價格的差異波動,設置“最大值”“均值”“最小值”三個參考線。為了突出價格在某段時間的波動趨勢,設置了多項式擬合趨勢線。然而農產品的種類繁多,用戶需要選擇一個自己關心的農產品來進行分析。所以需要添加文本過濾組件,并在“綁定參數”里面選擇“小類”。需要說明的是小類的設置是為了避免同類別的農產品因名稱不同而重復分析,它與大類相對應。而大類的粒度太大使數據分析失去價值,因此此處的過濾參數設置為小類。將農產品的價格曲線組件也放入過濾文本的控制范圍內,輸入小類名稱就可以看到該小類下的農產品價格隨時間的變化情況,如圖7 所示。
3)購買產品的顧客年齡分布分析
購買產品的顧客年齡分布圖反映的是某一類別的農產品的主要購買者的年齡比例。該圖可以讓賣家知曉自己所銷售的農產品受哪個年齡段的顧客歡迎。從而為自己以后的經營決策提供數據支撐。仍然選定SQL數據集中的“實時農產品銷售數據表”作為數據源并創建組件。選定圖表類型為餅圖。無論是“維度”區域還是“指標”區域,均未出現“年齡”字段。于是新建一個“年齡”字段,字段設置成當前年份減去出生年份,即:YEAR(NOW())-YEAR(${顧客生日})。將“年齡”字段拖動至“顏色”“角度”“標簽”,再對“年齡”字段進行分組。將該組件集成到文本過濾組件所在的儀表盤,并且將文本過濾組件的控制范圍擴大到本組件上來。輸入小類名稱,可以看到該小類產品的主要購買者的年齡比例,如圖8所示。
4)面向商家的地圖和地理信息分析
面向商家的地圖和地理信息分析主要包括購買產品的顧客的地理分布分析,農產品主要分布及產量情況分析,求購信息地理位置分布分析等。主要的分析過程與面向管理員的地理信息分析相似,不同的是這時創建的地圖組件也需要集成到文本過濾組件所在的儀表盤。下面僅以購買產品的顧客的地理分布為例闡述分析過程。
購買產品的顧客的地理分布地圖反映的是某一類別的農產品的主要購買者所在的區域。該圖可以讓賣家知曉自己所銷售的農產品都是被哪些地方的顧客購買的,為自己以后的經營決策提供數據支撐。仍然選定SQL數據集中的“實時農產品銷售數據表”作為數據源并創建組件。選定圖表類型為區域地圖,將維度區域中的“顧客所在縣”設置成地理角色(區縣),拖動“經度”到橫軸,拖動“緯度”到縱軸。為了突出交易金額的差異,將“交易金額”拖動至“顏色”,將“顧客所在縣”拖動至“標簽”。將該組件集成到文本過濾組件所在的儀表盤,并且將文本過濾組件的控制范圍擴大到本組件上來。輸入小類名稱,可以看到購買過該小類產品的顧客的地理分布,如圖9所示。
5.3 以顧客為視角的數據分析
顧客視角關注的數據應該是跟顧客購買相關的農產品信息,這些數據應是局部的,可選擇的,具有實時性特點的。對這種數據的分析應該是細粒度的,微觀地分析,分析的目的是為提高顧客的購物體驗,優化購物行為,下面通過幾個方面對數據進行分析。
1)顧客購買產品的種類分析
顧客購買產品的種類圖反映的是顧客購買的農產品類別的構成情況。該圖可以讓顧客知曉自己在哪個類別下的農產品上消費較多,從而提升購物體驗。添加“SQL數據集”將顧客、農產品、銷售、商家這幾個表進行聯表查詢,設置顧客為查詢參數創建“實時產銷數據表”。在FineBI中新建儀表盤,將數據來源選定為“實時產銷數據表”。選定圖表類型為餅圖。將維度區域中的“農產品大類”拖至“顏色”和“標簽”,將指標區域中的“交易金額”拖至“角度”。然而顧客的人數繁多,顧客通常只關心自己的農產品購買情況。所以需要添加文本過濾組件,并在“綁定參數”里面選擇“顧客”。設置過濾文本的控制范圍包括顧客購買產品的種類圖。輸入顧客名稱,可以看到該顧客購買的農產品類別的構成情況,如圖10所示。
顧客求購商品種類圖反映的是顧客網上求購的農產品類別的構成情況。該圖可以讓顧客知曉自己在哪個類別下的農產品上求購的次數較多,從而提升購物體驗。添加“SQL數據集”將顧客、農產品、求購這幾個表進行聯表查詢,設置顧客為查詢參數創建“顧客實時求購信息數據表”。在FineBI中創建組件新建儀表盤,將數據來源選定為“顧客實時求購信息數據表”。選定圖表類型為餅圖。將維度區域中的“農產品大類”拖入“顏色”和“標簽”,將指標區域中的“記錄”拖入“角度”。將該組件集成到文本過濾組件所在的儀表盤,并且將文本過濾組件的控制范圍擴大到本組件上來。輸入顧客名稱,可以看到該顧客求購商品種類情況,如圖11所示。
3)顧客消費前10的產品分析
顧客消費前10的產品圖反映的是顧客消費金額最高的10種農產品。該圖可以讓顧客知曉自己在哪些農產品上消費金錢較多,從而提升購物體驗。仍然選定SQL數據集中的“實時產銷數據表”作為數據源并創建組件。選定圖表類型為柱形圖,將維度區域中的“農產品名稱”拖入“橫軸”,將指標區域中的“交易金額”拖入“縱軸”。對“農產品名稱”字段設置過濾,過濾條件是前10條記錄。再讓柱形圖中的記錄呈降序排列。為了突出農產品之間的差異,將維度區域中的“農產品名稱”拖入“橫軸”。將該組件集成到文本過濾組件所在的儀表盤,并且將文本過濾組件的控制范圍擴大到本組件上來。輸入顧客名稱,可以看到該顧客消費前10的產品情況,如圖12所示。
4)顧客消費時段分析
顧客消費時段分析圖反映的是顧客在不同時間段的消費情況。該圖可以讓顧客知曉自己在哪個時間段消費的次數較多,從而提升購物體驗。仍然選定SQL數據集中的“實時產銷數據表”作為數據源并創建組件。選定圖表類型為折線圖,將維度區域中的“交易時間段”拖入“橫軸”,將指標區域中的“記錄數”拖入“縱軸”。將該組件集成到文本過濾組件所在的儀表盤,并且將文本過濾組件的控制范圍擴大到本組件上來。輸入顧客名稱,可以看到該顧客在不同時間段的消費情況,如圖13所示。
6 圖表的整合、分享與集成
以上多個可視化儀表盤可整合至一個統一的儀表盤。主次分明、布局合理、色彩協調是對整合后的儀表盤的基本要求。此處是將重要的可視化視圖放在偏左、偏上的位置,相對次要的視圖放在偏右、偏下的位置。在儀表盤面板找到整合后的儀表盤再創建公共鏈接并將其集成在Java Web工程當中。
7 結束語
由于可視化圖形比數據直觀和立體,所以使用可視化工具來挖掘數據價值的方法是非常快速的、高效的。它能將大部分的數據價值展現給用戶查看,它是大數據分析和商業智能的重要利器,它的應用也越來越廣泛[7]。但相對于深度學習而言,可視化工具的挖掘深度有所不及。深度學習可以挖掘人們不易察覺的更深層的數據價值[8]。因此可視化分析應與深入學習融合起來才能更全面地解決現實問題。這也是課題組下一步的分析方向。