1. 概述
1.1 應用場景
公司每月定期對員工銷量總和進行計算,若銷量總和大於 500,則篩選出銷售量大於平均值的員工資訊,寫入優秀員工資訊表,進行表揚嘉獎。
若銷量總和小於 500 則篩選出銷售量小於平均值的員工資訊,寫入需要進步員工資訊表,區域負責人和對應同學進行溝通,輔助成長。
1.2 實現思路
使用參數指派節點獲取員工銷量總和,並傳遞給參數。
使用條件分支節點判斷參數值,若參數值大於等於 500,控制執行 A 下游節點,若參數值小於 500,控制執行 B 下游節點。
FineDataLink 中的資料處理程式,詳情參見:https://demo.finedatalink.com/ 「使用條件分支獲取優秀員工資訊-」。
2. 範例
2.1 建立資料庫表
建立一個定時任務,將一個「SQL腳本」節點拖到設計介面,並重新命名為「建立員工銷量表」。
SQL 語句的作用:資料庫中建立一張員工銷量統計表 slaes,主鍵是 id。
SQL 建表語句如下;
drop TABLE sales;
CREATE TABLE IF NOT EXISTS `sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`sales` varchar(255) DEFAULT NULL,
`city` varchar(255) DEFAULT NULL,
`prov` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
ALTER TABLE sales AUTO_INCREMENT=1;
若上面 SQL 語句報錯,可嘗試下面語句:
DROP TABLE IF EXISTS sales;
CREATE TABLE IF NOT EXISTS sales (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) DEFAULT NULL,
sales VARCHAR(255) DEFAULT NULL,
city VARCHAR(255) DEFAULT NULL,
prov VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2.2 表中插入資料
再將一個「SQL腳本」節點拖到設計介面,並重新命名為「為員工銷量表插入資料」,跟上游「建立員工銷量表」節點連結起來。
SQL 語句的作用:在剛剛建立的這張表裏插入一些示範用的資料。
表結構如下圖所示:
SQL 語句如下:
INSERT INTO `sales` VALUES (null, '張飛雲', 45,'蘇州','江蘇');
INSERT INTO `sales` VALUES (null, '李亮', 50,'無錫','江蘇');
INSERT INTO `sales` VALUES (null, '王大林', 70,'常州','江蘇');
INSERT INTO `sales` VALUES (null, '劉再清', 30,'無錫','江蘇');
INSERT INTO `sales` VALUES (null, '曹子雲', 80,'蘇州','江蘇');
INSERT INTO `sales` VALUES (null, '張強', 60,'常州','江蘇');
INSERT INTO `sales` VALUES (null, '王小明', 40,'無錫','江蘇');
INSERT INTO `sales` VALUES (null, '陳俊', 100,'常州','江蘇');
INSERT INTO `sales` VALUES (null, '週旭', 50,'南京','江蘇');
INSERT INTO `sales` VALUES (null, '柳一', 75,'南京','江蘇');
2.3 獲取總銷售量
1)將一個「參數指派」節點拖到設計介面,並重新命名為「獲取所有員工的銷量總和」,跟上游「為員工銷量表插入資料」節點連結起來。
設定節點的資料來源,SQL 語句的作用:對 sales 表中所有的銷售量進行求和得到總銷售量。
select
sum(sales) as sales
from
sales
2)將獲取到的總銷售量匯出為參數,以便後續使用條件分支判斷是否將員工資訊寫入指定資料,如下圖所示:
2.4 優秀員工入庫
1)將一個「資料同步」節點拖到設計介面,並重新命名為「銷量大於平均值的員工資訊入庫」。
設定節點的資料來源,SQL 語句的作用:篩選出 sales 表中銷售量大於平均值的員工資料。
SQL 語句如下:
SELECT
sales.*
FROM
( SELECT prov, avg( sales ) AS avg_sales FROM sales GROUP BY prov ) avg
LEFT JOIN sales ON avg.prov = sales.prov
WHERE
sales.sales >= avg.avg_sales
2)設定資料去向將銷售量大於平均值的員工資料儲存到 good_user 表中。欄位映射用預設即可無需改動。
2.5 待進步員工入庫
1)將一個「資料同步」節點拖到設計介面,並重新命名為「銷量小於平均值的員工資訊入庫」。
設定節點的資料來源,SQL 語句的作用:篩選出 sales 表中銷售量小於平均值的員工資料。
SQL 語句如下:
SELECT
sales.*
FROM
( SELECT prov, avg( sales ) AS avg_sales FROM sales GROUP BY prov ) avg
LEFT JOIN sales ON avg.prov = sales.prov
WHERE
sales.sales < avg.avg_sales
2)將銷售量小於平均值的員工資料儲存到 remind_user 表中。欄位映射用預設即可無需改動。
2.6 設定執行條件判斷
1)將一個「條件分支」節點拖到設計介面,並重新命名為「判斷銷量總和是否大於500」。
連結上游「獲取所有員工的銷量總和」節點,再連結下游「銷量大於平均值的員工資訊入庫」和「銷量小於平均值的員工資訊入庫」節點。
此時點選條件分支節點,可以看到流轉到下游的兩個分支,可以給這兩個分支設定判斷條件,決定任務運作時執行下游哪個節點。
2)對兩個分支的條件進行設定,如下圖所示:
2.7 運作任務
因為銷量總和 sales 參數值是 600,所以執行「銷量大於平均值的員工資訊入庫」分支,而「銷量小於平均值的員工資訊入庫」分支被跨越。
在「銷量大於平均值的員工資訊入庫」資料表 good_user 中,可以查看到寫入的資料,如下圖所示: