すべてのプロダクト
Search
ドキュメントセンター

Hologres:リアルタイム データ ウェアハウス分析ダッシュボードの構築

最終更新日:Jan 15, 2025

このトピックでは、Hologres を Realtime Compute for Apache Flink および DataV に接続して、リアルタイム データ ウェアハウス分析ダッシュボードを構築する方法について説明します。

前提条件

  • Hologres がアクティブ化され、Hologres インスタンスが購入され、開発ツールが 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に基づいて、Hologres は Realtime Compute for Apache Flink に接続し、高並列でのリアルタイム データの書き込みとクエリをサポートします。Hologres は数秒以内にクエリに応答できます。

Hologres は PostgreSQL と互換性があります。Hologres をビジネス インテリジェンス(BI)ツールに接続して、クエリされたデータを分析し、データ分析結果を視覚的に表示できます。

この例では、e コマース ストアを例として使用して、運用メトリクスをリアルタイムで表示するダッシュボードを構築する方法を示します。メトリクスには、ストアへのユニーク ビジター(UV)数、各製品への UV 数、各都市の売上高、売れ筋商品の統計などが含まれます。

次の図は、Hologres を使用して、運用メトリクスをリアルタイムで表示するダッシュボードを構築する方法を示しています。a

  • ソース データは収集され、クレンジングと集計のためにリアルタイムで Realtime Compute for Apache Flink に書き込まれます。

  • Realtime Compute for Apache Flink によって処理されたデータは、インタラクティブ クエリのために Hologres に書き込まれます。

  • Hologres は DataV に接続され、クエリ結果をダッシュボードにリアルタイムで表示します。

手順

  1. ソース データを収集します。

    DataHub またはサービス ログを使用してソース データを収集します。DataHub はストリーミング データ処理サービスです。

    プロセスを簡素化するために、この例では、ソース データは Realtime Compute for Apache Flink で生成されます。詳細については、このセクションの手順 3 を参照してください。

  2. データを受信するために 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');
    CALL SET_TABLE_PROPERTY('public.order_details','storage_format', 'orc');
    COMMIT;
  3. Realtime Compute for Apache Flink の開発コンソールにログインし、目的のカスタム コネクタの ordergenJAR ファイルをアップロードします。詳細については、「カスタム コネクタをアップロードして使用する」をご参照ください。

  4. Realtime Compute for Apache Flink を使用してデータをクレンジングします。

    Realtime Compute for Apache Flink の開発コンソールにログインし、データ ソースで収集されたデータをクレンジングおよび集計するデプロイメントを作成し、HoloHub API を呼び出して処理済みデータをリアルタイムで Hologres に書き込みます。詳細については、「SQL ドラフトを開発する」をご参照ください。次の 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;

    次の表は、SQL ステートメントのパラメータについて説明しています。

    パラメータ

    説明

    holo_db

    接続する Hologres データベースの名前。

    receive_table

    データを受信するために使用される Hologres テーブルの名前。この例では、このパラメータは public.order_details に設定されています。

    uid

    Alibaba Cloud アカウントの AccessKey ID。

    pid

    Alibaba Cloud アカウントの AccessKey シークレット。

    host

    Hologres インスタンスの VPC エンドポイント。VPC エンドポイントを取得するには、次の手順を実行します。Hologres コンソールにログインします。左側のナビゲーション ペインで、[インスタンス] をクリックします。[インスタンス] ページで、目的の Hologres インスタンスを見つけ、インスタンス名をクリックします。[インスタンスの詳細] ページの [ネットワーク情報] セクションで、Hologres インスタンスの VPC エンドポイントを表示します。

  5. Realtime Compute for Apache Flink の開発コンソールの [デプロイメント] ページでデプロイメントを開始します。 詳細については、「デプロイメントを開始する」をご参照ください。image

  6. Hologres でデータをリアルタイムでクエリします。

    SELECT ステートメントを実行して、さまざまなディメンションから 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 "Number of customers who purchased products" FROM order_details GROUP BY "City" ORDER BY "Number of customers who purchased products" DESC limit 100;
    
    SELECT item_name AS "Product", SUM(price) AS "Sales amount" FROM order_details GROUP BY "Product" ORDER BY "Sales amount" 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;                
  7. Hologres から取得したクエリ結果を表示するために DataV でダッシュボードを作成します。

    Hologres から取得したクエリ結果を表示するために DataV でダッシュボードを作成するには、次の手順を実行します。

    1. データ ソースを追加します。

      1. DataV コンソールにログインします。DataV コンソールのホームページで、[データ ソース] をクリックします。 [データ ソース] タブで、[ソースの追加] をクリックします。

      2. [データの追加] ダイアログ ボックスで、パラメータを設定して Hologres データ ソースを追加します。

      3. パラメータを設定した後、[OK] をクリックします。

    2. リアルタイム データを表示するダッシュボードを作成します。

      ダッシュボードに表示するウィジェットを選択し、ビジネス要件に基づいて各ウィジェットのデータ ソースを設定します。詳細については、「概要」をご参照ください。

      この例では、縦棒グラフ、画像カルーセル、基本的な平面地図、ティッカー ボードが選択されています。次の手順では、ティッカー ボードを設定する方法について説明します。

      1. データ ソースに関する情報を設定します。

      2. ティッカー ボードの枠線、フォント、色を設定します。

    3. ダッシュボードを装飾し、Hologres から取得したクエリ結果をダッシュボードに表示します。

      ウィジェットとそのデータ ソースを設定した後、ビジネス要件に基づいてダッシュボードを装飾できます。

      • 各製品への UV の合計数と上位都市の売上高は、左側にリアルタイムで表示されます。

      • 中央の地図は、各トランザクション注文の場所を強調表示し、売上高の合計をリアルタイムで更新します。ストアへの UV の合計数は、地図の上に表示されます。

      • 各製品の売上比率と売上ランキングは、右側にリアルタイムで表示されます。