データプッシュ機能は、DataWorks のデータサービスの一つで、SQL クエリを使用してデータソースからデータを取得し、Webhook またはメールアドレスにプッシュします。この機能により、ビジネスデータを複数の Webhook やメールアドレスに定期的にプッシュする設定を簡単に行うことができます。このトピックでは、データプッシュ機能の設定方法と使用方法について説明します。
概要
定期的なタスクをスケジュールして、ターゲットの Webhook またはメールアドレスにデータをプッシュできます。
サポートされるデータソースとチャンネル
サポートされるデータソースタイプ:
MySQL (StarRocks および Doris と互換)
PostgreSQL (Snowflake および Redshift と互換)
Hologres
MaxCompute (ODPS)
ClickHouse
サポートされるプッシュチャンネルには、DingTalk、Lark、WeCom、メール、Teams があります。
制限事項
データプッシュサービスの各 SELECT ステートメントは、最大 10,000 行を返すことができます。
10,000 行以上を取得する必要がある場合は、以下のいずれかの代替手段を使用してください:
MaxCompute Tunnel コマンドを使用して、データをローカル環境にエクスポートし、さらに処理します。
DataWorks のデータ統合を使用して、データを別のストレージシステムにエクスポートします。
送信先ごとのデータサイズ制限:
DingTalk の場合、プッシュされるデータサイズは 20 KB を超えてはなりません。
Lark の場合、プッシュされるデータサイズは 20 KB を超えてはならず、各画像は 10 MB 未満である必要があります。
WeCom の場合、各ボットは 1 分あたり最大 20 件のメッセージを送信できます。
Teams の場合、プッシュされるコンテンツは 28 KB を超えてはなりません。
メールの場合、各データプッシュタスクは 1 つのメール本文のみをサポートします。その他の制限については、ご利用のメールサービスの SMTP 制限をご参照ください。
データプッシュ機能は、以下のリージョンにある DataWorks ワークスペースでのみ利用可能です:中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (成都)、中国 (香港)、シンガポール、日本 (東京)、米国 (シリコンバレー)、米国 (バージニア)、ドイツ (フランクフルト)。
前提条件
データソースが作成されていることを確認してください。詳細については、「データソース管理」をご参照ください。
ご利用のリソースグループでパブリックネットワークアクセスが有効になっていることを確認してください。詳細については、「ネットワーク接続ソリューションの概要」をご参照ください。
ステップ 1:プッシュタスクの作成
データサービスに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、データソースが存在するリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。ドロップダウンリストから目的のワークスペースを選択し、[データサービスへ移動] をクリックします。
データプッシュタスクを作成します。
DataService Studio の左側のナビゲーションウィンドウで、 を選択して、データプッシュ ページに移動します。
アイコンをクリックし、データプッシュの作成 を選択し、タスクの名前を入力して OK をクリックします。タスク設定ページが開きます。
ステップ 2:プッシュタスクの設定
準備 (オプション)
データプッシュを迅速に実行できるよう、このトピックでは MaxCompute テーブルからのクエリ結果をプッシュする例を用いて説明します。この例では、データプッシュ機能を使用して、sales という名前のテーブルから指定されたチャンネルにデータを送信します。データには、各部門の日次売上高と前日比の売上高の変動が含まれます。この例の手順に従う場合は、まずご利用の環境に sales テーブルを作成する必要があります。以下のコードは、sales テーブルを作成し、データを挿入するためのステートメントです。テーブルの作成方法の詳細については、「MaxCompute テーブルの作成と使用」をご参照ください。
CREATE TABLE IF NOT EXISTS sales (
id BIGINT COMMENT '一意の識別子',
department STRING COMMENT '部門名',
revenue DOUBLE COMMENT '収益額'
) PARTITIONED BY (ds STRING);
-- パーティションにサンプルデータを挿入
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (1, 'Department 1', 12000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (2, 'Department 2', 21000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (3, 'Department 3', 5000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (1, 'Department 1', 11000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (2, 'Department 2', 20000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (3, 'Department 3', 10000.00);データソースの選択
データソースタイプ、データソース名、および データソース環境 を選択して、データプッシュ用のデータテーブルの環境を決定します。データプッシュが開発テーブル用か本番テーブル用かに基づいて、データソース環境を選択できます。ハンズオン演習を行っている場合は、準備フェーズで作成した sales テーブルが配置されている環境を確認してください。
たとえば、[データソースタイプ] を odps に、[データソース名] を MaxCompute_Source に、[データソース環境] を [本番環境] に設定します。新しいデータソースを作成するには、[データソース名]フィールドの下のリンクをクリックします。
サポートされているデータソースタイプの一覧については、「サポートされるデータソースとチャンネル」をご参照ください。
クエリ SQL の記述
データ範囲を定義し、データを取得します。
SQL クエリの作成 セクションで、単一テーブルまたは複数テーブルの SQL クエリを使用して、プッシュするデータを定義します。例:
-- 20240102 の各部門の売上収益を取得 SELECT id, department, revenue FROM sales WHERE ds='20240102'; -- 前日と比較した売上収益の変動を取得 SELECT a.revenue - b.revenue AS diff FROM sales a LEFT JOIN sales b ON a.id = b.id AND a.ds > b.ds WHERE a.ds = '20240102'AND b.ds = '20240101';SQL を記述すると、結果フィールドが セクションに自動的に入力されます。出力パラメーターの解析に失敗した場合や、それらが正しくない場合は、パラメータの自動解析 を無効にして、手動で パラメーターの追加 を行うことができます。
また、
${variable_name}形式を使用して SQL でカスタム変数を設定することもできます。この変数は パラメーター割り当て(パラメーター割り当て には時間式と定数を割り当てることができます) であり、コードの動的なパラメーター入力を実装します。詳細については、「プッシュコンテンツの設定」をご参照ください。-- スケジューリングパラメーターを使用して時間変数を動的に割り当てる -- 各部門の最新の日次売上収益を取得 SELECT id, department, revenue FROM sales WHERE ds='${date}'; -- 前日と比較した売上収益の変動を取得 SELECT a.revenue - b.revenue AS diff FROM sales a LEFT JOIN sales b ON a.id = b.id and a.ds > b.ds WHERE a.ds = '${date}' AND b.ds = '${previous_date}';ページ分割クエリ。
大規模なテーブルの場合、データプッシュは 次のトークン を使用したページ分割クエリをサポートします。コードエディターのツールバーで をクリックして、使用方法の説明を参照してください。
プッシュコンテンツの設定
プッシュ内容 セクションでは、Markdown および テーブル 形式を使用してメッセージコンテンツを編集できます。このコンテンツは Webhook にプッシュされます。
タイトル フィールドでメッセージタイトルをカスタマイズした後、本文エリアで 作成 をクリックします。次に、Markdown、テーブル、または メール本文 を選択してコンテンツを編集します。以下の例は、サンプル設定を示しています。ツールバーの プレビュー をクリックして、メッセージのフォーマットを確認できます。
プッシュ先がメールアドレスの場合、Markdown および テーブル セクションでカスタマイズされたコンテンツは添付ファイルとして送信されます。メール本文はレンダリングされ、メールメッセージに表示されます。
プッシュ先がメールアドレスでない場合、Markdown および テーブル セクションでカスタマイズされたコンテンツは、Webhook メッセージのメインボディとして表示されます。メール本文 は Webhook プッシュメッセージでは非表示になります。
Markdown コンテンツ
パラメーター変数の使用:プッシュコンテンツを作成する際、
${parameter_name}形式を使用して、パラメーター割り当て と 出力パラメータ をリッチテキストに追加できます。これらの変数は、データプッシュタスクの実行時に、対応する割り当てデータまたは SQL クエリ結果に置き換えられます。パラメーター割り当て: セクションで、変数に 定数 またはスケジューリングパラメーターの [時間式] を割り当てる必要があります。
出力パラメータ:これらのパラメーターは、SQL クエリのフィールド名またはエイリアスに対応します。たとえば、
SELECT A, B, ... FROM TABLEのようなステートメントのA, B, ...です。これらはクエリされたデータを表します。
メンバーを @メンション:Lark Webhook にプッシュする際にこれを設定すると、特定のユーザーを自動的に @メンションできます。
デフォルトでは、Markdown モードはリッチテキストを使用してメッセージコンテンツを設定します。Lark にプッシュする場合、@メンション機能を使用して関連担当者に通知できます。
アイコンをクリックして Markdown ソースモードに切り替え、<at id="all" />または<at email="username@example.com" />を使用してこれを実現できます。
上記の機能に加えて、Markdown は画像の追加やDingTalk 絵文字の挿入などの機能もサポートしています。
プッシュコンテンツエリアで、テンプレートタイプとして [Markdown] を選択します。本文で、
${parameter_name}構文を使用して、右側の [入力パラメーター] パネルで定義されたパラメーターを参照します。たとえば、本文に${creator}と${subscriber}を記述し、[入力パラメーター] タブで creator を "admin" に、subscriber を "user" に設定すると、タスク実行時に変数が自動的にその値に置き換えられます。入力パラメーターは、スケジューリング時間変数もサポートしています。たとえば、date を${yyyymmdd}に、previous_date を${yyyymmdd-1}に設定できます。[クエリ SQL の記述] セクションも、動的な値のために、たとえばSELECT id, department, revenue FROM sales WHERE ds='${date}';のように入力パラメーターを参照できます。プッシュコンテンツに HTML タグ (たとえば、外部エディターから貼り付けたテキスト) が含まれている場合、リッチテキストモードに切り替えるとエラーが発生することがあります:
Error parsing markdown: Unexpected closing tag。この場合、Markdown エディターでソースモードに切り替え、コンテンツから HTML タグを削除してプレーンな Markdown テキストのみが残るようにしてから、リッチテキストモードに戻します。そうすると、コンテンツは正しくレンダリングされます。
テーブルコンテンツ
列の追加 をクリックして、テーブルの列数を増やします。その後、パラメータ を対応する列に関連付けることができます。
プッシュ先が Lark Webhook の場合、作成したテーブル列の右側にある
アイコンをクリックして ソーステーブルの列の編集 ダイアログボックスを開きます。このダイアログボックスでは、現在のフィールド、表示名、表示スタイル、および 条件 を調整して、プッシュされるコンテンツの多様な表示効果を作成できます。現在のフィールド:別の 出力パラメータ フィールドに切り替えます。
表示名:コラボレーションツールにプッシュする際にテーブルヘッダーに表示したい名前。
表示スタイル:テーブル内の 具体値 の前後に固定のプレフィックスまたはサフィックスを追加します。
条件:テーブル内の 具体値 を設定された比較値と比較します。準拠 または 非準拠 の値に対して表示色をカスタマイズし、付加識別子 を指定できます。[条件]:条件付きロジックを有効にし、演算子 (例:
>=) としきい値 (例:60) を設定できます。条件が満たされた場合、[緑色に変更] を選択できます。条件が満たされない場合、[赤色に変更] を選択できます。[追加の識別子] を設定することもできます。
説明テーブルの作成方法はチャンネルによって異なります。異なるチャンネルでのテーブルコンテンツのサポートは以下の通りです:
DingTalk:Markdown テーブルとデータプッシュの組み込みテーブルをサポートします。ソーステーブルの列の編集 ダイアログボックスで設定された 表示スタイル と 条件 の設定のレンダリングはサポートしていません。また、DingTalk モバイルはテーブルの表示をサポートしていません。
Lark:Markdown テーブルと組み込みテーブルの両方をサポートし、カスタム表示スタイルと条件のレンダリングも含まれます。
WeCom:Markdown テーブルのプッシュをサポートしますが、レンダリングはしません。
Teams モバイル:Markdown テーブルのプッシュをサポートし、レンダリングも可能です。
メール本文
DataWorks のデータプッシュは、プッシュコンテンツにメール本文を追加することをサポートしています。メール本文を編集する際は、以下の点にご注意ください:
各データプッシュタスクは、1 つのメール本文のみをサポートします。
メール本文は、プッシュ先がメールアドレスの場合にのみレンダリングされます。プッシュ先がメールアドレスでない場合、メール本文 は Webhook プッシュメッセージでは非表示になります。
ステップ 3:プッシュ設定の構成
プッシュ設定 を設定する前に、サービス開発 ページの左下隅にある
アイコンをクリックして設定パネルを開き、プッシュオブジェクトの管理 タブに切り替えて、データプッシュオブジェクトの作成 をクリックして送信先を作成します。サポートされているチャンネルタイプには、DingTalk、Lark、WeCom、Teams、メールなどがあります。
Webhook 送信先の作成
データプッシュオブジェクトの作成 をクリックし、次のパラメーターを設定します:
タイプ: チャンネルタイプを選択します。オプションには DingTalk、Lark、WeCom、および チーム が含まれます。
オブジェクト名:新しいプッシュ送信先のカスタム名を入力します。
Webhook:選択したプッシュチャンネルの Webhook URL。
Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
Teams Webhook を取得する方法については、「Microsoft Teams ワークフローを使用して受信 Webhook を作成する」をご参照ください。
[タイプ] ドロップダウンリストは、[メール] チャンネルもサポートしています。設定を完了したら、[OK] をクリックします。
メール送信先の作成
プッシュ設定 を設定する前に、サービス開発 ページの左下隅にある
アイコンをクリックして設定パネルを開きます。プッシュオブジェクトの管理 タブに切り替えて、データプッシュオブジェクトの作成 をクリックして送信先を作成します。
データプッシュオブジェクトの作成 をクリックすると、以下のパラメーターを設定する必要があります。
タイプ:メール を選択します。
オブジェクト名:新しいプッシュ送信先のカスタム名を入力します。
SMTP ホスト:メールサーバーのアドレス。
SMTP ポート:メールサーバーのポート番号。デフォルト値は 465 で、手動で変更できます。
送信元アドレス:メール送信アドレス。
[SMTP アカウント]:完全なメールアカウント。
SMTP パスワード:メールアカウントのパスワード。
受信アドレス:送信先のメールアドレス。
プッシュ設定
右側の プッシュ設定 をクリックして、タスクのスケジューリング周期、スケジューリングリソース、およびプッシュ先を設定します。具体的な設定項目は以下の通りです:
スケジューリング周期と実行時間の設定:データプッシュサービスが編集したコンテンツをプッシュするためのスケジューリング周期と特定の時間を設定します。
スケジューリング周期
指定時刻
スケジューリング時間
例
月
プッシュタスクを実行する月の日を指定します。
プッシュ日のデータプッシュタスクのスケジューリング時間。
スケジューリング周期:月
指定時間:毎月 1 日
スケジュール時刻: 08:00
実際の実行時間:プッシュタスクは毎月 1 日の 08:00 に実行されます。
週
プッシュタスクを実行する曜日を指定します。
プッシュ日のデータプッシュタスクのスケジューリング時間。
スケジューリング周期:週
指定時間:月曜日
スケジュール時刻:09:00
実際の実行時間:プッシュタスクは毎週月曜日の 09:00 に実行されます。
日
説明日次周期は、タスクを毎日実行するようにスケジュールします。
プッシュ日のデータプッシュタスクのスケジューリング時間。
スケジューリング周期:日
スケジュール時刻:08:00
実際の実行時間:プッシュタスクは毎日 08:00 に実行されます。
時間
説明2 つのプッシュモードから選択できます:
指定された時間間隔でプッシュします。
指定された時と分でプッシュします。
時間間隔でプッシュ:
開始時間: 00:00
時間間隔:1 時間
終了時間:23:59
実際の実行時間:毎日 00:00 から 23:59 まで 1 時間ごとに 1 回プッシュします。
指定された時と分でプッシュ:
時間指定:0, 1
分の指定:10
実際の実行時間:毎日 00:10 と 01:10 にプッシュします。
タイムアウト時間:タスク実行の時間制限を設定します。この制限を超えるとタスクは終了します。
システムデフォルト:システムデフォルト 設定では、タスクのタイムアウトはシステム負荷に基づいて動的に調整され、値は 3 日から 7 日の範囲になります。タイムアウトしたタスクは終了します。
例:カスタム タイムアウトを 1 時間に設定した場合、プッシュタスクはスケジュールされた開始時刻から 1 時間以上実行されると終了します。
発効日:データプッシュタスクがアクティブな時間範囲を設定します。
無期限:データプッシュタスクは永続的に有効であり、有効期間の範囲に制限されません。
例:指定時間 範囲を 2024-01-01 から 2024-12-31 までに設定した場合、プッシュタスクはこの期間内に設定されたスケジューリング周期に従って実行されます。
スケジューリングリソースグループ:スケジューリング専用リソースグループまたはサーバーレスリソースグループ (汎用リソースグループ) を設定して、データプッシュタスクにスケジューリングリソースを提供できます。リソースグループの詳細については、「リソースグループ管理」をご参照ください。
毎回プッシュ:SQL クエリがデータを返さない場合にプッシュ通知を送信するかどうかを制御します。
有効 (デフォルト):クエリがデータを返すかどうかに関わらず、スケジュールされた実行ごとにプッシュが実行されます。
無効:入力パラメーターを除く、プッシュコンテンツで使用されるすべての変数が空の場合、メッセージは送信されません。SQL の
WHEREまたはHAVING句を使用してデータをフィルタリングできます。フィルター条件が満たされず、クエリ結果が空の場合、プッシュタスクは自動的にスキップされ、メッセージは送信されません。
データプッシュ対象:設定したコンテンツを選択した送信先にプッシュできます。既存のプッシュ送信先からのみ選択でき、これらは データプッシュ管理 で設定されます。
説明DingTalk Webhook にプッシュする場合、ボット設定の セクションにキーワードを追加する必要があります。プッシュが成功するためには、プッシュコンテンツにこのキーワードが含まれていることを確認してください。
ステップ 4:プッシュタスクのテスト
データプッシュタスクを作成した後、ツールバーの 保存 ボタンをクリックして現在の設定を保存します。次に、テスト をクリックして開発段階のテストを実行し、データプッシュが正しく機能することを確認します。テストのために、変数に手動で定数値を割り当てる必要があります。
データプッシュタスクは、コミット および 公開 する前に、開発環境でのテストプッシュに合格する必要があります。
ステップ 5:プッシュタスクの公開
タスクバージョンの管理
開発中のテストが成功したことを確認した後、コミット をクリックします。プッシュタスクが送信されない場合、ドラフト状態のままであり、新しいバージョンは生成されません。
サービスを送信すると、新しいバージョンが生成されます。右側の バージョン パネルで、公開可能 な送信済みバージョンを見つけ、公開 をクリックします。タスクを公開すると、プッシュ設定 で定義されたスケジュールが有効になります。
バージョン パネルで、データプッシュタスクを以下のように管理します。
ステータス
操作
説明
公開
データプッシュ管理
データプッシュ管理 ページに移動し、公開されたタスクの詳細情報を表示できます。詳細については、「データプッシュタスクの管理」をご参照ください。
公開可能
公開
タスクの対応するバージョンを公開します。
破棄
タスクの対応するバージョンを破棄し、そのステータスを 破棄 に変更します。
オフライン、破棄
バージョンの詳細
そのバージョンのデータプッシュタスクの設定情報と対応するプッシュコンテンツを表示します。
ロールバック
このバージョンを復元し、現在の設定にします。
説明バージョンの詳細 と ロールバック 操作は、すべてのステータスのタスクで利用可能であり、同様に機能します。
プッシュタスクの管理
データプッシュタスクが正常に公開された後、バージョン パネルの 操作 列にある データプッシュ管理 をクリックするか、 パスを介して データプッシュタスク リストページに移動します。
このページには、公開されているすべての データプッシュタスク が一覧表示され、ID、名称、データソース名、データソース環境、ノードパターン、スケジューリングリソースグループ、オーナー、発行者、最終発行日時 などの詳細が表示されます。操作 列で、公開されたデータプッシュタスクに対して以下の操作を実行します:
操作 | 説明 |
非公開 | 選択したタスクをオフラインにします。 |
テスト | データプッシュのテスト ページに移動し、公開されたタスクをテストできます。 |
名称 列の
アイコンをクリックすると、選択したタスクの バージョンの詳細 ページに移動します。
公開済みタスクのテスト
以下のいずれかの方法で [データプッシュテスト] ページに移動します:
方法 1: を選択します。
方法 2: を選択します。
公開されたタスクをテストすることで、タスクが正しく実行され、送信先が期待通りにデータを受信することを確認します。
[データプッシュテスト] ページで、ドロップダウンリストからターゲットのデータプッシュタスクを選択または検索し、必要に応じて [送信先にプッシュ] チェックボックスを選択してから、[テスト開始] をクリックします。
よくある質問
Q:データプッシュはオンデマンドプッシュをサポートしていますか?
A:不定期のオンデマンドプッシュには、[送信先にプッシュ] オプションを選択して [テスト] 機能を使用してください。条件付きの定期的なプッシュには、毎回プッシュ 設定を無効にしてください。そうすると、SQL クエリがデータを返した場合にのみタスクが実行されます。