楊國丹
(西南交通大學制造業產業鏈協同與信息化支撐技術四川省重點實驗室,成都 611756)
隨著我國經濟的快速發展,人民生活水平日益提高,汽車也走進了千家萬戶。中國汽車保有量繼2020 年底趕超美國成為全球第一之后,繼續保持高速的增長,2021 年中國的汽車保有量將突破3 億大關[1]。隨之產生的海量的、不同形式的、不同來源的數據應該如何更好地為汽車產業中的產品設計和研發、制造過程優化、營銷和銷售、服務和售后賦能是我們亟待解決的重要問題之一。
針對上述問題,本文設計了基于VizQL 的汽車行業數據可視化系統,幫助汽車研發人員更直觀地了解市場需求、產品特性和競爭對手情況,有利于進行產品設計和研發;幫助企業進行生產計劃和流程優化,提高生產效率和質量;幫助企業了解消費者需求、市場趨勢和競爭對手情況,從而制定更合適的營銷策略和銷售計劃,提高銷售效率和市場占有率;幫助汽車企業和經銷商提高售后服務質量,滿足消費者需求。
數據可視化是將數據轉化為圖形或圖表等視覺元素的過程。通過將數據可視化,我們可以更直觀地看到數據之間的關系、趨勢和模式,進而更好地理解和分析數據。數據可視化可以使得大量的復雜數據更易于理解和溝通,使得數據分析更加高效、準確。
文獻[2]提出了一個數據可視化推薦系統DeepEye,通過將一組算子轉換數據集,以一種強制的方式自動可視化給定的數據集。文獻[3]提出了一個可視化推薦引擎SeeDb,在給定的數據子集中,SeeDb智能地探索可視化空間,評估其最有趣的可視化推薦。
一些針對于實際場景的數據可視化分析系統,包括:鄧智豪[4]通過數字駕駛艙的方式實現了自定義可視化分析引擎的系統,用戶可以根據不同的業務場景來定制適合業務的可視化面板;丁超凡[5]使用Web 技術和數據可視化技術設計了交通數據可視化分析系統,通過多角度分析,呈現交通特性和演變規律。
VizQL 是由斯坦福大學的Polaris[6]系統演化而來,它是數據可視化查詢語言,它允許用戶通過拖放和點擊的方式直接操作可視化元素,從而輕松地探索和分析數據。VizQL將用戶的可視化請求轉換為SQL 查詢,然后將查詢結果渲染為交互式可視化。通過VizQL,用戶可以直接在可視化過程中進行數據操作,例如對圖表中的數據點進行篩選、排序、聚合等操作,而無需手動編寫代碼或執行SQL 查詢。這種交互式的數據探索方式使得數據分析變得更加直觀和靈活,降低了使用者的技術門檻,并幫助用戶更快速地發現數據中的關鍵信息。VizQL的主要優勢之一是其高度的可擴展性。它支持多種數據源,包括關系型數據庫、非關系型數據庫、文本文件、Web 數據等,并且可以將多個數據源組合在一起,以便更好地分析和理解數據。此外,VizQL還支持自定義計算字段、多維度分析、動態參數控制等高級功能,以滿足各種數據分析需求。
2.2.1 表代數
首先需要定義一個正式的機制來指定表配置,為此定義了一個代數。一個完整的表配置由這個表中的三個單獨的表達式組成。其中兩個表達式定義了表的x軸和y軸的配置,將表劃分為行和列。第三個表達式定義了表格的z 軸,它將顯示劃分為多個層次。
這個表代數中的操作數是數據庫的維度和度量字段的名稱。我們將用X、Y和Z來表示維度場(如數據庫表中的企業名稱、企業地址等),用P、Q和R來表示度量場(如數據庫表中的企業年收入、月收入等)。我們以下述方式為每個字段分配有序集:對維度字段,我們分配字段的維度域的成員;對度量字段,我們分配包含字段名的單個元素集。
將集合分配給符號反映了兩種類型字段在表結構中的編碼方式的差異。維度字段將表劃分為行和列,而度量字段將在空間上編碼為窗格中的軸。在代數中,一個有效的表達式是一個由一個或多個符號組成的有序序列,在每對相鄰的符號之間有運算符,并用括號來改變運算符的優先級。代數中的運算符是交集(×)、閾值(/)和關聯(+),按優先順序列出。每個運算符的精確語義是根據其對操作數集的影響來定義的。
其中關聯的運算為
交集的運算為
閾值運算為
其中:R表示要分析的數據集;r被定義為一條記錄;X(r)表示記錄r的字段X的值。
對每個運算符使用上述集合語義,代數中的每個表達式可以簡化為單個集合,集合中的每個條目是零個或多個維度值與零個或多個度量字段名的有序連接。我們稱這個表達式的集求值為規范化集形式。表達式的規范化集合形式決定表的一個軸:表軸被劃分為列(或行或層),因此規范化集合中的集合條目和列之間有一一對應關系。
2.2.2 生成數據庫查詢
通過上述生成可視化規范查詢對應于生成數據庫查詢,該查詢選擇用于分析的數據子集,然后篩選、排序將結果分組到窗格中,最后將數據傳遞給圖形編碼。
首先我們先選擇數據源,對于維度字段X,用戶可以將字段的域的子集指定為有效。如果filter(x)是用戶選擇的子集,那么表示x的過濾器的關系是Xinfilter(X)。
對于度量字段P,用戶可以將字段的域的子集定義為有效。如果min(P)和max(P)是這個子集的用戶定義范圍,那么表示P的過濾器的關系是(P≥min(P)&P≤max(P) )。
所以我們可以將上述關系表示為第一階段的SQL語句:SELECT*WHERE{filters} 。
其次將檢索到的記錄劃分為對應于表中每個窗格。正如前文所討論的,表軸表達式的規范化集合形式決定了表的配置。表被劃分為與這些集合中的條目相對應的行、列和層。假設Row(i)是表示第i行選擇標準的代表,Col(j)是表示第j列選擇標準的代表,Layer(k)是表示第k層選擇標準的代表。如果表的y軸是由規范化集定義的:{x1y1P,x1y2P,x2y1P,x2y2P}。
那么可以通過一下查詢檢索到要分區到第i行、第j列、第k層交匯處的窗格中的記錄:
最后一步就是轉換每個窗格內的記錄。如果可視化規范包括聚合,則必須為數據庫中的每個度量值分配聚合運算符。如果用戶沒有指定運算符,那么我們默認地為度量值設定聚合運算符為SUM。度量值的運算符由兩個組成,定義為
所以最終形式的SQL語句為
本文基于VizQL 開發了汽車工業數據可視化系統,并對該系統的應用進行情況說明。
我們根據指定的數據源,選擇不同的場景需求,可以指定以下可視化分析界面,不同類型界面見圖1、圖2、和圖3。

圖1 服務站分布可視化分析界面

圖2 維修售后數據可視化分析界面

圖3 實體關系可視化分析界面
本文提出了一種基于VizQL 的汽車行業數據可視化系統,通過利用VizQL 語言實現對汽車行業數據可視化的轉換,使用戶可以獲得更豐富的可視化界面和分析界面。在未來的工作中,交互式響應率和交互歷史是一個值得關注的問題。