570
iPhone_iPad_Mac_手機_平板_蘋果apple
配置sql任務產出特征表__基礎示例—完整數據開發_場景教程_大數據開發套件-阿裏雲
根據分析,產出特征表還需要兩個中間表,且每個表產出都以ODPS SQL即可完成。本示例為了更形象的說明工作流配置,我們一個ODPS SQL節點產出一個表。所以需要創建3個ODPS SQL節點。具體操作如下:
步驟1:工作流(tmall_ub_features_demo)設計器的節點組件中向畫布拖拽3個ODPS SQL節點組件,進行創建。
■ 節點名稱分別為:b_cvr_demo、ub_action_demo、ub_features_demo。
■ 描述:對應上麵的節點名稱分別為:產出品牌轉化率表、產出用戶偏好表、產出用戶-品牌所有特征表。
此時看到工作流設計器上有4個節點1個同步任務,3個ODPS SQL任務如下圖:
步驟2:配置節點依賴。根據前麵的數據分析,中間表數據來自同步任務產出的源表,最終特征表數據來自兩個中間表,因此,節點的依賴關係如下圖:
步驟3:編輯ODPS SQL節點代碼,與參數配置(內置調度時間參數說明請看章節數據開發手冊 > 係統調度參數)。
分別雙擊SQL節點進入代碼編輯頁麵進行代碼編輯,代碼如下:
1)節點b_cvr_demo代碼與參數配置
--產出品牌轉化率表,前3個月品牌的購買用戶數/點擊數
INSERT OVERWRITE TABLE b_cvr_demo PARTITION (dt=${bdp.system.bizdate})
SELECT brand_id
, CASE
WHEN click_cnt > 0 THEN buy_cnt / click_cnt
ELSE 0
END AS cvr
FROM (
SELECT brand_id
, COUNT(DISTINCT CASE
WHEN type = '1' THEN user_id
ELSE NULL
END) AS buy_cnt
, COUNT(DISTINCT CASE
WHEN type = '0' THEN user_id
ELSE NULL
END) AS click_cnt
FROM s_user_brand_demo
WHERE dt >= ${before3mont}
GROUP BY brand_id
) t1;
產出表分區表達式與前麵數據同步任務分區表達式一致,每次運行讀源表分區為前三個月分區,源表分區過濾條件 dt>=${before3mont}
參數配置如下圖:
${bdp.system.bizdate}變量在調度的時候會自動替換成業務日期,所以不需要賦值;
${before3mont}自定義變量需要在此賦值,因為是取前3個月的數據,所以可以去當前節點實例定時時間減3個月即$[add_months(YYYYMMDD,-3)]。
2)節點ub_action_demo代碼與參數配置
--產出用戶偏好表,這裏統計用戶最近7天和最近3天的行為次數
INSERT OVERWRITE TABLE ub_action_demo PARTITION (dt=${bdp.system.bizdate})
SELECT user_id
, brand_id
, SUM(CASE
WHEN type = '1' THEN 1
ELSE 0
END) AS buy_cnt
, SUM(CASE
WHEN type = '0'
AND dt > '${before7days}' THEN 1
ELSE 0
END) AS click_d7
, SUM(CASE
WHEN type = '2'
AND dt > '${before7days}' THEN 1
ELSE 0
END) AS collect_d7
, SUM(CASE
WHEN type = '3'
AND dt > '${before7days}' THEN 1
ELSE 0
END) AS shopping_cart_d7
, SUM(CASE
WHEN type = '0'
AND dt > '${before3days}' THEN 1
ELSE 0
END) AS click_d3
, SUM(CASE
WHEN type = '2'
AND dt > '${before3days}' THEN 1
ELSE 0
END) AS collect_d3
, SUM(CASE
WHEN type = '3'
AND dt > '${before3days}' THEN 1
ELSE 0
END) AS shopping_cart_d3
FROM s_user_brand_demo
WHERE dt >= ${before7days}
and dt <= ${bdp.system.bizdate}
GROUP BY user_id,
brand_id;
參數配置如下圖:
${bdp.system.bizdate}變量在調度的時候會自動替換成業務日期,所以不需要賦值;
${before7days}和${before3days}需要的是業務日期的前7天和前3天,所以可以用調度時間參數$[yyyymmdd-8]和$[yyyymmdd-4],即當前節點實例定時時間年月日減8天/減4天。
3)節點ub_features_demo代碼與參數配置
INSERT OVERWRITE TABLE ub_features_demo PARTITION (dt=${bdp.system.bizdate})
SELECT t1.user_id
, t1.brand_id
, t1.buy_cnt
, t1.click_d7
, t1.collect_d7
, t1.shopping_cart_d7
, t1.click_d3
, t1.collect_d3
, t1.shopping_cart_d3
, t2.cvr
FROM ub_action_demo t1
LEFT OUTER JOIN b_cvr_demo t2
ON t1.brand_id = t2.brand_id
AND t1.dt = ${bdp.system.bizdate}
AND t2.dt = ${bdp.system.bizdate};
${bdp.system.bizdate}變量在調度的時候會自動替換成業務日期,所以不需要賦值,代碼中沒用到其他自定義變量名,所以不需要配置參數。
步驟4:返回工作流設置器頁麵,點擊保存。
到此,本示例的工作流配置算是已經完成,但是要想讓工作流根據配置每天自動調度,還需要把工作流提交到調度係統,即在工作流設計頁麵(整體視圖頁麵)點擊提交,在變更節點列表中選擇所有節點並點擊確定提交,提交成功則成功的把工作流提交到調度服務。
最後更新:2016-11-23 16:04:08
上一篇:
配置數據導入任務__基礎示例—完整數據開發_場景教程_大數據開發套件-阿裏雲
下一篇:
補數據__基礎示例—完整數據開發_場景教程_大數據開發套件-阿裏雲
監控數據__監控_用戶指南_負載均衡-阿裏雲
MapReduce開發插件介紹__Eclipse開發插件_工具_大數據計算服務-阿裏雲
報表管理__製作報表_Quick BI-阿裏雲
創建虛擬服務器組__實例管理_用戶指南_負載均衡-阿裏雲
釋放彈性公網 IP__網絡相關接口_API 參考_雲服務器 ECS-阿裏雲
下拉提示操作__JavaSDK手冊_SDK參考手冊_開放搜索-阿裏雲
產品概要__產品簡介_雲服務總線 CSB-阿裏雲
授權安全組規則__安全組_用戶指南_雲服務器 ECS-阿裏雲
普通雲盤狀態圖__附錄_API 參考_雲服務器 ECS-阿裏雲
自適應方向__圖片旋轉_圖片處理指南_對象存儲 OSS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲