快速搭建實時數(shù)倉分析大屏
本文為您介紹如何使用實時數(shù)倉Hologres對接實時計算,快速搭建實時數(shù)倉分析大屏的最佳實踐。
前提條件
開通Hologres并連接開發(fā)工具,詳情請參見DataWorks快速入門或連接HoloWeb并執(zhí)行查詢。
開通實時計算,詳情請參見開通實時計算Flink版。
說明請確保實時計算和Hologres位于同一地域,且使用的交換機(jī)和VPC相同。
開通DataV,詳情請參見開通DataV-Board服務(wù)。
背景信息
Hologres是阿里云的實時交互式分析產(chǎn)品,通過內(nèi)置的實時數(shù)據(jù)API(詳情請參見實時數(shù)據(jù)API)直接對接實時計算,實現(xiàn)高并發(fā)實時寫入或查詢實時數(shù)據(jù),速度達(dá)到秒級。
Hologres兼容PostgreSQL,將查詢到的數(shù)據(jù)直接對接BI分析工具,使用可視化方式快速分析和展現(xiàn)數(shù)據(jù)。
本文以搭建某電商店鋪實時運(yùn)營指標(biāo)大屏為例,展示店鋪的總流量、每個商店的訪問量、區(qū)域銷售量和熱銷商品數(shù)據(jù)。
使用Hologres搭建實時運(yùn)營指標(biāo)大屏的完整鏈路圖如下所示。
采集源數(shù)據(jù)并實時寫入實時計算,通過實時計算清洗并聚合數(shù)據(jù)。
實時寫入處理后的數(shù)據(jù)至Hologres,使用Hologres進(jìn)行交互式查詢。
Hologres對接數(shù)據(jù)大屏DataV,展示實時運(yùn)營指標(biāo)大屏。
操作步驟
獲取源數(shù)據(jù)。
通過流式數(shù)據(jù)服務(wù)DataHub或者其他業(yè)務(wù)日志獲取源數(shù)據(jù)。
為了方便流程操作,本試驗從實時計算直接產(chǎn)生數(shù)據(jù),詳情請參見第3步。
在Hologres中創(chuàng)建數(shù)據(jù)接收表。
使用Holoweb創(chuàng)建與源表字段及數(shù)據(jù)類型相同的表,用于接收實時寫入的數(shù)據(jù)。具體操作請參見連接HoloWeb并執(zhí)行查詢,SQL語句示例如下。
BEGIN; CREATE TABLE public.order_details ( "user_id" int8, "user_name" text, "item_id" int8, "item_name" text, "price" numeric(38,2), "province" text, "city" text, "ip" text, "longitude" text, "latitude" text, "sale_timestamp" timestamptz NOT NULL ); CALL SET_TABLE_PROPERTY('public.order_details','orientation', 'column'); CALL SET_TABLE_PROPERTY('public.order_details','clustering_key', 'sale_timestamp:asc'); CALL SET_TABLE_PROPERTY('public.order_details','segment_key', 'sale_timestamp'); CALL SET_TABLE_PROPERTY('public.order_details','bitmap_columns', 'user_name,item_name,province,city,ip,longitude,latitude'); CALL SET_TABLE_PROPERTY('public.order_details','dictionary_encoding_columns','user_name:auto,item_name:auto,province:auto,city:auto,ip:auto,longitude:auto,latitude:auto'); CALL SET_TABLE_PROPERTY('public.order_details','time_to_live_in_seconds', '3153600000'); CALL SET_TABLE_PROPERTY('public.order_details','distribution_key', 'user_id'); CALL SET_TABLE_PROPERTY('public.order_details','storage_format', 'orc'); COMMIT;
在實時計算控制臺中,上傳自定義Connector JAR資源ordergen。具體操作請參見上傳與使用自定義連接器。
實時計算清洗數(shù)據(jù)。
進(jìn)入實時計算控制臺,使用實時計算清洗并聚合源數(shù)據(jù),通過實時數(shù)據(jù)API將數(shù)據(jù)實時寫入Hologres。具體操作請參見SQL作業(yè)開發(fā),SQL語句示例如下。
CREATE TEMPORARY TABLE source_table ( user_id BIGINT, user_name VARCHAR, item_id BIGINT, item_name VARCHAR, price numeric (38, 2), province VARCHAR, city VARCHAR, longitude VARCHAR, latitude VARCHAR, ip VARCHAR, sale_timestamp TIMESTAMP ) WITH ('connector' = 'ordergen'); CREATE TEMPORARY TABLE hologres_sink ( user_id BIGINT, user_name VARCHAR, item_id BIGINT, item_name VARCHAR, price numeric (38, 2), province VARCHAR, city VARCHAR, longitude VARCHAR, latitude VARCHAR, ip VARCHAR, sale_timestamp TIMESTAMP ) WITH ( 'connector' = 'hologres', 'dbname' = '<holo_db>', 'tablename' = '<receive_table>', 'username' = '<uid>', 'password' = '<pid>', 'endpoint' = '<host>' ); INSERT INTO hologres_sink SELECT user_id, user_name, item_id, item_name, price, province, city, longitude, latitude, ip, sale_timestamp FROM source_table;
參數(shù)說明如下:
參數(shù)名
描述
holo_db
Hologres的數(shù)據(jù)庫名。
receive_table
Hologres接收數(shù)據(jù)的表名,本文中為
public.order_details
。uid
當(dāng)前云賬號的AccessKey ID。
pid
當(dāng)前云賬號的AccessKey Secret。
host
Hologres實例指定VPC網(wǎng)絡(luò)的域名。您可以進(jìn)入Hologres管理控制臺的實例詳情頁,從網(wǎng)絡(luò)信息中獲取域名。
前往實時計算的作業(yè)運(yùn)維頁面啟動作業(yè)至運(yùn)行階段,詳情請參見作業(yè)啟動。
在Hologres中實時查詢數(shù)據(jù)。
根據(jù)業(yè)務(wù)情況,在Hologres中從不同維度實時查詢實時寫入的數(shù)據(jù),示例如下。
SELECT SUM(price) AS "GMV" FROM order_details ; SELECT COUNT(DISTINCT user_id) AS "UV" FROM order_details ; SELECT city AS "城市", COUNT(DISTINCT user_id) AS "購買用戶數(shù)" FROM order_details GROUP BY "城市" ORDER BY "購買用戶數(shù)" DESC limit 100; SELECT item_name AS "商品", SUM(price) AS "銷售額" FROM order_details GROUP BY "商品" ORDER BY "銷售額" DESC limit 100; SELECT to_char(sale_timestamp, 'MM-DD') AS "日期", SUM(price) AS "GMV" FROM order_details GROUP BY "日期" ORDER BY "GMV" DESC limit 100;
展示DataV實時大屏。
Hologres中查詢出的數(shù)據(jù)直接對接DataV,用于制作實時大屏。操作步驟如下:
添加數(shù)據(jù)源。
進(jìn)入DataV控制臺首頁,在左側(cè)導(dǎo)航欄單擊 ,在數(shù)據(jù)源頁面單擊新建數(shù)據(jù)源。
在添加數(shù)據(jù)源面板中配置Hologres數(shù)據(jù)源的相關(guān)參數(shù),參數(shù)詳情請參見添加實時數(shù)倉Hologres數(shù)據(jù)源。
單擊確定。
創(chuàng)建實時大屏。
根據(jù)大屏需要顯示的內(nèi)容,選擇相應(yīng)組件并配置數(shù)據(jù)源信息。詳情請參見概述。
本試驗中選擇了基本柱狀、輪播、基礎(chǔ)平面地圖和數(shù)字翻牌器。以配置數(shù)字翻牌器示例。
配置數(shù)據(jù)源信息。如下圖所示。
配置數(shù)字翻牌器的邊框、字體和顏色。
展示實時大屏。
配置大屏的插件參數(shù)及數(shù)據(jù)源信息后,可根據(jù)實際業(yè)務(wù)添加裝飾元素,美化插件。
左側(cè)實時顯示商品的訪問量以及城市的銷售額。
中間地圖實時顯示每一筆交易訂單的位置、總的銷售額以及總訪問次數(shù)。
右側(cè)實時顯示商品的銷售額占比和商品的銷售排行。