DataWorks のデータプッシュ機能を使用すると、データベースのデータをクエリしてさまざまなチャネルにプッシュできます。業務データに加えて、データベースのモニタリングメトリックもプッシュ可能です。この例では、インスタンスのステータスを追跡できるよう、毎日 09:00 に Hologres のモニタリングデータを自動でプッシュするスケジュールを設定します。
ステップ 1: データプッシュターゲットの作成
プッシュタスクはクエリ結果を特定のチャネルに送信します。プッシュタスクを作成する前に、プッシュターゲットを作成する必要があります。
DataService Studio ページに移動します。
DataWorks コンソール にログインします。上部ナビゲーションバーで目的のリージョンを選択します。左側のナビゲーションウィンドウで を選択します。表示されたページでドロップダウンリストから目的のワークスペースを選択し、DataService Studio へ移動 をクリックします。
サービス開発 ページの左下隅にある
(設定)をクリックします。プッシュターゲット管理 タブで、データプッシュターゲットの作成 をクリックします。
以下のパラメーターを設定します。
Type:DingTalk、Lark、WeCom、または Teams などのチャンネルタイプを選択します。
Destination Name:新しい宛先のカスタム名を入力します。
Webhook:選択した宛先の Webhook URL を入力します。
ステップ 2: データプッシュタスクを作成する
DataService Studio に移動します。
DataWorks コンソール にログインします。データソースが配置されているリージョンに切り替えます。左側のナビゲーションウィンドウで を選択します。ドロップダウンリストからワークスペースを選択し、DataService Studio へ移動 をクリックします。
データプッシュタスクを作成します。
DataService Studio の左側ナビゲーションウィンドウで、 を選択します。Data Push ページで
アイコンをクリックし、Create Data Push Task を選択します。タスク名を入力し、OK をクリックします。
ステップ 3:プラクティスの構成
本トピックでは 7 つのシナリオを紹介します。要件に最も適したものを選択してください。
実践 1: クエリ数が最も多いユーザーと、最も遅いクエリを発行するユーザーを特定する
前に作成したプッシュタスクをダブルクリックして、構成ページを開きます。
テーブルの選択 セクションを構成します。
クエリ SQL の記述。
低速クエリ数が最も多いユーザーと低速クエリ上位 50 件を特定する SQL を記述します。
-- 低速クエリ数が最も多いユーザーを特定
SELECT usename AS topuser, count(1) AS topuser_counts
FROM hologres.hg_query_log
WHERE query_start >= '${date_start}'
AND query_start < '${date_end}'
GROUP BY usename
ORDER BY topuser_counts DESC
LIMIT 1;
-- 低速クエリ上位 50 件を特定
SELECT usename, datname, duration, application_name
FROM hologres.hg_query_log
WHERE query_start >= '${date_start}'
AND query_start < '${date_end}'
ORDER BY duration DESC
LIMIT 50;
代入パラメーターを構成します。
SQL 文の記述後、クエリ結果のフィールドが自動的に セクションに追加されます。出力パラメーターの解析に失敗した場合や不正確な場合は、Automatically Parse Parameters をオフにして、手動で Add Parameter を行ってください。
SQL 内で ${変数名} を使用してカスタム変数(動的パラメーター)を定義できます。これらの 代入パラメーター には、時間式または定数を割り当てることができます。詳細については、「プッシュコンテンツの構成」をご参照ください。
以下の 2 つの代入パラメーターを構成します:${date_start} および ${date_end}。
プッシュコンテンツを構成します。
プッシュコンテンツを表形式または Markdown 形式で構成します。Markdown の場合、${パラメーター名} プレースホルダーを使用して出力パラメーターや代入パラメーターを含めることができます。表形式の場合は、直接出力パラメーターを選択して表示できます。詳細については、「プッシュコンテンツの構成」をご参照ください。

データプッシュ設定を行います。
スケジュール周期:ドロップダウンリストから 日 を選択します。
スケジュール時刻:09:00 を選択します。
タイムアウト定義:システムデフォルト を選択します。
有効期間:永続的 を選択します。
スケジュールリソースグループ:前提条件 で事前に準備した汎用リソースグループを選択します。
データプッシュターゲット:ステップ 1:データプッシュターゲットの作成 で作成したプッシュターゲットを選択します。
説明 必要に応じてその他の設定を構成してください。詳細については、「プッシュ設定」をご参照ください。
データプッシュタスクをテストします。
保存 をクリックして構成を保存し、テスト をクリックして開発環境でタスクを検証します。
テストが完了したら、タスクを公開します。
プラクティス 2:過去 12 時間の高リソース消費クエリをクエリする
前に作成したプッシュタスクをダブルクリックして、構成ページを開きます。
テーブルの選択 セクションを構成します。
クエリ SQL の記述。
過去 12 時間の高リソース消費クエリを特定する以下の SQL 文を使用します。
SELECT status AS "Status",
duration AS "Duration(ms)",
query_start AS "Start Time",
(read_bytes/1048576)::text || ' MB' AS "Read Volume",
(memory_bytes/1048576)::text || ' MB' AS "Memory",
(shuffle_bytes/1048576)::text || ' MB' AS "Shuffle",
(cpu_time_ms/1000)::text || ' s' AS "CPU Time",
physical_reads AS "Physical Reads",
query_id AS "QueryID",
query::char(30)
FROM hologres.hg_query_log
WHERE query_start >= now() - interval '12 hour'
AND duration > 1000
ORDER BY duration DESC,
read_bytes DESC,
shuffle_bytes DESC,
memory_bytes DESC,
cpu_time_ms DESC,
physical_reads DESC
LIMIT 100;
パラメーターを構成します。
SQL 文の作成が完了すると、クエリ結果のフィールドが自動的に セクションに追加されます。出力パラメーターの解析に失敗した場合や不正確な場合、Automatically Parse Parameters をオフにして、手動で Add Parameter できます。
プッシュコンテンツを構成します。
プッシュコンテンツを表形式または Markdown 形式で構成します。Markdown の場合、${パラメーター名} プレースホルダーを使用して出力パラメーターや代入パラメーターを含めることができます。表形式の場合は、直接出力パラメーターを選択して表示できます。詳細については、「プッシュコンテンツの構成」をご参照ください。

データプッシュ設定を行います。
スケジュール周期:ドロップダウンリストから 日 を選択します。
スケジュール時刻:09:00 を選択します。
タイムアウト定義:システムデフォルト を選択します。
有効期間:永続的 を選択します。
スケジュールリソースグループ:前提条件 で事前に準備した汎用リソースグループを選択します。
データプッシュターゲット:ステップ 1:データプッシュターゲットの作成 で作成したプッシュターゲットを選択します。
説明 必要に応じてその他の設定を構成してください。詳細については、「プッシュ設定」をご参照ください。
データプッシュタスクをテストします。
保存 をクリックして構成を保存し、テスト をクリックして開発環境でタスクを検証します。
テストが完了したら、タスクを公開します。
プラクティス 3:過去 3 時間の時間単位クエリ数と総データ読み取り量をクエリする
前に作成したプッシュタスクをダブルクリックして、構成ページを開きます。
テーブルの選択 セクションを構成します。
クエリ SQL の記述。
過去 3 時間の時間単位クエリ数と総読み取り量をクエリする以下の SQL 文を使用します。
SELECT
date_trunc('hour', query_start) AS query_start,
count(1) AS query_count,
sum(read_bytes/1048576)::text || ' MB' AS read_MB,
sum(cpu_time_ms/1000)::text || ' s' AS cpu_time_s
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '3 h'
GROUP BY 1;
パラメーターを構成します。
SQL 文の記述後、クエリ結果のフィールドが自動的に セクションに追加されます。出力パラメーターの解析に失敗した場合や不正確な場合は、Automatically Parse Parameters をオフにして、手動で Add Parameter を行ってください。
プッシュコンテンツを構成します。
プッシュコンテンツを表形式または Markdown 形式で構成します。Markdown の場合、${パラメーター名} プレースホルダーを使用して出力パラメーターや代入パラメーターを含めることができます。表形式の場合は、直接出力パラメーターを選択して表示できます。詳細については、「プッシュコンテンツの構成」をご参照ください。

データプッシュ設定を行います。
スケジュール周期:ドロップダウンリストから 日 を選択します。
スケジュール時刻:09:00 を選択します。
タイムアウト定義:システムデフォルト を選択します。
有効期間:永続的 を選択します。
スケジュールリソースグループ:前提条件 で事前に準備した汎用リソースグループを選択します。
データプッシュターゲット:ステップ 1:データプッシュターゲットの作成 で作成したプッシュターゲットを選択します。
説明 必要に応じてその他の設定を構成してください。詳細については、「プッシュ設定」をご参照ください。
データプッシュタスクをテストします。
保存 をクリックして構成を保存し、テスト をクリックして開発環境でタスクを検証します。
テストが完了したら、タスクを公開します。
プラクティス 4:昨日の新規クエリ数をクエリする
前に作成したプッシュタスクをダブルクリックして、構成ページを開きます。
テーブルの選択 セクションを構成します。
クエリ SQL の記述。
昨日の新規クエリ数をクエリする以下の SQL 文を使用します。
SELECT
COUNT(1) AS "new_queries"
FROM ( SELECT DISTINCT
t1.digest
FROM
hologres.hg_query_log t1
WHERE
t1.query_start >= CURRENT_DATE - INTERVAL '1 day'
AND t1.query_start < CURRENT_DATE
AND NOT EXISTS (
SELECT
1
FROM
hologres.hg_query_log t2
WHERE
t2.digest = t1.digest
AND t2.query_start < CURRENT_DATE - INTERVAL '1 day')
AND digest IS NOT NULL
) AS a;
パラメーターを構成します。
SQL 文の記述が完了すると、クエリ結果のフィールドが自動的に セクションに追加されます。出力パラメーターの解析に失敗した場合や正しくない場合は、Automatically Parse Parameters をオフにして、手動で Add Parameter できます。
プッシュコンテンツを構成します。
プッシュコンテンツを表形式または Markdown 形式で構成します。Markdown の場合、${パラメーター名} プレースホルダーを使用して出力パラメーターや代入パラメーターを含めることができます。表形式の場合は、直接出力パラメーターを選択して表示できます。詳細については、「プッシュコンテンツの構成」をご参照ください。

データプッシュ設定を行います。
スケジュール周期:ドロップダウンリストから 日 を選択します。
スケジュール時刻:09:00 を選択します。
タイムアウト定義:システムデフォルト を選択します。
有効期間:永続的 を選択します。
スケジュールリソースグループ:前提条件 で事前に準備した汎用リソースグループを選択します。
データプッシュターゲット:ステップ 1:データプッシュターゲットの作成 で作成したプッシュターゲットを選択します。
説明 必要に応じてその他の設定を構成してください。詳細については、「プッシュ設定」をご参照ください。
データプッシュタスクをテストします。
保存 をクリックして構成を保存し、テスト をクリックして開発環境でタスクを検証します。
テストが完了したら、タスクを公開します。
プラクティス 5:過去 3 時間のデータアクセス量を昨日の同時刻と比較する
前に作成したプッシュタスクをダブルクリックして、構成ページを開きます。
テーブルの選択 セクションを構成します。
クエリ SQL の記述。
過去 3 時間のデータアクセス量を昨日の同時刻と比較する以下の SQL 文を使用します。
SELECT
query_date,
count(1) AS query_count,
sum(read_bytes) AS read_bytes,
sum(cpu_time_ms) AS cpu_time_ms
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '180min'
GROUP BY
query_date
UNION ALL
SELECT
query_date,
count(1) AS query_count,
sum(read_bytes) AS read_bytes,
sum(cpu_time_ms) AS cpu_time_ms
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '1d 180min'
AND query_start <= now() - interval '1d'
GROUP BY
query_date;
パラメーターを構成します。
SQL 文の記述が完了すると、クエリ結果のフィールドは セクションに自動的に追加されます。出力パラメーターの解析が失敗した場合や、内容が正しくない場合は、Automatically Parse Parameters をオフにし、手動で Add Parameter を実行できます。
プッシュコンテンツを構成します。
プッシュコンテンツを表形式または Markdown 形式で構成します。Markdown の場合、${パラメーター名} プレースホルダーを使用して出力パラメーターや代入パラメーターを含めることができます。表形式の場合は、直接出力パラメーターを選択して表示できます。詳細については、「プッシュコンテンツの構成」をご参照ください。

データプッシュ設定を行います。
スケジュール周期:ドロップダウンリストから 日 を選択します。
スケジュール時刻:09:00 を選択します。
タイムアウト定義:システムデフォルト を選択します。
有効期間:永続的 を選択します。
スケジュールリソースグループ:前提条件 で事前に準備した汎用リソースグループを選択します。
データプッシュターゲット:ステップ 1:データプッシュターゲットの作成 で作成したプッシュターゲットを選択します。
説明 必要に応じてその他の設定を構成してください。詳細については、「プッシュ設定」をご参照ください。
データプッシュタスクをテストします。
保存 をクリックして構成を保存し、テスト をクリックして開発環境でタスクを検証します。
テストが完了したら、タスクを公開します。
プラクティス 6:各ステージで処理時間が長いクエリを特定する(過去 30 分)
前に作成したプッシュタスクをダブルクリックして、構成ページを開きます。
テーブルの選択 セクションを構成します。
クエリ SQL の記述。
過去 30 分の各ステージで処理時間が長いクエリを特定する以下の SQL 文を使用します。
SELECT
status AS "Status",
duration AS "Duration (ms)",
optimization_cost AS "Optimization Duration (ms)",
start_query_cost AS "Start Query Duration (ms)",
get_next_cost AS "Execution Duration (ms)",
duration - optimization_cost - start_query_cost - get_next_cost AS "Other Duration (ms)",
query_id AS "QueryID"
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '30 min'
ORDER BY
duration DESC,
start_query_cost DESC,
optimization_cost,
get_next_cost DESC,
duration - optimization_cost - start_query_cost - get_next_cost DESC
LIMIT 100;
パラメーターを構成します。
SQL 文の作成が完了すると、クエリ結果のフィールドが自動的に セクションに追加されます。出力パラメーターの解析に失敗した場合、または不正確な場合は、Automatically Parse Parameters を無効化して、手動で Add Parameter を行うことができます。
プッシュコンテンツを構成します。
プッシュコンテンツを表形式または Markdown 形式で構成します。Markdown の場合、${パラメーター名} プレースホルダーを使用して出力パラメーターや代入パラメーターを含めることができます。表形式の場合は、直接出力パラメーターを選択して表示できます。詳細については、「プッシュコンテンツの構成」をご参照ください。

データプッシュ設定を行います。
スケジュール周期:ドロップダウンリストから 日 を選択します。
スケジュール時刻:09:00 を選択します。
タイムアウト定義:システムデフォルト を選択します。
有効期間:永続的 を選択します。
スケジュールリソースグループ:前提条件 で事前に準備した汎用リソースグループを選択します。
データプッシュターゲット:ステップ 1:データプッシュターゲットの作成 で作成したプッシュターゲットを選択します。
説明 必要に応じてその他の設定を構成してください。詳細については、「プッシュ設定」をご参照ください。
データプッシュタスクをテストします。
保存 をクリックして構成を保存し、テスト をクリックして開発環境でタスクを検証します。
テストが完了したら、タスクを公開します。
プラクティス 7:最初に失敗したクエリをクエリする
前に作成したプッシュタスクをダブルクリックして、構成ページを開きます。
テーブルの選択 セクションを構成します。
クエリ SQL の記述。
最も早く失敗したクエリをクエリする以下の SQL 文を使用します。
SELECT
status AS "Status",
regexp_replace(message, '\n', ' ')::char(150) AS "Error Message",
duration AS "Duration (ms)",
query_start AS "Start Time",
query_id AS "QueryID",
query::char(100) AS "Query"
FROM
hologres.hg_query_log
WHERE
query_start BETWEEN '2024-07-10 17:00:00'::timestamptz AND '2024-07-10 17:42:00'::timestamptz + interval '2 min'
AND status = 'FAILED'
ORDER BY
query_start ASC
LIMIT 100;
パラメーターを構成します。
SQL 文の作成が完了すると、クエリ結果のフィールドが自動的に セクションに追加されます。出力パラメーターの解析に失敗した場合、または不正確な場合、Automatically Parse Parameters をオフにして、手動で Add Parameter を行うことができます。
プッシュコンテンツを構成します。
プッシュコンテンツを表形式または Markdown 形式で構成します。Markdown の場合、${パラメーター名} プレースホルダーを使用して出力パラメーターや代入パラメーターを含めることができます。表形式の場合は、直接出力パラメーターを選択して表示できます。詳細については、「プッシュコンテンツの構成」をご参照ください。

データプッシュ設定を行います。
スケジュール周期:ドロップダウンリストから 日 を選択します。
スケジュール時刻:09:00 を選択します。
タイムアウト定義:システムデフォルト を選択します。
有効期間:永続的 を選択します。
スケジュールリソースグループ:前提条件 で事前に準備した汎用リソースグループを選択します。
データプッシュターゲット:ステップ 1:データプッシュターゲットの作成 で作成したプッシュターゲットを選択します。
説明 必要に応じてその他の設定を構成してください。詳細については、「プッシュ設定」をご参照ください。
データプッシュタスクをテストします。
保存 をクリックして構成を保存し、テスト をクリックして開発環境でタスクを検証します。
テストが完了したら、タスクを公開します。
次のステップ
作成したタスクを管理できるようになりました。詳細については、「プッシュタスクの公開」をご参照ください。