全部產品
Search
文件中心

Data Management:任務編排之電商打標

更新時間:Jun 30, 2024

Data Management任務編排主要用於編排各類任務並進行調度執行。您可以通過建立一個或多個任務節點群組成的任務流,實現複雜的任務調度,提高資料開發效率。

背景資訊

電商做大促活動時,常會推出優惠活動,例如使用者累計消費達到一定額度,發放對應額度的優惠券。本文使用任務編排中的單一實例SQL賦值節點條件分支節點和單一實例SQL節點,在資料庫層面實現該需求。

前提條件

您需要準備一個資料庫,且擁有該資料庫的變更許可權。如需申請許可權,請參見存取控制許可權概述

環境準備

  1. 登入Data Management 5.0
  2. 單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > SQL視窗 > SQL視窗

    說明

    若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇SQL視窗 > SQL視窗

  3. 請先選擇資料庫對話方塊中,搜尋並選擇資料庫,單擊確認

  4. 建立配置表、業務表、消費券發放表。

    1. 建立表名為activity_setting的配置表。將下列建表SQL語句粘貼到SQL書寫區域,單擊執行

      建表SQL語句:

      CREATE TABLE `activity_setting` (
          `has_promotion` tinyint(1) NOT NULL COMMENT '是否有優惠活動',
          `consumption_limit` int(11) NOT NULL COMMENT '消費額限制',
          `quota` int(11) NOT NULL COMMENT '發放優惠券額度',
          PRIMARY KEY (`has_promotion`)
      ) ENGINE=InnoDB
      DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
      ROW_FORMAT=COMPACT
      AVG_ROW_LENGTH=16384;
    2. 建立表名為consumption_records的業務表。將下列建表SQL語句粘貼到SQL書寫區域,單擊執行

      建表SQL語句:

      CREATE TABLE `consumption_records` (
          `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '流水號',
          `time` datetime NOT NULL COMMENT '消費時間',
          `count` int(11) NOT NULL COMMENT '消費額',
          `user_id` bigint(20) NOT NULL COMMENT '使用者id',
          PRIMARY KEY (`id`)
      ) ENGINE=InnoDB
      DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
      COMMENT='消費記錄表'
      AUTO_INCREMENT=8001
      ROW_FORMAT=COMPACT
      AVG_ROW_LENGTH=54;
    3. 建立表名為voucher_send_list的優惠券發放表。將下列建表SQL語句粘貼到SQL書寫區域,單擊執行

      建表SQL語句:

      CREATE TABLE `voucher_send_list` (
          `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '流水號',
          `user_id` int(11) NULL COMMENT '使用者id',
          `consumption_sum` int(11) NULL COMMENT '消費額',
          `quota` int(11) NULL COMMENT '優惠券數額',
          PRIMARY KEY (`Id`)
      ) ENGINE=InnoDB
      DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
      AUTO_INCREMENT=1
      ROW_FORMAT=COMPACT
      AVG_ROW_LENGTH=0;
  5. 在配置表中插入資料。將下列SQL語句粘貼到SQL地區,單擊執行

    新增資料SQL語句:

    INSERT INTO activity_setting( has_promotion, consumption_limit, quota)
    VALUES('1','100','30');
  6. 業務表中插入資料。使用測試資料構建功能產生資料,具體請參見測試資料構建

    構建配置表consumption_records的資料,配置如下:

    資料構建

操作步驟

  1. 建立配置表、業務表和消費券發放表,並寫入資料。具體操作請參見環境準備

  2. 新增任務流。

    1. 登入Data Management 5.0

    2. 在頂部功能表列中,選擇整合與開發(DTS) > 資料開發 > 任務編排

    3. 單擊新增任務流

    4. 新建任務流對話方塊中,輸入任務流名稱描述,單擊確認

  3. 編排任務節點。

    1. 在左側任務類型列表中,分別拖拽單一實例SQL賦值條件分支單一實例SQL節點到畫布空白地區。

    2. 串連節點形成任務流。

      將滑鼠放在單一實例SQL賦值節點上,單擊單一實例SQL賦值節點右側出現的空心圓點並拉出連接線,串連至條件分支節點上。

      將滑鼠放在條件分支節點上,單擊條件分支節點右側出現的空心圓點並拉出連接線,串連至單一實例SQL節點上。

    image.png

  4. 配置任務節點。

    1. 選中單一實例SQL賦值,配置單一實例SQL賦值節點。更多資訊,請參見配置單一實例SQL賦值

      1. 選擇目標資料庫。

      2. 在SQL地區輸入如下SQL語句。

        select * from activity_setting limit 1
      3. 在頁面右側的變數設定地區,增加三個輸出變數:Quota(發放紅包額度)、HasPromotion(是否有優惠活動)、ConsumptionLimit(消費額度限制)。

        image.png

    2. 選中條件分支,配置條件分支節點。具體操作,請參見配置條件分支

      配置條件運算式如下:1 條件運算式

    3. 選中單一實例SQL,配置單一實例SQL節點。

      輸入SQL語句如下:

      INSERT INTO `voucher_send_list`(`user_id`,`consumption_sum`,`quota`)
      SELECT * FROM
      (SELECT `user_id`, sum(count) AS consumption_sum,${Quota} FROM `consumption_records`
       WHERE `time` > '${bizdate}'  GROUP BY `user_id`) `consumption_records`
      where `consumption_sum`>${ConsumptionLimit}
  5. 單擊畫布左上方的試運行按鈕,試運行任務流。

    您可以在SQL視窗中,查看錶voucher_send_list中的資料,資料已成功插入優惠券發放表中。1 優惠結果

  6. 可選:配置周期調度。

    1. 在編輯任務流頁面,單擊頁面下方的任務流資訊頁簽。

    2. 調度配置地區,開啟開啟調度開關,配置調度。具體配置,請參見調度周期配置表

  7. 發布任務流。任務流發布後,此任務流會根據設定的調度周期自動執行。

    1. 單擊畫布左上方的發布

    2. 發布對話方塊中輸入備忘資訊,並單擊確認,發布任務流。