本文為您介紹如何使用即時數倉Hologres對接Realtime Compute,快速搭建即時數倉分析大屏的最佳實務。
前提條件
開通Hologres並串連開發工具,詳情請參見HoloWeb快速入門。
開通Realtime Compute。
說明請確保Realtime Compute和Hologres的地區相同。
開通DataV,詳情請參見開通DataV服務。
背景資訊
Hologres是阿里雲的即時互動式分析產品,通過內建的即時資料API直接對接Realtime Compute,實現高並發即時寫入或查詢即時資料,速度達到秒級。
Hologres相容PostgreSQL,將查詢到的資料直接對接BI分析工具,使用可視化方式快速分析和展現資料。
本文以搭建某電商店鋪即時營運指標大屏為例,展示店鋪的總流量、每個商店的訪問量、地區銷售量和熱銷商品資料。
使用Hologres搭建即時營運指標大屏的完整鏈路圖如下所示。
採集來源資料並即時寫入Realtime Compute,通過Realtime Compute清洗並彙總資料。
即時寫入處理後的資料至Hologres,使用Hologres進行互動式查詢。
Hologres對接資料大屏DataV,展示即時營運指標大屏。
操作步驟
擷取來源資料。
通過流式資料服務DataHub或者其他業務日誌擷取來源資料。
為了方便流程操作,本實驗從Realtime Compute直接產生資料,詳情請參見第3步。
Hologres建立資料接收表。
使用Holoweb建立欄位和資料類型與源表相同的表,用於接收即時寫入的資料。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;
Realtime Compute清洗資料。
進入Realtime Compute開發平台,使用Realtime Compute清洗並彙總來源資料,通過即時資料API將資料即時寫入Hologres。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' = 'Hologres的資料庫名', 'tablename' = 'Hologres接收資料的表名', 'username' = '當前雲帳號的AccessKey ID', 'password' = '當前雲帳號的AccessKey Secret', 'endpoint' = 'Hologres的VPC網路地址:連接埠' ); insert into hologres_sink select user_id, user_name, item_id, item_name, price, province, city, longitude, latitude, ip, sale_timestamp from source_table;
發布即時作業。
提交並發布填寫完成的作業至生產環境。操作步驟如下:
引用資源套件。
選擇Realtime Compute開發平台左側功能表列的Connectors,單擊上方建立資源,配置上傳資源的參數,上傳JAR資源套件。
發布作業。
成功引用資源套件後,儲存作業。單擊上線,根據業務配置資源參數,提交作業至生產環境。
啟動作業。
作業發布後,前往營運介面,手動啟動作業。
即時查詢資料。
根據業務情況,在Hologres中從不同維度即時查詢即時寫入的資料,樣本如下。
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 "購買使用者數" from order_details group by "城市" order by "購買使用者數" 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" fromorder_details group by "日期" order by "GMV" desc limit 100;
展示DataV即時大屏。
Hologres中查詢出的資料直接對接DataV,用於製作即時大屏。操作步驟如下: