データプッシュ機能は、SQL クエリを使用してデータソースからデータを取得し、Webhook またはメールアドレスにプッシュする DataWorks のデータサービスです。ビジネスデータを複数の Webhook またはメールアドレスに定期的にプッシュする設定を簡単に行えます。このトピックでは、データプッシュ機能の設定方法と使用方法について説明します。
概要
定期タスクをスケジュールして、データを 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 を超えないようにしてください。
-
E メールの場合、各データプッシュタスクは E メール本文を 1 つのみサポートします。その他の制限については、ご利用の E メールサービスの SMTP の制約をご参照ください。
-
-
データプッシュ機能は、次のリージョンの DataWorks ワークスペースでのみ利用できます: China (Hangzhou)、China (Shanghai)、China (Beijing)、China (Shenzhen)、China (Chengdu)、China (Hong Kong)、Singapore、Japan (Tokyo)、US (Silicon Valley)、US (Virginia)、Germany (Frankfurt)。
前提条件
-
データソースが作成済みであることを確認してください。詳細については、「データソース管理」をご参照ください。
-
リソースグループでパブリックネットワークアクセスが有効になっていることを確認してください。詳細については、「ネットワーク接続ソリューションの概要」をご参照ください。
ステップ 1: プッシュタスクの作成
-
Data Services に移動します。
DataWorks コンソールにログインします。 上部ナビゲーションバーで、データソースが存在するリージョンを選択します。 左側のナビゲーションペインで、 を選択します。 ドロップダウンリストから目的のワークスペースを選択し、[Go to Data Service] をクリックします。
-
データプッシュタスクを作成します。
[データサービス] の左側のナビゲーションペインで、 を選択して [Data Push] ページに移動します。
アイコンをクリックし、Create Data Push Task を選択して、タスク名を入力し、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, '部門 1', 12000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (2, '部門 2', 21000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (3, '部門 3', 5000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (1, '部門 1', 11000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (2, '部門 2', 20000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (3, '部門 3', 10000.00);
データソースの選択
Data Source Type、Data Source Name、および Data Source Environment を選択して、データプッシュ用のデータテーブルの環境を決定します。データプッシュが開発テーブル用か本番テーブル用かに基づいて、データソース環境を選択できます。ハンズオン演習を実行している場合は、準備段階で作成したsales テーブルが配置されている環境を確認してください。
たとえば、[データソースタイプ] を odps、[データソース名] を MaxCompute_Source、[データソース環境] を [本番環境] に設定します。新しいデータソースを作成するには、[データソース名] フィールドの下にあるリンクをクリックします。
サポートされているデータソースタイプのリストについては、「サポートされているデータソースとチャネル」をご参照ください。
クエリ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 セクションでカスタマイズされたコンテンツは添付ファイルとして送信されます。メール本文はメールメッセージにレンダリングされて表示されます。
-
プッシュ先がメールアドレスでない場合、Markdown および Table セクションでカスタマイズされたコンテンツは Webhook メッセージの本文として表示されます。Email Body は Webhook プッシュメッセージでは非表示になります。
Markdownコンテンツ
-
パラメーター変数の使用: プッシュコンテンツの作成時に、
${parameter_name}形式で Assignment Parameters および Output Parameters をリッチテキストに追加できます。これらの変数は、データプッシュタスクの実行時に、対応する割り当て済みデータまたは SQL クエリ結果に置き換えられます。-
Assignment Parameters: セクションで、変数に Constant またはスケジューリングパラメーターの [時間表現式] を割り当てる必要があります。
-
[Output Parameters]: これらのパラメーターは、
SELECT A, B, ... FROM TABLEのようなステートメント内のA, B, ...など、SQL クエリのフィールド名またはエイリアスに対応します。 これらはクエリされたデータを表します。
-
-
@メンション: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}';です。
テーブルコンテンツ
-
Add Column をクリックしてテーブルの列数を増やします。その後、対応する列に Parameters を関連付けることができます。
-
プッシュ先が Lark Webhook の場合、作成したテーブル列の右側にある
アイコンをクリックして、Modify Field ダイアログボックスを開きます。 このダイアログボックスでは、Field、Display Name、Display Style、Condition を調整して、プッシュされたコンテンツに多様な表示効果を作成できます。-
[Field]: 別の Output Parameters フィールドに切り替えます。
-
[Display Name]:コラボレーションツールにプッシュする際にテーブルヘッダーに表示する名前。
-
[Display Style]:テーブル内のValueの前または後に、固定のプレフィックスまたはサフィックスを追加します。
-
[Condition]: テーブル内の Value を、設定された比較値と比較します。値が Yes または No の場合に表示色をカスタマイズし、Additional Unicode を指定できます。条件: 条件付きロジックを有効にし、演算子 (例:
>=) としきい値 (例:60) を設定できます。条件が満たされた場合、[緑色に変更] を選択できます。条件が満たされない場合、[赤色に変更] を選択できます。また、[追加された識別子] を設定することもできます。
説明-
テーブルの作成方法はチャネルによって異なります。さまざまなチャネルにおけるテーブルコンテンツのサポート状況は次のとおりです:
-
DingTalk: Markdown テーブルとデータプッシュの組み込みテーブルをサポートしています。ただし、Modify Field ダイアログボックスで設定した Display Style と Condition の設定はレンダリングされません。また、DingTalk モバイルではテーブルを表示できません。
-
[Lark]:Markdown と組み込みテーブルの両方をサポートしており、カスタム表示スタイルと条件のレンダリングも含まれます。
-
[WeCom]:Markdown テーブルのプッシュをサポートしますが、レンダリングはしません。
-
Teams モバイル:Markdown テーブルのプッシュをサポートしており、レンダリングも可能です。
-
-
メール本文
DataWorks データプッシュは、プッシュコンテンツへのメール本文の追加をサポートしています。メール本文を編集する際は、次の点に注意してください:
-
各データプッシュタスクは、1 つのメール本文のみをサポートします。
-
メール本文は、プッシュ先がメールアドレスの場合にのみレンダリングされます。プッシュ先がメールアドレスでない場合、Webhook プッシュメッセージではEmail Bodyは非表示になります。
ステップ 3:プッシュ設定
Push Settings を設定する前に、Service Development ページの左下隅にある
アイコンをクリックして設定パネルを開き、Destination Management タブに切り替え、Create Destination をクリックして宛先を作成します。サポートされているチャネルタイプには、DingTalk、Lark、WeCom、Teams、Email が含まれます。
Webhook送信先の作成
Create Destination をクリックすると、以下のパラメーターを設定します。
-
[Type]: チャネルタイプを選択します。オプションには DingTalk、Lark、WeCom、Teams があります。
-
[Destination Name]: 新しいプッシュ送信先のカスタム名を入力します。
-
[Webhook]:選択したプッシュチャネルの Webhook URL です。
-
Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
-
Teams の Webhook を取得する方法については、「Microsoft Teamsワークフローを使用して受信 Webhook を作成する」をご参照ください。
設定が完了したら、[OK] をクリックします。
メール送信先の作成
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]
プッシュタスクを実行する月の日を指定します。
プッシュ日にデータプッシュタスクが実行される時刻です。
[Scheduling Frequency]:月
[Specified Time]:毎月 1日
[Data Timestamp]:08:00
実際の実行時間:プッシュタスクは毎月1日の08:00に実行されます。
[Week]
プッシュタスクを実行する曜日を指定します。
プッシュ日にデータプッシュタスクが実行される時刻です。
[Scheduling Frequency]: 週
[Specified Time]:月曜日
[Data Timestamp]: 09:00
実際の実行時間:プッシュタスクは毎週月曜日の09:00に実行されます。
[Day]
説明日次周期では、タスクは毎日実行されます。
プッシュ日にデータプッシュタスクが実行される時刻です。
[Scheduling Frequency]:日
[Data Timestamp]: 08:00
実際の実行時間:プッシュタスクは毎日08:00に実行されます。
[Hour]
説明2つのプッシュモードから選択できます。
-
指定された時間間隔でプッシュします。
-
指定された時と分にプッシュします。
時間間隔でプッシュ:
[Start Time]: 00:00
[Time Interval]: 1 時間
[End Time]: 23:59
実際の実行時間:毎日00:00から23:59まで、1 時間ごとにプッシュが実行されます。
指定した時と分にプッシュ:
[時間の指定]: 0, 1
[Specified Minute]: 10
実際の実行時間:毎日00:10と01:10にプッシュが実行されます。
-
-
[Timeout Definition]: タスク実行の時間制限を設定します。この制限を超えた場合、タスクは終了されます。
-
[Default Value]: Default Value 設定では、タスクのタイムアウトはシステム負荷に基づいて 3 日から 7 日の範囲で動的に調整されます。タイムアウトしたタスクは終了されます。
-
例: Custom タイムアウトを 1 時間に設定した場合、プッシュタスクは、そのスケジュールされた開始時刻から 1 時間を超えて実行されると終了されます。
-
-
[有効開始]: データプッシュタスクが有効な期間を設定します。
-
[永久に有効]: データプッシュタスクは有効期間に制限されず、永続的に有効です。
-
[例]:Specified Time の範囲を 2024-01-01 から 2024-12-31 までに設定した場合、この期間内は、設定されたスケジューリングサイクルに従ってプッシュタスクが実行されます。
-
-
[Resource Group for Scheduling]: データプッシュタスクのスケジューリングリソースとして、[スケジューリング専用リソースグループ] または [サーバーレスリソースグループ] (汎用リソースグループ) を設定できます。 リソースグループの詳細については、「リソースグループ管理」をご参照ください。
-
[Push Every Time]: SQL クエリがデータを返さない場合に、プッシュ通知を送信するかどうかを制御します。
-
有効 (デフォルト):クエリがデータを返すかどうかに関係なく、スケジュールされた実行のたびにプッシュが実行されます。
-
無効: 入力パラメーターを除き、プッシュコンテンツで使用されるすべての変数が空の場合、メッセージは送信されません。SQL の
WHERE句またはHAVING句を使用してデータをフィルタリングできます。フィルター条件が満たされず、クエリ結果が空の場合、プッシュタスクは自動的にスキップされ、メッセージは送信されません。
-
-
[Destination]: 設定したコンテンツを選択した宛先へプッシュできます。Data Push Task Management で設定された、既存のプッシュ先からのみ選択できます。
説明DingTalk Webhook にプッシュする場合、ボットの設定の セクションでキーワードを追加する必要があります。プッシュを成功させるには、プッシュコンテンツにこのキーワードが含まれていることを確認してください。
ステップ 4:プッシュタスクのテスト
データプッシュタスクを作成したら、ツールバーの Save ボタンをクリックして現在の設定を保存します。 次に、Test をクリックして開発段階のテストを実行し、データプッシュが正しく機能することを確認します。 テストでは、変数に定数値を手動で割り当てる必要があります。
データプッシュタスクは、Submit、Publish をする前に、開発環境でのテストプッシュに合格する必要があります。
ステップ 5:プッシュタスクの公開
タスクバージョンの管理
-
開発中のテストが成功したことを確認した後、 Submit をクリックします。プッシュタスクが提出されない場合、下書き状態のままとなり、新しいバージョンは生成されません。
-
サービスを提出すると、新しいバージョンが生成されます。右側の Version パネルで、 Can Be Published な提出済みバージョンを見つけて Publish をクリックします。タスクを公開すると、 Push Settings で定義されたスケジュールが有効になります。
Version パネルで、次のようにデータプッシュタスクを管理します。
[ステータス]
[操作]
Description
Publish
Data Push Task Management
[Data Push Task Management] ページに移動します。このページで、公開されたタスクの詳細情報を表示できます。詳細については、「データプッシュタスクを管理」をご参照ください。
Can Be Published
Publish
対応するバージョンのタスクを公開します。
Abandoned
対応するバージョンのタスクを破棄し、ステータスを Abandoned に変更します。
Off-Line、Abandoned
Version Details
そのバージョンのデータプッシュタスクの設定情報と対応するプッシュコンテンツを表示します。
ロールバック
このバージョンを復元し、現在の設定とします。
説明Version Details および ロールバック 操作は、すべてのステータスのタスクで使用でき、同じように機能します。
プッシュタスクの管理
データプッシュタスクが正常に公開された後、 Version パネルの Operation 列にある Data Push Task Management をクリックするか、 パスから [Data Push Tasks] リストページに移動します。
このページには、公開されたすべての [Data Push Tasks] が一覧表示され、 ID、Name、Data Source Name、Data Source Environment、Node Mode、Resource Group for Scheduling、Owner、Deployer、Published Time などの詳細が表示されます。Operation 列で、公開されたデータプッシュタスクに対して次の操作を実行できます:
|
[操作] |
Description |
|
Unpublish |
選択したタスクをオフラインにします。 |
|
Test |
[Test Data Push Task] ページに移動します。このページで、公開されたタスクをテストできます。 |
Name 列の
アイコンをクリックすると、選択したタスクの [Version Details] ページに移動します。
公開済みタスクのテスト
次のいずれかの方法で [データプッシュテスト] ページに移動できます:
-
方法 1: を選択します。
-
方法 2: に移動します。[Data Push Tasks] リストページで、対象タスクの [操作] 列にある [テスト] をクリックします。
公開されたタスクをテストして、タスクが正しく実行され、宛先が期待どおりにデータを受信することを確認します。
データプッシュテスト ページで、ドロップダウンリストから対象のデータプッシュタスクを選択または検索し、必要に応じて [宛先へプッシュ] チェックボックスにチェックを入れてから、 [テストを開始] をクリックします。
よくある質問
Q:データプッシュはオンデマンドプッシュをサポートしていますか?
A:単発のオンデマンドプッシュの場合は、[テスト] 機能を使用し、[宛先へプッシュ] オプションを選択します。条件付きの定期的プッシュの場合は、Push Every Time 設定を無効にします。これにより、SQL クエリがデータを返した場合にのみタスクが実行されます。