DataWorks DataStudio では、ワークフローにデータプッシュノードを追加でき、シンプルプッシュ、結合プッシュ、スクリプトプッシュ、条件付きプッシュ、MaxCompute データプッシュの 5 つのプッシュ方法をサポートしています。このチュートリアルでは、それぞれの方法を説明します。
背景情報
DataWorks のビジネスプロセスにデータプッシュノードを追加できます。ビジネスプロセスによってデータが処理された後、ノードは単純なクエリを実行して結果を取得します。その後、タスクスケジューリングに基づき、ノードは DingTalk、Lark、WeCom、Microsoft Teams、メールなどの送信先にデータを配信します。
アプローチ
後続のプッシュワークフローのために、テストデータを準備するノードを追加します。
データクエリ、代入、その他のデータ処理ノードを追加して、テストデータを処理およびクエリします。
説明テストデータを準備し、クエリを処理するためのノードは、ビジネスニーズに合わせて調整できます。このチュートリアルでは、MySQL ノードを使用してデータのプッシュ方法を説明します。
データクエリノードから出力パラメーターを受け取るデータプッシュノードを追加します。その後、コンテキストパラメーターとして渡されたデータを DingTalk、Lark、WeCom、Microsoft Teams、またはメールにプッシュします。
プッシュ方法
このチュートリアルでは、ワークフローでデータプッシュノードを使用するための 5 つの方法を説明します:シンプルプッシュ、結合プッシュ、スクリプトベースのプッシュ、条件付きプッシュ、および MaxCompute データプッシュ。
シンプルプッシュ:上流のワークフローが SQL クエリを実行し、ノードコンテキストのパラメーター を使用して、その結果をデータプッシュノードに渡します。
結合プッシュ:複数の上流ワークフローが SQL クエリを実行し、その結果をノードコンテキストのパラメーターを使用して単一のデータプッシュノードに渡します。
スクリプトベースのプッシュ: 上流の 代入ノード は、スクリプトを使用してデータを処理し、ノードコンテキストのパラメーター を使用して結果をプッシュノードに渡します。詳細については、「割り当てノード」をご参照ください。
条件付きプッシュ: 上流のワークフローは、ブランチノード を使用して、設定された条件に照らしてデータを評価し、条件を満たすデータを ノードコンテキストのパラメーター を使用してデータプッシュノードに渡します。 詳細については、「ブランチノード」をご参照ください。
MaxCompute データプッシュ:MaxCompute データソースからデータをプッシュします。代入ノードを使用して MaxCompute をクエリし、その結果をプッシュできます。
前提条件
開始する前に、以下が揃っていることを確認してください:
DataWorks ワークスペース。詳細については、「ワークスペースの作成」をご参照ください。
ApsaraDB RDS for MySQL インスタンスと、ワークスペース内の MySQL データソース。詳細については、「データソース管理」をご参照ください。
ワークスペース内の MaxCompute データソース。詳細については、「MaxCompute コンピューティングリソースの関連付け」をご参照ください。
説明このチュートリアルでは、MySQL データソースと MaxCompute データソースを例として使用します。ビジネスニーズに応じて、他のタイプのデータソースを追加できます。
サーバーレスリソースグループ。データプッシュノードを実行できるのはサーバーレスリソースグループのみです。購入して使用するには、「サーバーレスリソースグループの使用」をご参照ください。
制限事項
データプッシュ機能には以下の制限があります:
DingTalk の場合、データサイズは 20 KB を超えることはできません。
Lark の場合、データサイズは 20 KB を超えることはできず、画像は 10 MB 未満である必要があります。
WeCom の場合、各チャットボットは 1 分あたり 20 メッセージまでしか送信できません。
Microsoft Teams の場合、データサイズは 28 KB を超えることはできません。
メールの場合、各データプッシュタスクは 1 つのメール本文のみをサポートします。追加の制限については、ご利用のメールサービスの SMTP の制限をご参照ください。
データプッシュ機能は、次のリージョンの DataWorks ワークスペースでのみ利用可能です:中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (成都)、中国 (香港)、シンガポール、マレーシア (クアラルンプール)、米国 (シリコンバレー)、米国 (バージニア)、ドイツ (フランクフルト)。
事前準備
ワークフローの作成
[DataWorks コンソール]にログインします。 対象のリージョンで、左側のナビゲーションウィンドウでをクリックします。 ドロップダウンリストからワークスペースを選択し、移動 データ開発をクリックします。
データ開発 パネルで、ビジネスフロー を右クリックし、ビジネスフローの作成 を選択します。ワークフローの名前を入力します。この例では、
Data Push Demoと入力します。
ノードの作成
Data Push Demo ワークフローを作成した後、ワークフロー名をダブルクリックしてワークフローキャンバスを開きます。以下の表から必要なプッシュ方法に基づいて、
をクリックして対応するノードを作成します。作成するノードには、表で指定されているとおりに正確に名前を付けます。
プッシュ方法 | ノード名 | ノードタイプ | 説明 |
| MySQL ノード | テストデータから先月の総売上をクエリし、その結果をコンテキストパラメーターとして分岐ノードに渡します。 | |
| ブランチノード | MySQL ノードからの出力パラメーターを受け取り、条件に対して評価し、その結果に基づいてデータをコンテキストパラメーターとして異なる MySQL ノードにルーティングします。 | |
| MySQL ノード | 分岐ノードから「目標達成」の出力パラメーターを受け取り、対応するデータをクエリし、その結果をコンテキストパラメーターとしてデータプッシュノードに渡します。 | |
| 分岐ノードから「目標未達成」の出力パラメーターを受け取り、対応するデータをクエリし、その結果をコンテキストパラメーターとしてデータプッシュノードに渡します。 | ||
| データプッシュ ノード | 「目標達成」の出力パラメーターを受け取り、入力コンテキストパラメーターからのデータを送信先にプッシュします。 | |
| 「目標未達成」の出力パラメーターを受け取り、入力コンテキストパラメーターからのデータを送信先にプッシュします。 | ||
| MySQL ノード | 上位 3 カテゴリの先週の総売上をクエリし、その結果をコンテキストパラメーターとして代入ノードに渡します。 | |
| 代入ノード | Python を使用して MySQL ノードからの出力パラメーターを受け取り、それをリストに変換し、そのリストをコンテキストパラメーターとしてデータプッシュノードに渡します。 | |
| データプッシュ ノード | 代入ノードからリストを受け取り、それを送信先にプッシュします。 | |
| MySQL ノード |
| |
| |||
| データプッシュ ノード | 2 つの MySQL ノードから同時に出力パラメーターを受け取り、入力コンテキストパラメーターからのデータを送信先にプッシュします。 | |
| MySQL ノード | テストデータから昨日の総売上をクエリし、その結果をコンテキストパラメーターとしてデータプッシュノードに渡します。 | |
| データプッシュ ノード | MySQL ノードから出力パラメーターを受け取り、入力コンテキストパラメーターからのデータを送信先にプッシュします。 | |
| オフライン同期 ノード | Data Integration を使用して、MySQL から ODPS データソースにデータを同期します。 | |
| 代入ノード | ODPS データソースからデータをクエリし、その結果をコンテキストパラメーターとしてデータプッシュノードに渡します。 | |
| データプッシュ ノード | 代入ノードからクエリ結果を受け取り、それを送信先にプッシュします。 |
データの準備
プッシュフローの設定
DataWorks は、ビジネスロジックに合わせていくつかのデプロイ方法を提供しています:条件付きデプロイメント、スクリプトベースのデプロイメント、結合デプロイメント、シンプルデプロイメント、および MaxCompute データデプロイメント。このチュートリアルでは、MySQL を使用してさまざまなデータソースの方法を説明し、MaxCompute からのデータデプロイの具体的な例を提供します。
条件付きデータプッシュ
ステップ 1:プッシュワークフローの構築
Data_Push_Demo ワークフローをダブルクリックしてワークフローキャンバスを開きます。ノードを順番に接続して、下の図に示すような条件付きデータプッシュワークフローを作成します。このワークフローは、Query_Last_Month_Sales_Total ノードから Check_Sales_Target ノードにデータをルーティングします。Check_Sales_Target ノードは、フローを「準拠」ブランチ(Last_Month_Sales_Target_Met ノードと Push_Top_3_Categories_Target_Met ノードを含む)と「非準拠」ブランチ(Last_Month_Sales_Target_Not_Met ノードと Push_Bottom_3_Categories_Target_Not_Met ノードを含む)に分割します。

ステップ 2:SQL クエリノードの設定
SQL クエリノードを設定して、テストデータをクエリします。 クエリ結果は、ノードコンテキストのパラメーターを使用して、出力パラメーター (outputs) として下流の分岐ノードに渡されます。
Query_Last_Month_Sales_Totalノードをダブルクリックし、次の SQL コードを入力します。-- 前月の総売上を計算 SELECT SUM(sales) AS sales_amount FROM orders WHERE datetime BETWEEN DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59');SQL コードを入力したら、右側にあるスケジューリング設定をクリックします。 [プロパティ] ペインで、次のパラメーターを設定します。
スケジュール時刻:
08:00。リソースグループのスケジューリング: サーバーレスリソースグループを選択します。
上流ノード: ワークスペースのルート頂点を使用する を選択します。
このノードのレスポンスパラメーター: ノードコンテキストのパラメーター の下で、このノードのレスポンスパラメーター の横にある 代入パラメーターの追加 をクリックして、クエリ結果を下流ノードに渡すための出力パラメーターを追加します。
ステップ 3:分岐ノードの設定
ブランチノードでは、ノードコンテキストのパラメーター 内で、このノードの入力パラメーター を使用して上流の SQL クエリノードから outputs 出力パラメーターを取得します。ノードはその後、条件判定を実行し、このノードのレスポンスパラメーター を使用して条件を満たすデータを出力します。
Check_Sales_Targetノードをダブルクリックします。ブランチの追加 をクリックして、「準拠」用と「非準拠」用の 2 つのブランチを作成し、次のように設定します。パラメーター
準拠ブランチ
非準拠ブランチ
ブランチ条件
${inputs[0][0]}>=500000${inputs[0][0]}<500000ノード出力への関連付け
Compliant
Non-compliant
ブランチの説明
先月の総売上は準拠しています。
先月の総売上は準拠していません。
説明式 [0][0] は、条件の特定のデータポイントを特定するための 2 次元配列参照です。
上流ノードが SQL クエリノードの場合、2 次元配列を使用してパラメーター内の条件データを特定します。
上流ノードが Python ノードの場合、1 次元配列を使用します。
Condition Checkノードをダブルクリックして開きます。右側で スケジューリング設定 をクリックし、表示されるダイアログボックスで次の設定項目を設定します。パラメータータイプ
説明
時間プロパティ
スケジューリング周期
日スケジュール時刻
08:00再実行プロパティ
成功および失敗した実行後の再実行が許可されます。
リソースプロパティ
リソースグループのスケジューリング
サーバーレスリソースグループを選択します。
説明データプッシュノードを初めて使用する場合、スケジューリングリソースグループをアップグレードするためにチケットを提出する必要があります。
このノードの出力名
ブランチを設定すると、出力名は自動的に解析され、ここに追加されます。出力名 は、ブランチに定義されている ノード出力への関連付け と一致する必要があります。
ノードコンテキストのパラメーター
このノードの入力パラメーター
パラメーター名:
inputs値のソース:上流ノード
Query last month's total salesから、出力パラメーターoutputsを選択します。このノードのレスポンスパラメーター
システムはデフォルトで
outputsを追加します。設定後、
アイコンをクリックして Check_Sales_Targetノードを保存します。
ステップ 4:分岐 SQL ノードの設定
このチュートリアルでは、ブランチ SQL クエリノードは 2 つのノード、Last_Month_Sales_Target_Met_Data と Last_Month_Sales_Target_Not_Met_Data に分割されます。ブランチノード のコンテキストパラメーターを Last_Month_Sales_Target_Met_Data ノードと Last_Month_Sales_Target_Not_Met_Data ノードに出力する必要があります。次に、このノードのレスポンスパラメーター の ノードコンテキストのパラメーター を使用して、ブランチノードからの SQL クエリ結果を、対応する target-met および target-not-met の データプッシュ ノードに出力します。
Last_Month_Sales_Target_MetノードとLast_Month_Sales_Target_Not_Metノードをダブルクリックしてエディターを開き、それぞれに次の SQL コードを入力します。先月の売上目標達成
SET @all_cat_sales_volume_month := 0.0; SELECT SUM(sales) INTO @all_cat_sales_volume_month FROM orders WHERE datetime BETWEEN DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59'); -- 一時テーブルを作成 CREATE TEMPORARY TABLE IF NOT EXISTS temp_array ( category VARCHAR(255), sales DOUBLE, all_cat_sales_volume_month DOUBLE ); -- 一時テーブルにクエリして書き込む INSERT INTO temp_array (category, sales, all_cat_sales_volume_month) SELECT category, SUM(sales) AS amount, @all_cat_sales_volume_month FROM orders WHERE datetime BETWEEN DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59') GROUP BY category ORDER BY amount DESC limit 3; -- 上位 3 つの準拠カテゴリのデータをクエリ SELECT category, sales, all_cat_sales_volume_month FROM temp_array;先月の売上目標未達成
SET @all_cat_sales_volume_month := 0.0; SELECT SUM(sales) INTO @all_cat_sales_volume_month FROM orders WHERE datetime BETWEEN DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59'); -- 一時テーブルを作成 CREATE TEMPORARY TABLE IF NOT EXISTS temp_array ( category VARCHAR(255), sales DOUBLE, all_cat_sales_volume_month DOUBLE ); -- 一時テーブルにクエリして書き込む INSERT INTO temp_array (category, sales, all_cat_sales_volume_month) SELECT category, SUM(sales) AS amount, @all_cat_sales_volume_month FROM orders WHERE datetime BETWEEN DATE_FORMAT(CURRENT_DATE - INTERVAL 1 MONTH, '%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH), '%Y-%m-%d 23:59:59') GROUP BY category ORDER BY amount ASC limit 3; -- 下位 3 つの非準拠カテゴリのデータをクエリ SELECT category, sales, all_cat_sales_volume_month FROM temp_array;SQL コードを入力したら、右側のスケジューリング設定をクリックします。プロパティペインで、以下のパラメーターを設定します。
スケジュール時刻:
08:00。リソースグループのスケジューリング:サーバーレスリソースグループを選択します。
依存する先祖ノード:ワークフローは ステップ 1: プッシュワークフローの構築 で作成されているため、上流依存関係が正しいことを確認してください。
Last_Month_Sales_Target_Met ノードでは、上流ノードの出力名は [Compliant] である必要があります。
Last_Month_Sales_Target_Not_Met ノードについては、上流ノードの出力名は [非準拠] である必要があります。
このノードのレスポンスパラメーター: ノードコンテキストのパラメーター で、このノードのレスポンスパラメーター の横にある 代入パラメーターの追加 をクリックして、出力パラメーターを追加します。
アイコンをクリックして Last_Month_Sales_Target_MetとLast_Month_Sales_Target_Not_Metノードを保存します。
ステップ 5:分岐データプッシュノードの設定
2 つのデータプッシュノードを作成する必要があります。各ノードで、ノードコンテキストのパラメーター で このノードの入力パラメーター を設定し、Last_Month_Sales_Target_Met_Data および Last_Month_Sales_Target_Not_Met_Data ブランチ SQL クエリノードからそれぞれ outputs パラメーターを取得します。次に、これらのパラメーターを Body で使用し、それぞれのターゲットにプッシュします。
Push_Top_3_Categories_Target_MetノードとPush_Bottom_3_Categories_Target_Not_Metノードをダブルクリックします。 ノードエディターで、スケジューリング設定 をクリックし、スケジューリング設定 ペインで以下を設定します。パラメータータイプ
値
図解
スケジューリングパラメータ
パラメーター名
curdate
パラメーター値
$[yyyymmddhh:mi:ss]時間プロパティ
スケジューリング周期
日
スケジュール時刻
08:00説明このチュートリアルでは、データが 08:00 に送信先にプッシュされることを保証するために 08:00 を例として使用します。必要に応じて別の時間を設定できます。
再実行プロパティ
成功および失敗した実行後の再実行が許可されます。
リソースプロパティ
リソースグループのスケジューリング
サーバーレスリソースグループを選択します。
説明データプッシュノードを初めて使用する場合、スケジューリングリソースグループをアップグレードするためにチケットを提出する必要があります。

ノードコンテキストのパラメーター
このノードの入力パラメーター
入力パラメーターを追加するには、追加 をクリックします:
パラメーター名:
inputs。値のソース:
Push Top 3 Sales Goal Categoriesノードで、Last Month's Sales Goal Dataノードの出力パラメーターoutputsを選択します。Push Bottom Three Underperforming Categoriesノードで、Last Month's Underperforming Sales Dataノードから出力パラメーターoutputsを選択します。
Push_Top_3_Categories_Target_Metノード
Push_Bottom_3_Categories_Target_Not_Metノード
スケジューリング設定 を設定した後、次のようにデータプッシュコンテンツを設定します。
データプッシュ対象: データプッシュ対象 ドロップダウンリストから、送信先を選択します。送信先がリストにない場合は、リストの下部にある データプッシュオブジェクトの作成 をクリックして作成します。
Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
Teams Webhook を取得する方法については、「Microsoft Teams ワークフローを使用して受信 Webhook を作成する」をご参照ください。
タイトル:
Push_Top_3_Categories_Target_MetおよびPush_Bottom_3_Categories_Target_Not_Met。本文:必要に応じて設定してください。詳細については、「プッシュコンテンツを設定する」をご参照ください。
説明本文では、上流の SQL クエリノードからの入力パラメーターを、返されたフィールド名をプレースホルダーとして使用して参照できます。
Push_Top_3_Categories_Target_Met の例

Push_Bottom_3_Categories_Target_Not_Met の例

パラメーター
説明
タイプ
DingTalk、Lark、WeCom、Microsoft Teams、および メール をサポートしています。
オブジェクト名
ビジネスニーズに基づいてカスタム名を入力します。
Webhook
DingTalk、Lark、WeCom、または Microsoft Teams のチャットボットの Webhook URL、またはメールの SMTP の詳細を、それぞれのプラットフォームから取得します。
説明設定後、
アイコンをクリックして Push_Top_3_Categories_Target_MetとPush_Bottom_3_Categories_Target_Not_Metノードを保存します。
ステップ 6:条件付きプッシュワークフローのテスト
条件付きプッシュワークフローを設定した後、送信してデプロイする前にテストします。
Data_Push_Demoワークフローページをダブルクリックして開きます。Query Last Month's Total Salesノードを選択し、右クリックして「現在のノードとその下流ノードを実行」を選択し、実行が完了するのを待ちます。説明タスクが失敗した場合は、失敗したノードを右クリックしてログを表示を選択すると、ログが表示されます。
スクリプトデータプッシュ
ステップ 1:ワークフローの構築
DataPushDemo ワークフローをダブルクリックしてワークフローキャンバスを開きます。SalesAmountPreWeek、Top3CategoryList、および Top3CategoriesPreWeek ノードを順番に接続して、スクリプトデータプッシュワークフローを作成します。

ステップ 2:SQL クエリノードの設定
SQL クエリノードを設定してテストデータをクエリし、ノードコンテキストのパラメーター を使用して、SQL クエリノードの出力パラメーター outputs を生成できます。これにより、SQL クエリの結果を代入ノードに渡すことができます。
SalesAmountPreWeekノードをダブルクリックしてエディターを開き、次の SQL コードを入力します。-- 前週の売上上位 3 カテゴリをクエリ SELECT category, SUM(sales) AS amount FROM orders WHERE datetime BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 WEEK), '%Y-%m-%d 00:00:00') AND DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 23:59:59') GROUP BY category ORDER BY amount DESC limit 3;SQL コードを入力した後、右側にあるスケジューリング設定をクリックします。プロパティペインで、次のパラメーターを設定します。
スケジュール時刻:
08:00。リソースグループのスケジューリング:サーバーレスリソースグループを選択します。
上流ノード:ワークスペースのルート頂点を使用する を選択します。
このノードのレスポンスパラメーター: ノードコンテキストのパラメーター で、このノードのレスポンスパラメーター の横にある 代入パラメーターの追加 をクリックし、クエリ結果を子孫ノードに渡す出力パラメーターを追加します。

Query last week's sales dataノードで
保存をクリックします。
ステップ 3:代入ノードの設定
代入ノードは、ノードコンテキストのパラメーター にある このノードの入力パラメーター を使用して上流の SQL クエリノードからoutputs パラメーターを受け取り、このデータを処理し、このノードのレスポンスパラメーター の新しい値を生成してデータプッシュノードに渡します。
Top3CategoryList代入ノードをダブルクリックします。ノードエディターで、次の Python コードを入力します。def main(): from datetime import date today = date.today() formatted_date = today.strftime('%Y-%m-%d') msg = 'Stat date: ' + formatted_date + ' \\n\\n ' \ '- 1: ${inputs[0][0]}, sales: ${inputs[0][1]} \\n\\n ' \ '- 2: ${inputs[1][0]}, sales: ${inputs[1][1]} \\n\\n ' \ '- 3: ${inputs[2][0]}, sales: ${inputs[2][1]} \\n\\n ' print(msg) if __name__ == "__main__": import sys main()コードを入力した後、右側にあるスケジューリング設定をクリックします。表示されたペインで、次のパラメーターを設定します。
スケジュール時刻:
08:00。リソースグループのスケジューリング:スケジューリングリソースグループを選択します。
ノードコンテキストのパラメーター。
このノードの入力パラメーター:
パラメーター名:
inputs。値のソース: 上流の
SalesAmountPreWeekノードからoutputsパラメーターを選択します。
このノードのレスポンスパラメーター: システムによって自動的に生成されます。
をクリックして Top 3 Sales in Organization List代入ノードを保存します。
ステップ 4:データプッシュノードの設定
上流の代入ノードから outputs パラメーターを受信するには、ノードコンテキストのパラメーター で このノードの入力パラメーター を設定します。その後、メッセージ本文でこのパラメーターを使用し、送信先にプッシュします。
データプッシュノード
Push Top 3 Categories of Last Weekをダブルクリックし、スケジューリング設定 をクリックし、スケジューリング設定 パネルで、次のように設定を構成します。パラメータータイプ
パラメーター内容
図解
スケジューリングパラメータ
パラメーター名
curdate。
パラメーター値
$[yyyymmddhh:mi:ss]。時間プロパティ
スケジューリング周期
毎日。
スケジュール時刻
08:00。説明このチュートリアルでは、データが 08:00 に送信先にプッシュされることを保証するために 08:00 を例として使用します。必要に応じて別の時間を設定できます。
再実行プロパティ
ノードは成功または失敗した後に再実行できます。
リソースプロパティ
リソースグループのスケジューリング
スケジューリングリソースグループを選択します。
説明データプッシュノードを初めて使用する場合、スケジューリングリソースグループをアップグレードするためにチケットを提出する必要があります。

ノードコンテキストのパラメーター
このノードの入力パラメーター
入力パラメーターを追加するには、追加 をクリックします:
パラメーター名:
inputs。値のソース:上流ノード
Top 3 sales categories last weekから出力パラメーターoutputsを選択します。
スケジューリング設定 を設定した後、次のようにデータプッシュのコンテンツを設定します。
データプッシュ対象:データプッシュ対象 ドロップダウンリストから送信先を選択します。 送信先がリストにない場合は、リストの下部にある データプッシュオブジェクトの作成 をクリックして追加します。
Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
Teams Webhook を取得する方法については、「Microsoft Teams ワークフローを使用して受信 Webhook を作成する」をご参照ください。
タイトル:
先週の売上上位 3 カテゴリー。本文: 必要に応じてメッセージ本文を設定します。詳細については、「プッシュコンテンツを設定する」をご参照ください。
説明本文では、上流の SQL クエリノードからの入力パラメーターを、返されたフィールド名をプレースホルダーとして使用して参照できます。

パラメーター
説明
タイプ
DingTalk、Lark、WeCom、Teams、およびメールをサポートしています。
オブジェクト名
ビジネスニーズに基づいてカスタム名を指定します。
Webhook
DingTalk、Lark、WeCom、または Teams のボットの Webhook URL、およびメールの SMTP サーバーの詳細を、それぞれのプラットフォームから取得します。
説明設定が完了したら、
をクリックして Push Top Three Categories of Last Weekプッシュノードを保存します。
ステップ 5:スクリプトデータプッシュワークフローのテスト
スクリプトデータプッシュワークフローを設定した後、送信してデプロイする前にテストします。
DataPushDemoワークフローをダブルクリックしてワークフローキャンバスを開きます。SalesAmountPreWeekノードを右クリックし、ノードおよび下流の実行 を選択します。プロセスが完了するまで待ちます。説明タスクが失敗した場合は、失敗したノードを右クリックし、ログを表示 を選択してログを確認します。

シンプルデータプッシュ
ステップ 1:プッシュワークフローの構築
Data_Push_Demo_Workflow をダブルクリックします。ワークフローキャンバスには、複数の既存ノードが表示されます。MySQL クエリノード Query_Yesterday_Sales_Total を上流ノードとしてドラッグし、下流のデータプッシュノード Push_Yesterday_Sales_Total に接続します。これにより、次の図に示すようなシンプルなデータプッシュワークフローが作成されます。

ステップ 2:SQL クエリノードの設定
ノードコンテキストのパラメーター を使用して、SQL クエリの結果をデータプッシュノードに渡す outputs パラメーターを生成します。
Query_Yesterday_Sales_Totalノードをダブルクリックし、次の SQL コードを入力します。-- temp_array という名前の一時テーブルを作成 CREATE TEMPORARY TABLE IF NOT EXISTS temp_array ( total_amount DOUBLE ); -- 昨日の総売上を temp_array テーブルに書き込む INSERT INTO temp_array (total_amount) SELECT SUM(sales) FROM orders WHERE datetime BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00') AND DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 23:59:59'); -- temp_array テーブルをクエリ select total_amount FROM temp_array;SQL コードを入力したら、右側のスケジューリング設定をクリックします。プロパティペインで、次のパラメーターを設定します。
スケジュール時刻:
08:00。リソースグループのスケジューリング: 既存の Serverless リソースグループを選択します。
上流ノード:ワークスペースのルート頂点を使用する を選択します。
このノードのレスポンスパラメーター: ノードコンテキストのパラメーター セクションで、このノードのレスポンスパラメーター の横にある 代入パラメーターの追加 をクリックして出力パラメーターを追加します。 すると、下流ノードがその値にアクセスできるようになります。

保存をクリックして Query_Yesterday_Sales_Totalノードを保存します。
ステップ 3:データプッシュノードの設定
上流の SQL クエリノードから outputs パラメーターを受け取るように、ノードコンテキストのパラメーター セクションで このノードの入力パラメーター を設定します。その後、このパラメーターをメッセージ本文で使用して、送信先にプッシュできます。
Push_Yesterday_Sales_Totalデータプッシュノードをダブルクリックします。 ノードエディターで、右側の スケジューリング設定 をクリックします。 スケジューリング設定 ペインで、次のパラメーターを設定します。パラメータータイプ
詳細
図解
スケジューリングパラメータ
パラメーター名
curdate
パラメーター値
$[yyyymmddhh:mi:ss]時間プロパティ
スケジューリング周期
毎日
スケジュール時刻
08:00説明このチュートリアルでは、データが 08:00 に送信先にプッシュされることを保証するために 08:00 を例として使用します。必要に応じて別の時間を設定できます。
再実行プロパティ
ノードは成功または失敗した実行後に再実行できます。
リソースプロパティ
リソースグループのスケジューリング
既存のスケジューリングリソースグループを選択します。
説明データプッシュノードを初めて使用する場合、スケジューリングリソースグループをアップグレードするためにチケットを提出する必要があります。

ノードコンテキストのパラメーター
このノードの入力パラメーター
入力パラメーターを追加するには、追加 をクリックします:
パラメーター名:
inputs。値のソース:上流の
Query_Yesterday_Sales_Totalノードからoutputsパラメーターを選択します。
スケジューリング設定 を設定した後、データプッシュコンテンツを次のように設定します。
データプッシュ対象: データプッシュ対象 ドロップダウンリストから送信先を選択します。 送信先がリストに表示されていない場合は、データプッシュオブジェクトの作成 をクリックします。
パラメーター
説明
タイプ
サポートされているタイプには、DingTalk、Lark、WeCom、Teams、およびメールが含まれます。
オブジェクト名
ビジネスニーズに基づいてカスタム名を入力します。
Webhook
DingTalk、Lark、または WeCom のボット、または Microsoft Teams ワークフローの Webhook URL を、それぞれのプラットフォームから取得します。メールの場合は、SMTP の詳細を取得します。
説明Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
Teams Webhook を取得する方法については、「Microsoft Teams ワークフローを使用して受信 Webhook を作成する」をご参照ください。
タイトル:
Push_Yesterday_Sales_Total.本文: 必要に応じてメッセージ本文を設定します。詳細については、「プッシュコンテンツを設定する」をご参照ください。
説明本文では、上流の SQL クエリノードからの入力パラメーターを、返されたフィールド名をプレースホルダーとして使用して参照できます。

保存をクリックして Push_Yesterday_Sales_Totalデータプッシュノードを保存します。
ステップ 4:シンプルプッシュワークフローのテスト
シンプルなデータプッシュワークフローを設定した後、デプロイのために送信する前にテストします。
Data_Push_Demo_Workflowをダブルクリックしてワークフローキャンバスを開きます。Query_Yesterday_Sales_Totalノードを選択して右クリックし、[現在のノードとその下流ノードを実行] を選択します。実行が完了するまで待ちます。説明タスクが失敗した場合は、失敗したノードを右クリックし、ログを表示を選択すると、ログが表示されます。

結合データプッシュ
ステップ 1:ワークフローの構築
Data Push Demo Flow ワークフローキャンバスをダブルクリックして開きます。キャンバス上で、上流ノード Query Yesterday's Total Sales と Query Yesterday's Sales Growth を子孫ノード Push Yesterday's Total Sales and Growth にドラッグして接続し、次の図に示すような結合データプッシュワークフローを作成します。
Query yesterday's total sales ノードは、シンプルデータプッシュワークフローで使用したものと同じものにすることができます。

ステップ 2:SQL クエリノードの設定
SQL クエリノードを設定してテストデータをクエリし、ノードコンテキストのパラメーター を使用して outputs 出力パラメーターを生成し、SQL クエリの結果をデータプッシュノードに渡すことができます。
Query Yesterday's Sales Growthノードをクリックし、次のクエリ SQL コードを記述します。-- 一昨日のデータを格納するための一時テーブル temp_array1 を作成 CREATE TEMPORARY TABLE IF NOT EXISTS temp_array1 ( category VARCHAR(255), sales DOUBLE ); -- 一昨日のデータを temp_array1 に書き込む INSERT INTO temp_array1 (category, sales) SELECT category, SUM(sales) FROM orders WHERE datetime BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 DAY), '%Y-%m-%d 00:00:00') AND DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 DAY), '%Y-%m-%d 23:59:59') GROUP BY category; -- 昨日のデータを格納するための一時テーブル temp_array2 を作成 CREATE TEMPORARY TABLE IF NOT EXISTS temp_array2 ( category VARCHAR(255), sales DOUBLE ); -- 昨日のデータを temp_array2 に書き込む INSERT INTO temp_array2 (category, sales) SELECT category, SUM(sales) FROM orders WHERE datetime BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00') AND DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 23:59:59') GROUP BY category; -- 昨日の売上成長を格納するための結果一時テーブルを作成 CREATE TEMPORARY TABLE IF NOT EXISTS result ( category VARCHAR(255), diff DOUBLE ); -- 成長データを結果テーブルに書き込む INSERT INTO result (category, diff) SELECT temp_array2.category AS category, temp_array2.sales - temp_array1.sales AS diff FROM temp_array1 LEFT JOIN temp_array2 ON temp_array1.category = temp_array2.category; -- 結果一時テーブルから成長データをクエリ SELECT category, diff FROM result;SQL コードを入力したら、右側のスケジューリング設定をクリックします。プロパティペインで、次のパラメーターを設定します。
スケジュール時刻:
08:00。リソースグループのスケジューリング:既存のサーバーレスリソースグループを選択します。
上流ノード: ワークスペースのルート頂点を使用する を選択します。
このノードのレスポンスパラメーター: ノードコンテキストのパラメーター セクションで、このノードのレスポンスパラメーター の横にある 代入パラメーターの追加 をクリックし、子孫ノードの入力パラメーターの値として出力パラメーターを追加します。

保存をクリックして Query Yesterday's Sales Growthノードを保存します。
ステップ 3:データプッシュノードの設定
ノードコンテキストのパラメーター の このノードの入力パラメーター を使用して、上流の Query Yesterday's Total Sales ノードと Query Yesterday's Sales Growth ノードから outputs 出力パラメーターを受信することで、Body でパラメーターを使用してターゲットにプッシュできるようになります。
Push Yesterday's Total Sales and Growthという名前のデータプッシュノードをダブルクリックします。ノードページが開いたら、スケジューリング設定 をクリックし、スケジューリング設定 パネルで以下の設定項目を設定します。パラメータータイプ
説明
例
スケジューリングパラメータ
パラメーター名
curdate
パラメーター値
$[yyyymmddhh:mi:ss]時間プロパティ
スケジューリング周期
日
スケジュール時刻
08:00説明このチュートリアルでは、データが 08:00 に送信先にプッシュされることを保証するために 08:00 を例として使用します。必要に応じて別の時間を設定できます。
再実行プロパティ
ノードは、前回の実行が成功したか失敗したかに関わらず再実行できます。
リソースプロパティ
リソースグループのスケジューリング
既存のリソースグループを選択します。
説明データプッシュノードを初めて使用する場合、スケジューリングリソースグループをアップグレードするためにチケットを提出する必要があります。

ノードコンテキストのパラメーター
このノードの入力パラメーター
追加 をクリックして、このノードの入力パラメーターを追加します:
パラメーター 1:
パラメーター名:
inputs1。値のソース: 上流ノード
昨日の総売上クエリの出力パラメーターoutputsを選択します。
パラメーター 2:
パラメーター名:
inputs2。値のソース: 上流ノード
昨日の売上成長のクエリから出力パラメーターoutputsを選択します。

スケジューリング設定 を設定した後、次のようにデータプッシュコンテンツを設定します。
データプッシュ対象: データプッシュ対象 ドロップダウンリストから送信先を選択します。目的の送信先がない場合は、ドロップダウンリストの右下隅にある データプッシュオブジェクトの作成 をクリックして新しい送信先を作成します。
Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
Teams Webhook を取得する方法については、「Microsoft Teams ワークフローを使用して受信 Webhook を作成する」をご参照ください。
タイトル:
昨日の総売上高と成長率のプッシュ本文: 必要に応じて設定します。詳細については、「プッシュコンテンツを設定する」をご参照ください。
説明本文では、上流の SQL クエリノードからの入力パラメーターを、返されたフィールド名をプレースホルダーとして使用して参照できます。
パラメーター
説明
タイプ
サポートされているタイプには、DingTalk、Lark、WeCom、Microsoft Teams、およびメールが含まれます。
オブジェクト名
ビジネス要件に基づいてカスタム名を指定します。
Webhook
DingTalk、Lark、WeCom、または Microsoft Teams のチャットボットの Webhook URL、またはメールの SMTP の詳細を、それぞれのプラットフォームから取得します。
説明設定が完了したら、
保存をクリックして Push Yesterday's Total Sales and Growthプッシュノードを保存します。
ステップ 4:結合プッシュワークフローのテスト
結合プッシュワークフローをテストする前に、シンプルプッシュワークフローの設定を完了する必要があります。この設定は、後続のデプロイメントの前提条件です。
Data Push Demo Flowをダブルクリックして、ビジネスプロセス図ページを開きます。Push Yesterday's Total Sales and Growthノードを選択し、右クリックして このノードまで実行 を選択し、実行が完了するまで待ちます。説明タスクが失敗した場合、失敗したノードを右クリックし、ログを表示 を選択してログを表示します。

MaxCompute からのデータプッシュ
ステップ 1:データプッシュフローの構築
Data Push Demo Flow をダブルクリックします。ワークフローキャンバスで、作成されたノードを表示できます。オフライン同期 ノードをドラッグして、代入ノード の上流ノードとして配置します。Sync MySQL data to ODPS、Query ODPS data、および Push ODPS data の各ノードを順番に接続します。
ステップ 2:バッチ同期ノードの設定
Synchronize MySQL data to ODPS ノードを設定して、データの準備フェーズで MySQL に書き込まれたテストデータを ODPS データソースに同期し、後続の使用に備えます。
Synchronize data from MySQL to ODPSノードをダブルクリックして、バッチ同期ノードを設定します。パラメーター
設定
例
ソース
データソース
MySQL

データソース名
作成した MySQL データソースを選択します。
マイリソースグループ
サーバーレスリソースグループを選択します。
宛先
データ宛先
MaxCompute (ODPS)
データソース名
ワークスペースにバインドされている MaxCompute データソースを選択します。
設定を完了すると、システムはデータソースとリソースグループ間の接続性を自動的にテストします。テストが成功したら、「次へ」をクリックしてソースと送信先の詳細を設定します。
ソースと送信先を設定します。
パラメーター
設定
例
データソース
データソース
デフォルト設定を維持します:
MySQL。
作成した MySQL データソースを選択します。

テーブル
ordersテーブルを選択します。データフィルタリング
必要に応じて設定できます。このチュートリアルでは、空白のままにします。
シャードキー
ソーステーブルの列を分割キーとして使用できます。プライマリキーまたはインデックス付きの列を使用することを推奨します。
データプレビュー
MySQL データソースから取得したデータをプレビューして、期待どおりであることを確認します。
データ宛先
データソース
デフォルト設定を維持します:
MaxCompute (ODPS)。
ワークスペースにバインドされている MaxCompute データソースを選択します。

Tunnel リソースグループ
これはトンネルクォータを指定します。デフォルトは「パブリック転送リソース」で、MaxCompute の無料クォータです。
テーブル
[送信先テーブルスキーマの生成] をクリックして、送信先テーブルを作成します。
パーティション情報
毎日増分データをロードするには、日付ベースのパーティションを設定します。たとえば、
ptパーティションを${bizdate}に設定します。書き込みモード
消去 書き込み前の既存データ (挿入上書き)
ソースと送信先を設定すると、フィールドを同名マッピングすることができます。

チャネル制御を設定します。
タスクの希望最大同時実行数: リソースの制限またはタスクの性質により、ランタイムでの実際の同時実行数はこの値以下になる場合があります。実際の同時実行数に基づいて課金されます。このチュートリアルでは、同時実行数 2 で十分です。
同期速度: 速度制限を使用すると、ソースまたは送信先の読み取り/書き込みロードを保護できます。速度制限を設定しない場合、システムは現在のハードウェアがサポートする最大の転送パフォーマンスを提供します。このチュートリアルでは、速度制限は設定しません。
ダーティデータポリシー: ダーティデータは許容されません。
分散処理能力: この機能はデフォルトで無効になっています。有効にするには、8 以上の同時実行数が必要です。

スケジューリングプロパティを設定します。
統合タスクを設定した後、ページの右側にある **[プロパティ]** をクリックします。**[プロパティ]** パネルで、次のパラメーターを設定します。
スケジューリングパラメータ:
パラメーター名:
bizdateパラメーター値:
$[yyyymmdd-1]
スケジュール時刻:
08:00再実行プロパティ: ドロップダウンリストから、「実行ステータスにかかわらず許可」を選択します。
リソースグループのスケジューリング: 作成したスケジューリングリソースグループを選択します。
スケジュール依存: バッチ同期タスクの上流依存関係として、ワークスペースのルートノードを選択します。
保存をクリックして Synchronize MySQL data to ODPSバッチ同期ノードを保存します。
ステップ 3:代入ノードの設定
ODPS データソースでは、ノードコンテキストのパラメーター を使用して ODPS SQL ノードでデータをクエリし、そのデータをデータプッシュノードに出力することはサポートされていません。代入ノードを使用して ODPS データをクエリし、その後 ノードコンテキストのパラメーター を使用してデータをデータプッシュノードに出力する必要があります。
Query ODPS dataノードをダブルクリックして、その設定ページを開きます。エディター上部の [言語] ドロップダウンリストから、**[ODPS SQL]** を選択します。
ODPS SQL コードを入力します。
-- 各パーティション (pt) 内での売上の降順を計算するためのランキング付きサブクエリを作成します。 -- DENSE_RANK() 関数は、パーティション内の各行に一意のランクを割り当てます。 -- 売上値が等しい行は同じランクを受け取り、ランク番号はスキップされません。 -- -- サブクエリの詳細: -- 1. 'orders' テーブルから必要な列を選択します:order_id、category、sales、datetime、および pt (業務日付)。 -- 2. DENSE_RANK() OVER (PARTITION BY pt ORDER BY sales DESC) を使用します: -- PARTITION BY pt は、pt 列の各一意の値に対してランキングが個別に行われることを指定します。 -- ORDER BY sales DESC は、各パーティション内の行を売上の降順でソートします。 -- 'rank' 列には、各行のパーティション内での売上ランクが格納されます。 -- -- メインクエリの詳細: -- メインクエリは、ランクが 3 以下のレコードをランク付けされたサブクエリから選択します。 -- これにより、各業務日付について、売上上位 3 つの注文のみが取得されます。 SELECT order_id, -- 注文 ID を選択 category, -- 製品カテゴリを選択 sales, -- 売上金額を選択 datetime, -- 注文時間を選択 pt -- 業務日付を選択 FROM ( SELECT order_id, category, sales, datetime, pt, DENSE_RANK() OVER (PARTITION BY pt ORDER BY sales DESC) AS rank -- 各 pt パーティション内で売上ランクを計算 FROM orders WHERE pt = '${bizdate}' -- 指定された業務日付のレコードをフィルタリング ) AS ranked_orders WHERE rank <= 3 -- 各 pt パーティションの売上上位 3 レコードのみを保持
SQL コードを入力した後、右側の スケジューリング設定 をクリックします。プロパティ ペインで、次のパラメーターを設定します。
スケジュール時刻:
08:00。リソースグループのスケジューリング: 作成したサーバーレスリソースグループを選択します。
親ノード: 親ノードが
MySQL to ODPSバッチ同期ノードであるかどうかを確認します。ノードコンテキストのパラメーター: 出力パラメーターの後に追加 をクリックして、子孫ノードの入力パラメーターの値として出力パラメーターを追加します。

保存をクリックして ODPS data queryノードを保存します。
ステップ 4:データプッシュノードの設定
ノードコンテキストのパラメーター の このノードの入力パラメーター を設定して、上流の代入ノードから outputs パラメーターを取得し、これらのパラメーターをボディで使用してターゲットにプッシュします。
ODPS Data Pushという名前のデータプッシュノードをダブルクリックし、スケジューリング設定 をクリックして、スケジューリング設定 パネルで以下の設定を構成します。パラメータータイプ
設定
例
スケジューリングパラメータ
パラメーター名
curdate
パラメーター値
$[yyyymmddhh:mi:ss]時間プロパティ
スケジューリング周期
DD
スケジュール時刻
08:00説明このチュートリアルでは、データが 08:00 に送信先にプッシュされることを保証するために 08:00 を例として使用します。必要に応じて別の時間を設定できます。
再実行プロパティ
実行ステータスに関わらず許可。
リソースプロパティ
リソースグループのスケジューリング
データプッシュ機能のリリース日以降に作成されたリソースグループを選択します。リソースグループがこの日より前に作成された場合は、チケットを提出してアップグレードしてください。
説明データプッシュノード機能は 2024 年 6 月 28 日にリリースされました。DataWorks のその他のリリースノートについては、「リリース履歴」をご参照ください。

ノードコンテキストのパラメーター
このノードの入力パラメーター
このノードに入力パラメーターを追加するには、追加をクリックします:
パラメーター名:
inputs値のソース: 上流の
ODPS Data Queryノードから outputs 出力パラメーターを選択します。

スケジューリング設定 を設定した後、次のようにデータプッシュの内容を設定します。
データプッシュ対象:データプッシュ対象 ドロップダウンリストから必須の送信先を選択します。送信先が存在しない場合は、ドロップダウンリストの右下にあるデータプッシュオブジェクトの作成をクリックして新しい送信先を作成できます。
Lark ボットの Webhook を取得する方法については、「Lark Webhook トリガーの設定」をご参照ください。
Teams Webhook を取得する方法については、「Microsoft Teams ワークフローを使用して受信 Webhook を作成する」をご参照ください。
タイトル:
ODPS Data Push本文:必要に応じて設定します。詳細については、「プッシュコンテンツの設定」をご参照ください。
説明メッセージ本文では、上流の代入ノードのクエリ結果のフィールド名を直接プレースホルダーとして使用できます。
パラメーター
説明
タイプ
サポートされている送信先には、DingTalk、Lark、WeCom、Microsoft Teams、およびメールが含まれます。
オブジェクト名
ビジネス要件に基づいてカスタム名を指定します。
Webhook
DingTalk、Lark、WeCom、または Microsoft Teams のボットの Webhook URL、またはメールの SMTP の詳細を、それぞれのプラットフォームから取得する必要があります。
説明設定が完了したら、
保存アイコンをクリックしてデータプッシュノードを保存します。
ステップ 5:MaxCompute データプッシュフローのテスト
データプッシュフローのすべてのノードを設定した後、コミットしてデプロイする前にフローをテストする必要があります。
Data_Push_Demoワークフローページをダブルクリックして開きます。Sync Data from MySQL to ODPSノードを選択し、右クリックして「現在のノードとその下流ノードを実行」を選択し、実行が完了するのを待ちます。説明タスクが失敗した場合、失敗したノードを右クリックしてログを表示を選択し、ログを表示します。

送信と公開
データプッシュフローを設定した後、Data Push Demo Example ビジネスプロセス図をダブルクリックして、すべてのデータプッシュフローが正しく実行されることを確認します。テストが成功したら、フローを送信して公開します。
データプッシュフローの編集ページで、
アイコンをクリックしてビジネスプロセスを実行します。データプッシュフローのすべてのノードに
アイコンが表示されたら、
アイコンをクリックしてフローを送信します。コミット ダイアログボックスで、送信するノードを選択し、入出力の不一致によるアラートを無視する チェックボックスにチェックを入れます。
コミット をクリックします。
フローを送信した後、公開ページでそのノードを公開できます。詳細については、「タスクの公開」をご参照ください。
次のステップ
データプッシュは、設定されたスケジューリング周期で実行されます。オペレーションセンターから、公開されたデータプッシュのタスクノードを管理できます。詳細については、「定期タスクの基本操作」をご参照ください。
アイコンにポインターを合わせ、