データプッシュは、SQL を使用してデータソースからデータをクエリし、その結果を Webhook またはメールアドレスにプッシュできる DataWorks の機能です。スケジュールタスクを設定することで、簡単なステップで定期的にビジネスデータをさまざまな送信先に送信できます。このトピックでは、データプッシュ機能の設定方法と使用方法について説明します。
概要
データプッシュでは、プッシュタスクを作成し、SQL クエリを記述してデータ範囲を定義し、メッセージコンテンツをリッチテキストまたはテーブルとして作成できます。スケジュールタスクを設定することで、定期的にデータを送信先の Webhook またはメールアドレスにプッシュできます。
サポートされるデータソースとチャンネル
サポートされるデータソースタイプ:
MySQL (StarRocks および Doris と互換)
PostgreSQL (Snowflake および Redshift と互換)
Hologres
MaxCompute (ODPS)
ClickHouse
サポートされるプッシュチャンネル:DingTalk、Lark、WeCom、メール、および Teams。
制限事項
各 SELECT 文は最大 10,000 行を返すことができます。
データサイズの制限は送信先によって異なります:
DingTalk:最大ペイロードサイズは 20 KB です。
Lark:最大ペイロードサイズは 20 KB で、イメージは 10 MB 未満である必要があります。
WeCom:各ボットは 1分あたり 20 メッセージの送信に制限されます。
Teams:最大ペイロードサイズは 28 KB です。
メール:各データプッシュタスクは 1 つのメール本文のみをサポートします。メール本文が既に追加されている場合、別の本文を追加することはできません。その他の制限については、ご利用のメールサービスプロバイダーの SMTP 制限をご参照ください。
データプッシュ機能は、以下のリージョンの DataWorks ワークスペースでのみ利用可能です:中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (成都)、中国 (香港)、シンガポール、日本 (東京)、米国 (シリコンバレー)、米国 (バージニア)、およびドイツ (フランクフルト)。
前提条件
データソースが作成されていること。DataWorks でデータソースを作成する方法の詳細については、「データソースの管理」をご参照ください。
リソースグループでパブリックネットワークアクセスが有効になっていること。詳細については、「ネットワーク接続ソリューション」をご参照ください。
1. データプッシュタスクの作成
DataService Studio に移動します。
DataWorks コンソールにログインします。ご利用のデータソースがあるリージョンに切り替えます。左側のナビゲーションウィンドウで、 を選択します。ドロップダウンリストからワークスペースを選択し、[DataService Studio へ移動] をクリックします。
データプッシュタスクを作成します。
[DataService Studio] の左側のナビゲーションウィンドウで、 を選択します。Data Push ページで、
アイコンをクリックし、Create Data Push Task を選択します。タスクの名前を入力し、OK をクリックします。
2. データプッシュタスクの設定
任意:サンプルデータの準備
本機能の利用方法を速やかにご理解いただくため、以下のセクションでは、sales という名前の MaxCompute テーブルからのクエリ結果をプッシュする例を用いて説明します。この例では、データプッシュ機能を使用して、各部門の日次売上高とその前日からの変動を、指定されたチャンネルに送信します。この例に従うには、ご利用の環境で 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, 'Dept. 1', 12000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (2, 'Dept. 2', 21000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (3, 'Dept. 3', 5000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (1, 'Dept. 1', 11000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (2, 'Dept. 2', 20000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (3, 'Dept. 3', 10000.00);データソースの選択
タスクの [データソースタイプ]、[データソース名]、および [データソース環境] を選択します。開発テーブルと本番テーブルのどちらを使用しているかに基づいて、データソース環境を選択できます。この例に従う場合は、sales テーブルを作成した環境を選択してください。

サポートされているデータソースタイプの一覧については、「サポートされるデータソースとチャンネル」をご参照ください。
クエリ SQL の作成
データ範囲を定義し、データを取得します。
Edit Query 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 文の記述が完了すると、クエリ結果のフィールドが自動的に セクションに追加されます。出力パラメーターの解析に失敗した場合や、正しくない場合は、Automatically Parse Parameters をオフにして、手動で Add Parameter を行うことができます。

また、
${variable_name}形式を使用して、SQL 内にカスタム変数を設定することもできます。これらの変数は Assignment Parameters であり、Assignment Parameters または 定数 を割り当てることができます。これにより、コード内で動的なパラメーター入力が可能になります。詳細については、「プッシュコンテンツの設定」をご参照ください。-- スケジューリングパラメーターを使用して、時間変数を動的に割り当てます。 -- 毎日、各部門の最新の売上高を取得します。 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}';
セグメント化されたクエリの実行
大規模なテーブルに対して、データプッシュでは Next Token メソッドを使用してデータをセグメント単位でクエリできます。コードエディタのツールバーで をクリックすると、使用方法の説明が表示されます。
プッシュコンテンツの設定
Content to Push セクションでは、Markdown や Table などのフォーマットでメッセージコンテンツを編集できます。このコンテンツは Webhook に送信されます。
Title フィールドでカスタムメッセージタイトルを設定した後、コンテンツエリアで Add をクリックし、Markdown、Table、または Email Body を選択してプッシュコンテンツを作成します。以下に設定例を示します。ツールバーの Preview をクリックすると、プッシュメッセージがどのように表示されるかを確認できます。
送信先がメールの場合、Markdown および Table セクションのコンテンツは添付ファイルとして送信されます。Table のコンテンツはレンダリングされ、メールメッセージ内に表示されます。
送信先がメールでない場合、Markdown および Table セクションのコンテンツは Webhook メッセージの本文として表示されます。Email Body のコンテンツは非表示になります。
Markdown コンテンツ
パラメーター変数の使用:プッシュコンテンツを作成する際、
${parameter_name}構文を使用して、Assignment Parameters と Output Parameters をリッチテキストコンテンツに埋め込むことができます。データプッシュタスクが実行されると、これらの変数は割り当てられた値または SQL クエリの結果に置き換えられます。Assignment Parameters: セクションで、変数に [定数] またはスケジューリングパラメーターの [日時式] を割り当てる必要があります。
Output Parameters:これらは、
SELECT A,B… FROM TABLEのような SQL クエリ内のフィールド名またはエイリアス (例:A, B, ...) です。これらはクエリによって返されるデータを表します。
@メンションメンバー:この機能を使用して、Lark Webhook にメッセージをプッシュする際に、特定の人を自動的に @メンションするように設定できます。
デフォルトでは、Markdown モードはリッチテキストを使用してメッセージを作成します。Lark でユーザーを @メンションするには、
アイコンをクリックして Markdown ソースモードに切り替えます。その後、<at id="all" />または<at email="username@example.com" />を使用して通知できます。
Markdown は、イメージの追加やDingTalk 絵文字の挿入などの機能もサポートしています。

テーブルコンテンツ
Add Column をクリックしてテーブルに列を追加し、Parameters を関連付けます。
送信先が Lark Webhook の場合、テーブルの列の横にある
アイコンをクリックして Modify Field ダイアログを開きます。ここで、Field、Display Name、Display Style、および Condition を調整して、プッシュされるコンテンツの外観をカスタマイズできます。Field:別の Output Parameters フィールドに切り替えることができます。
Display Name:コンテンツがコラボレーションツールにプッシュされたときに、テーブルヘッダーに表示したい名前です。
Display Style:テーブル内の Value の前後に固定のプレフィックスまたはサフィックスを追加します。
Condition:テーブルの Value を設定された値と比較します。条件が Yes の場合、表示色と Additional Unicode をカスタマイズできます。

説明テーブルの作成とサポートはチャンネルによって異なります:
DingTalk: Markdown テーブルと Data Push の組み込みテーブルをサポートします。ただし、Modify Field ダイアログで設定する Display Style と Condition の設定には対応していません。[DingTalk モバイルアプリ] はテーブルの表示に対応していません。
Lark:Markdown テーブルとデータプッシュの組み込みテーブルの両方をサポートし、それらをレンダリングできます。
WeCom:Markdown テーブルのプッシュをサポートしますが、レンダリングはしません。
Teams モバイルアプリ:Markdown テーブルをサポートし、レンダリングできます。
メール本文
データプッシュでは、プッシュコンテンツにメール本文を追加できます。メール本文を編集する際は、以下の点にご注意ください:
各データプッシュタスクは 1 つのメール本文のみをサポートします。
メール本文は、送信先がメールの場合にのみレンダリングされます。送信先がメールでない場合、Email Body のコンテンツは非表示になります。

3. プッシュ設定
Push Settings を構成する前に、まず送信先を作成する必要があります。Service Development ページで、左下の
アイコンをクリックして設定パネルを開きます。Destination Management タブに切り替え、Create Destination をクリックします。サポートされる送信先タイプには、DingTalk、Lark、WeCom、Teams、およびメールが含まれます。
Webhook 送信先の作成
Create Destination を行う際に、以下のパラメーターを設定します:
Type:DingTalk、Lark、WeCom、または Teams などのチャンネルタイプを選択します。
Destination Name:新しい送信先のカスタム名を入力します。
Webhook:選択した送信先の Webhook URL を入力します。
Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
Teams の Webhook を取得する方法については、「Microsoft Teams ワークフローを使用して受信 Webhook を作成する」をご参照ください。

メール送信先の作成
Push Settings を構成する前に、まず送信先を作成する必要があります。Service Development ページで、左下の
アイコンをクリックして設定パネルを開きます。Destination Management タブに切り替え、Create Destination をクリックします。
Create Destination を行う際に、以下のパラメーターを設定します:
Type: 「Email」を選択します。
Destination Name:新しい送信先のカスタム名を入力します。
SMTP Host:メールサーバーのアドレスです。
SMTP Port:メールサーバーのポート番号です。デフォルトは 465 ですが、変更可能です。
Sender Address:メールの送信元アドレスです。
[SMTP アカウント]:完全なメールアカウント名です。
SMTP Password:メールアカウントのパスワードです。
Receiver Address:送信先のメールアドレスです。

プッシュ設定
右側の Push Settings をクリックして、プッシュタスクのスケジュール、リソースグループ、および送信先を設定します。タスクは設定されたスケジュールに従って実行されます。具体的な設定は以下の通りです:
スケジュール構成:データプッシュサービスが作成したコンテンツをプッシュするスケジュールと特定の時間を設定します。
スケジュール
指定時刻
スケジュール時刻
例
Month
タスクを実行する月の日を指定します。
スケジュールされた日にタスクを実行する時刻。
スケジュール: 月
[指定時刻]:毎月 1 日
スケジュール時間:08:00
実際の実行時刻:タスクは毎月 1 日の 08:00 に実行されます。
Week
タスクを実行する曜日を指定します。
スケジュールされた日にタスクを実行する時刻。
[スケジュール]:週
指定時間: 月曜日
スケジュール時間: 09:00
実際の実行時刻:タスクは毎週月曜日の 09:00 に実行されます。
[日]
説明日次スケジュールは毎日実行されます。
スケジュールされた日にタスクを実行する時刻。
スケジュール: 日
スケジュール時間: 08:00
実際の実行時刻:タスクは毎日 08:00 に実行されます。
時間
説明2 つのプッシュモードから選択できます:
指定した時間間隔でプッシュします。
指定した時と分にプッシュします。
時間間隔でのプッシュ:
Start Time:00:00
[間隔]:1 時間
End Time:23:59
実際の実行時刻:タスクは毎日 00:00 から 23:59 まで 1 時間ごとに実行されます。
指定した時と分でのプッシュ:
指定時間: 0, 1
[指定した分]:10
実際の実行時刻:タスクは毎日 00:10 と 01:10 に実行されます。
[タイムアウト定義]:データプッシュタスクの実行時間を制限できます。タスクが設定された時間を超えた場合、終了されます。
[システムデフォルト]:タスクのタイムアウトはシステムの負荷に応じて動的に調整され、3 日から 7 日の範囲です。タイムアウトしたタスクは自動的に終了されます。
例:[カスタム] タイムアウトを 1 時間に設定した場合、プッシュタスクはスケジュールされた開始時刻から 1 時間以上実行されると終了されます。
[有効日]:タスクの有効期間を設定します。現在のシステム時刻がこの範囲外の場合、タスクは自動的にスケジュールされません。
[無期限]:タスクは常に有効で、日付範囲による制限はありません。
[例]: 「[指定時間]」の範囲を 2024-01-01 から 2024-12-31 に設定すると、タスクはこの期間内にそのスケジュールに従ってプッシュされます。
Resource Group for Scheduling:専用スケジューリングリソースグループまたはサーバーレスリソースグループ (汎用) を設定して、タスクにスケジューリングリソースを提供できます。リソースグループの詳細については、「リソースグループの管理」をご参照ください。
Destination:設定したコンテンツを選択した送信先にプッシュできます。すでに作成されている送信先からのみ選択できます。送信先は Data Push Task Management で設定します。
説明DingTalk Webhook にプッシュする場合、ボットを設定する際に セクションでキーワードを追加する必要があります。プッシュを成功させるには、プッシュコンテンツにこれらのキーワードのいずれかが含まれていることを確認してください。

4. データプッシュタスクのテスト
タスクを作成した後、ツールバーの Save をクリックして現在の設定を保存します。次に、Test をクリックして開発環境でテストを実行し、データが正常にプッシュできることを確認します。テストのために変数に手動で定数値を割り当てる必要があります。

データプッシュタスクを Submit および [公開] する前に、開発環境でのテストに合格する必要があります。
5. プッシュタスクの公開
タスクバージョンの管理
開発環境でのテストが成功した後、Submit をクリックします。送信されていないタスクはドラフト状態のままで、新しいバージョンは生成されません。
タスクを送信すると、新しいバージョンが生成されます。右側の [バージョン] パネルで、Can Be Published とマークされた送信済みバージョンを見つけ、[公開] をクリックします。タスクは公開され、Push Settings に従って定期的に実行されます。
[バージョン] パネルでデータプッシュタスクを管理できます。
タスクステータス
操作
Description
[公開済み]
Data Push Task Management
Data Push Task Management ページに移動して、公開済みタスクの詳細情報を表示します。詳細については、「データプッシュタスクの管理」をご参照ください。
Can Be Published
[公開]
対応するバージョンのタスクを公開します。
[非推奨にする]
対応するタスクのバージョンを非推奨にして、そのステータスを [非推奨] に変更します。
Off-Line、[非推奨]
Version Details
対応するバージョンの設定とプッシュコンテンツを表示します。
ロールバック
対応するバージョンにロールバックします。
説明Version Details と [ロールバック] の操作は、すべてのステータスのタスクで利用可能で、一貫して機能します。

データプッシュタスクの管理
データプッシュタスクが公開された後、[バージョン] パネルの [操作] 列で Data Push Task Management をクリックするか、 に移動して、Data Push Tasks リストページに移動します。
このページには、公開されているすべての Data Push Tasks が一覧表示され、その ID、Name、[データソース名]、[データソース環境]、Node Mode、Resource Group for Scheduling、Owner、[パブリッシャー]、および Published Time が表示されます。公開済みタスクに対して、[操作] 列で以下の操作を実行できます:
操作 | Description |
Unpublish | 選択したタスクをオフラインにします。 |
Test | Test Data Push Task ページに移動して、公開済みタスクをテストします。 |
選択したタスクの Version Details ページに移動するには、Name 列の
アイコンをクリックします。

公開済みタスクのテスト
データプッシュタスクが公開されると、設定した内容に基づいて指定された送信先にコンテンツをプッシュします。[データプッシュタスクのテスト] ページには、以下の 2 つの方法で移動できます:
方法 1: を選択します。
方法 2: に移動します。
公開済みのデータプッシュタスクをテストすることで、タスクがデータを正しくプッシュできるか、また送信先がデータを適切に受信できるかを確認できます。
