天天看點

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

注:maxcompute原名odps,是阿裡雲自研的大資料計算平台,文中出現的maxcompute與odps都指代同一平台,不做區分

qlikview是一款成熟的商業分析軟體,作為qliktech的旗艦産品,近幾年逐漸成為了全球增長率最快的bi産品。maxcompute作為一款有志于打造計算和資料生态的平台産品,實作與主流bi軟體的連通性勢在必行,本文将帶領讀者來一起看看如何打通qlikview通路maxcompute的通路,并以此為基礎完成簡單的資料分析與可視化。

qlikview目前隻支援windows系統,是以如果你是非windows的使用者,首先需要安裝一個虛拟機來支援windows系統。

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

下載下傳後的安裝不作贅述。

我們可以通過兩種主流的标準方式來實作與qlikview的連通,它們分别是 jdbc與odbc。就maxcompute而言,這兩種方式各有利弊,下文将一一闡述。

首先,我們需要安裝java(version>=1.7), 這步不作贅述。

qlikview本身并不直接支援連接配接到jdbc資料源,需要借助一個外挂的連接配接器才可以。是以我們需要準備好兩樣東西,分别是

接着,打開qlikview:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

然後按ctrl+e,進入script編輯器,在底部“data”頁中的“database”項選擇jdbcconnector對應的版本(比如我是64位的),然後點選“configuration”按鈕:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

qlikview将打開jdbcconnector,我們先在“java vm options”頁配置jvm,包括選擇安裝的jvm所在路徑以及配置jvm啟動參數:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

然後切換到“jdbc driver”頁配置jdbc驅動,添加準備好的maxcompute驅動jar包:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

切換到“advanced settings”頁繼續配置,此處maxcompute的jdbc驅動類是com.aliyun.odps.jdbc.driver:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

然後點選ok完成配置。接着我們點選connect按鈕,在彈出框中輸入jdbc url,其中user和password留白:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

jdbc url格式如下:

填寫完後點選“test”,如下圖表示連接配接測試成功:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

然後點選确定,你會看到script編輯器中已經為你添加了相關的連接配接語句,然後繼續添加類似如下的腳本:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

line1 :表示連接配接到odps jdbc,由上一步驟自動生成

line4-line5 :執行你指定的sql并将結果賦給data變量

line7:将data存到指定的qvd檔案中

然後點選reload按鈕,會展示如下視窗,表示sql正在執行中:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

完成後會如下所示:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

在相應的目錄中已經可以找到儲存好的qvd檔案,自此我們已經完成了通過jdbc方式對maxcompute的資料連通。下一次,我們可以直接打開該檔案來進行結果資料的離線分析。

由于maxcompute通過hiveserver2 proxy完成了對hive生态的相容,是以我們可以利用hive的odbc資料源來為qlikview打通到maxcompute的通路。

假設使用者已經安裝了某個hive的odbc驅動,我們首先去“控制台”-“管理工具”設定odbc資料源:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

選擇已經安裝的hive odbc驅動,建立一個使用者資料源:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

然後按下圖配置:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

其中host和port填寫與你hiveserver2 proxy一緻的配置,database填寫預設的project,user name和password可以分别填寫root和1234,然後點選“test”,如下顯示表示連接配接測試成功:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

然後點選“ok”完成配置。

打開qlikview,在左下角“data”-“database”選擇“odbc”,然後點選“connect”,彈出後選擇剛才配置的資料源,并點選“test connection”:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

點選“ok”後,彈出如下視窗(如沒有彈出,請點選“connect”下方的“select”按鈕):

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

在第一次加載時,這個過程可能會比較慢,因為需要一次性從服務端擷取你的meta資料,具體視你的帶寬和表數量而定。hiveserver2 proxy預設會針對這些資料進行緩存,即一次擷取後會一直使用本地緩存,是以如果你在hiveserver2 proxy運作過程中添加的新表,在qlikview中是無法看到的。有兩種方式來解決這類問題。第一種是重新開機hiveserver2 proxy,第二種是在啟動hiveserver2 proxy前在其配置檔案conf/hive-site.xml中增加如下配置項來禁用緩存,但是這樣的副作用就是每次點選都可能都需要從遠端擷取meta資料,造成操作的響應時間過慢。

等上述界面出現後,可以看到我們已經連接配接上maxcompute,上圖中“database tables”區域中羅列出了odps_dev這個project下的所有表,“fields”選中表的所有可選字段。值得注意的是qlikview将我們的project放置于“owner”字段處,而“database”對應的值是“hive”,這與maxcompute自身的概念是有所出入的,不過先不必在意,我們可以點選“ok”來為script編輯器生成相應的sql,如下圖:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

圖中箭頭所指向的“hive.” 這部分我們可以選擇手動删除掉,剛才曾提到這是與maxcompute有所出入的一個概念,但是hiveserver2 proxy也對此做了相容。當然你也可以直接在這裡編寫任意符合maxcompute文法的sql,而不是通過剛才可視化選擇的方式來生成sql。編寫完後,點選“reload”完成腳本的執行:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

至此,我們已經成功通過odbc完成了qlikview到maxcompute的連通。

接着,我們來看看如何實作資料分析和可視化。當我們成功完成目前腳本的執行之後(也可以通過導入之前儲存的qvd檔案),資料便已經加載到qlikview中,可以點選如下菜單來進入“快速圖表向導”為我們生成豐富的分析圖表:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

并在彈出視窗中依次選擇圖表的類型、次元、表達式及格式:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析
原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析
原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析
原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析
原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

并最終可以生成類似如下的豐富的可視化圖表,包含餅圖、折線圖等:

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析

本文的目的并不在于詳細的講述qlikview的各種功能特性與使用方式,如果對這塊感興趣的讀者可以關注該産品的官方文檔。筆者的目的主要還是帶領讀者熟悉兩種qlikview打通maxcompute資料通路的方式,它們分别是jdbc和odbc。前者的優勢是部署友善,性能也略好(因為是隻連maxcompute的),而其缺點則是qlikview jdbcconnector隻有30天試用期,說到底并不算是可以長期免費使用的。而odbc的優勢是hiveserver2 proxy是永久免費的,而且這種方式可以以可視化的方式來生成sql,但是需要你獨立配置并部署該元件。

原來MaxCompute還能這麼玩系列(3)—— 借力QlikView玩轉資料分析