このトピックでは、Hologres と Realtime Compute for Apache Flink を接続してリアルタイムデータウェアハウス分析ダッシュボードを構築する方法について説明します。
前提条件
-
Hologres をアクティブ化し、開発ツールに接続済みであること。詳細については、「」「HoloWeb への接続とクエリの実行」をご参照ください。
-
Realtime Compute for Apache Flink をアクティブ化済みであること。詳細については、「Realtime Compute for Apache Flink のアクティブ化」をご参照ください。
説明Realtime Compute for Apache Flink と Hologres が同じリージョンにあり、同じ仮想プライベートクラウド (VPC) および vSwitch を使用していることを確認してください。
-
DataV をアクティブ化済みであること。詳細については、「」DataV サービスのアクティブ化をご参照ください。
背景情報
Hologres は、Alibaba Cloud が提供するリアルタイムインタラクティブ分析製品です。組み込みの HoloHub API を使用して Realtime Compute for Apache Flink に直接接続します。この接続により、高同時実行でのリアルタイムデータ書き込みとクエリが可能になり、数秒以内にレスポンスを返します。
Hologres は PostgreSQL と互換性があるため、ビジネスインテリジェンス (BI) ツールに直接接続してデータを分析および可視化できます。
このトピックでは、EC サイトのリアルタイム運営ダッシュボードの構築を例に説明します。このダッシュボードには、総トラフィック、店舗ごとの訪問数、地域別売上、ベストセラー商品などの指標が表示されます。
次の図は、Hologres を使用してリアルタイム運営ダッシュボードを構築するためのエンドツーエンドパイプラインを示しています。
-
ソースデータはリアルタイムで収集され、Realtime Compute for Apache Flink に書き込まれ、そこでクレンジングおよび集計されます。
-
処理されたデータは、インタラクティブなクエリを実行できるように、リアルタイムで Hologres に書き込まれます。
-
Hologres は DataV ダッシュボードに接続して、リアルタイムの運営指標を可視化します。
操作手順
-
ソースデータの取得
DataHub または他のサービスログからソースデータを取得します。
このチュートリアルでは、デモンストレーションのため、Realtime Compute for Apache Flink から直接データを生成します。詳細については、ステップ 3 をご参照ください。
-
Hologres での宛先テーブルの作成
HoloWeb を使用して、リアルタイムデータ用のテーブルを作成します。テーブルスキーマは、ソーステーブルのフィールドおよびデータ型と一致させる必要があります。詳細については、「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'); COMMIT; -
Realtime Compute for Apache Flink コンソール で、カスタムコネクタ JAR リソース ordergen をアップロードします。詳細については、「カスタムコネクタのアップロードと使用」をご参照ください。
-
Realtime Compute for Apache Flink を使用したデータクレンジング
Realtime Compute for Apache Flink コンソール で、ソースデータをクレンジングおよび集計するジョブを作成します。このジョブは HoloHub 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' = '<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;各パラメータの説明は次の表のとおりです。
パラメータ
説明
holo_db
Hologres データベースの名前。
receive_table
Hologres の宛先テーブルの名前です。この例では、
public.order_detailsです。uid
Alibaba Cloud アカウントの AccessKey ID。
pid
Alibaba Cloud アカウントの AccessKey Secret。
host
Hologres インスタンスの VPC エンドポイントのドメイン名です。このドメイン名は、Hologres コンソールのインスタンス詳細ページの Network Information セクションで確認できます。
-
Realtime Compute for Apache Flink コンソールの [デプロイ] ページでジョブを開始し、そのステータスが実行中になるまで待ちます。 詳細については、「ジョブを開始する」をご参照ください。
-
Hologres でのリアルタイムデータクエリ
Hologres でクエリを実行して、さまざまなディメンションからリアルタイムデータを分析します。 SQL ステートメントの例は次のとおりです。
SELECT SUM(price) AS "GMV" FROM order_details ; SELECT COUNT(DISTINCT user_id) AS "UV" FROM order_details ; SELECT city AS "City", COUNT(DISTINCT user_id) AS "CustomerCount" FROM order_details GROUP BY "City" ORDER BY "CustomerCount" DESC limit 100; SELECT item_name AS "Product", SUM(price) AS "SalesAmount" FROM order_details GROUP BY "Product" ORDER BY "SalesAmount" DESC limit 100; SELECT to_char(sale_timestamp, 'MM-DD') AS "Date", SUM(price) AS "GMV" FROM order_details GROUP BY "Date" ORDER BY "GMV" DESC limit 100; -
リアルタイム DataV ダッシュボードの表示
Hologres のクエリ結果を DataV に直接接続して、リアルタイムダッシュボードを作成します。手順は次のとおりです。
-
データソースの追加
-
DataV コンソールで、左側のナビゲーションペインの に移動します。[データソース] ページで、[ソースの追加] をクリックします。
-
[データソースの追加] パネルで、Hologres データソースのパラメーターを設定します。
-
OK をクリックします。
-
-
リアルタイムダッシュボードの作成
ダッシュボードに必要なコンポーネントを選択し、そのデータソースを設定します。詳細については、「概要」をご参照ください。
このチュートリアルでは、基本的な縦棒グラフ、カルーセル、基本的なフラットマップ、およびティッカーボードを使用します。次の手順では、ティッカーボードを例に説明します。
-
データソースを設定します。
-
ティッカーボードの境界線、フォント、および色を設定します。コンポーネントのプレビューには、境界線の装飾、タイトルテキスト、および数値がリアルタイムで表示されます。
-
-
リアルタイムダッシュボードの表示
ダッシュボードコンポーネントとデータソースを設定した後、装飾要素を追加して外観をカスタマイズできます。
-
左側には、商品の訪問数と都市別の売上高がリアルタイムで表示されます。
-
中央のマップには、各注文の場所、総売上高、および総訪問数がリアルタイムで表示されます。
-
右側には、商品の売上シェアと売上ランキングがリアルタイムで表示されます。
-
-