數(shù)據(jù)開發(fā)
本文從需求分析、規(guī)劃業(yè)務(wù)流程、規(guī)劃表管理、同步數(shù)據(jù)以及加工數(shù)據(jù)幾方面,為您介紹數(shù)據(jù)開發(fā)。
需求分析
將MySQL的數(shù)據(jù)采集到MaxCompute 貼源層表中,進(jìn)行清洗和加工,產(chǎn)出最終的概覽應(yīng)用表。
規(guī)劃業(yè)務(wù)流程
業(yè)務(wù)流程是DataWorks針對業(yè)務(wù)實(shí)體抽象出來的概念,幫助您從業(yè)務(wù)視角組織代碼的開發(fā),提高任務(wù)管理效率。
本實(shí)驗(yàn)中參考數(shù)據(jù)建模的分層劃域,新建“零售數(shù)倉公共層、會員分析、交易分析、物流分析、信用風(fēng)控分析、電商360”這6個(gè)業(yè)務(wù)流程。
(可選)規(guī)劃表管理
DataWorks支持通過表管理功能實(shí)現(xiàn)目錄文件夾展示表列表,使表列表呈現(xiàn)更清晰,不操作不影響后續(xù)實(shí)驗(yàn)。
層級管理:用于對表的物理層級進(jìn)行設(shè)計(jì),用來定義和管理數(shù)據(jù)倉庫分層。
本實(shí)驗(yàn)中參考數(shù)據(jù)建模的分層劃域,新建“ODS數(shù)據(jù)引入層、DIM維度層、DWD明細(xì)數(shù)據(jù)層、DWS匯總數(shù)據(jù)層、ADS應(yīng)用數(shù)據(jù)層”。
主題管理:按照分析視角對表進(jìn)行劃分。
本實(shí)驗(yàn)中參考數(shù)據(jù)建模的分層劃域,按照下表,新建八個(gè)一級主題和若干個(gè)二級主題。
一級主題
二級主題
應(yīng)用層_電商業(yè)務(wù)_電商集市
活動(dòng)、電商360
應(yīng)用層_電商業(yè)務(wù)_其他集市
-
公共層_電商業(yè)務(wù)_會員域
注冊、登錄、會員域默認(rèn)
公共層_電商業(yè)務(wù)_商品域
-
公共層_電商業(yè)務(wù)_交易域
下單、加購、支付、退款
公共層_電商業(yè)務(wù)_物流域
發(fā)貨、接單、攬件、派送、簽收、物流域默認(rèn)
公共層_電商業(yè)務(wù)_信用和風(fēng)控域
評價(jià)、信用和風(fēng)控域默認(rèn)
貼源層
-
參照下表,將數(shù)據(jù)建模發(fā)布的表歸到對應(yīng)層級和主題下。
表名
層級
一級主題
二級主題
dim_ec_itm_item_info
DIM
公共層_電商業(yè)務(wù)_商品域
-
dim_ec_mbr_user_info
DIM
公共層_電商業(yè)務(wù)_會員域
-
dws_ec_trd_cate_commodity_gmv_kpi_fy
DWS
公共層_電商業(yè)務(wù)_交易域
-
dws_ec_mbr_cnt_std
DWS
公共層_電商業(yè)務(wù)_會員域
-
dwd_ec_trd_create_ord_di
DWD
公共層_電商業(yè)務(wù)_交易域
下單
ads_ec_ec360_gmv_kpi_overview
ADS
應(yīng)用層_電商業(yè)務(wù)_電商集市
電商360
ods_mbr_user_info
ODS
貼源層
-
ods_item_info
ODS
貼源層
-
ods_t_area
ODS
貼源層
-
ods_trade_order
ODS
貼源層
-
同步數(shù)據(jù)
將MySQL中的數(shù)據(jù)同步到MaxCompute ODS層。
數(shù)據(jù)集成是穩(wěn)定高效、彈性伸縮的數(shù)據(jù)同步平臺,致力于提供復(fù)雜網(wǎng)絡(luò)環(huán)境下、豐富的異構(gòu)數(shù)據(jù)源之間高速穩(wěn)定的數(shù)據(jù)移動(dòng)及同步能力。更多關(guān)于數(shù)據(jù)集成支持的數(shù)據(jù)源情況,請參見數(shù)據(jù)集成。
步驟一:購買并配置獨(dú)享數(shù)據(jù)集成資源組
本教程需將存儲在MySQL中的數(shù)據(jù)同步至MaxCompute,同步任務(wù)需使用DataWorks的獨(dú)享數(shù)據(jù)集成資源組,因此您需要先準(zhǔn)備獨(dú)享數(shù)據(jù)集成資源組,并完成前期的準(zhǔn)備工作。
購買Serverless資源組。
登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的資源組列表,進(jìn)入資源組列表頁面。
單擊新建資源組,在資源組購買頁面,選擇地域和可用區(qū)為華東2(上海)、設(shè)置資源組名稱,其他參數(shù)可根據(jù)界面提示進(jìn)行配置,完成后根據(jù)界面提示完成付款。Serverless資源組的計(jì)費(fèi)說明請參見Serverless資源組計(jì)費(fèi)。
說明本教程將使用華東2(上海)地域的Serverless資源組進(jìn)行示例演示,需注意Serverless資源組不支持跨地域操作。
配置Serverless資源組。
登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的資源組列表,進(jìn)入資源組列表頁面。
找到購買的Serverless資源組,單擊操作列的修改歸屬工作空間,根據(jù)界面提示將資源組綁定至已創(chuàng)建的DataWorks工作空間。
為資源組配置公網(wǎng)訪問能力。
登錄專有網(wǎng)絡(luò)-公網(wǎng)NAT網(wǎng)關(guān)控制臺,在頂部菜單欄切換至華東2(上海)地域。
單擊創(chuàng)建NAT網(wǎng)關(guān)。配置相關(guān)參數(shù)。
參數(shù)
取值
所屬地域
華東2(上海)。
所屬專有網(wǎng)絡(luò)
選擇資源組綁定的VPC和交換機(jī)。
您可以前往DataWorks管理控制臺,切換地域后,在左側(cè)導(dǎo)航欄單擊資源組列表,找到已創(chuàng)建的資源組,然后單擊操作列的網(wǎng)絡(luò)設(shè)置,在數(shù)據(jù)調(diào)度 & 數(shù)據(jù)集成區(qū)域查看綁定的專有網(wǎng)絡(luò)和交換機(jī)。VPC和交換機(jī)的更多信息,請參見什么是專有網(wǎng)絡(luò)。
關(guān)聯(lián)交換機(jī)
訪問模式
VPC全通模式(SNAT)。
彈性公網(wǎng)IP
新購彈性公網(wǎng)IP。
關(guān)聯(lián)角色創(chuàng)建
首次創(chuàng)建NAT網(wǎng)關(guān)時(shí),需要?jiǎng)?chuàng)建服務(wù)關(guān)聯(lián)角色,請單擊創(chuàng)建關(guān)聯(lián)角色。
說明上表中未說明的參數(shù)保持默認(rèn)值即可。
單擊立即購買,勾選服務(wù)協(xié)議后,單擊確認(rèn)訂單,完成購買。
更多新增和使用獨(dú)享數(shù)據(jù)集成資源組的操作指導(dǎo)請參見新增和使用獨(dú)享數(shù)據(jù)集成資源組。
步驟二:新建數(shù)據(jù)源
參照下表,新建MySQL數(shù)據(jù)源。詳細(xì)操作步驟請參見創(chuàng)建數(shù)據(jù)源。
參數(shù)
描述
數(shù)據(jù)源類型
選擇連接串模式。
數(shù)據(jù)源名稱
輸入retail_e_commerce_read。
數(shù)據(jù)源描述
零售電商貼源數(shù)據(jù)。
適用環(huán)境
選中開發(fā)和生產(chǎn)。
JDBC URL
輸入
jdbc:mysql://rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com:3306/retail_e_commerce
。重要本教程提供數(shù)據(jù)僅作為阿里云大數(shù)據(jù)開發(fā)治理平臺DataWorks數(shù)據(jù)應(yīng)用實(shí)操使用,所有數(shù)據(jù)均為人工Mock數(shù)據(jù),并且僅支持在數(shù)據(jù)集成模塊讀取數(shù)據(jù)。
用戶名
輸入用戶名,示例為workshop。
密碼
輸入密碼,示例為workshop#2017。
認(rèn)證選項(xiàng)
無認(rèn)證。
資源組連通性
在數(shù)據(jù)集成頁簽下,單擊購買的獨(dú)享數(shù)據(jù)集成資源組后的測試連通性,等待界面提示測試完成,連通狀態(tài)為可連通。
新增MaxCompute數(shù)據(jù)源。詳情請參見創(chuàng)建MaxCompute數(shù)據(jù)源。
步驟三:新建離線同步任務(wù)
各同步場景的通用操作步驟指導(dǎo)請參見通過向?qū)J脚渲秒x線同步任務(wù),核心配置要點(diǎn)如下。
同步會員信息源表 ods_mbr_user_info。
參照如下信息,新建MySQL到MaxCompute的離線同步任務(wù),使用向?qū)J剑瑢ySQL中數(shù)據(jù)同步到MaxCompute 表ods_mbr_user_info中。
節(jié)點(diǎn)類型:離線同步。
節(jié)點(diǎn)名:ods_mbr_user_info。
路徑:業(yè)務(wù)流程/零售數(shù)倉公共層/數(shù)據(jù)集成。
配置網(wǎng)絡(luò)與資源。
數(shù)據(jù)來源選擇為創(chuàng)建的MySQL數(shù)據(jù)源,數(shù)據(jù)去向選擇為MaxCompute數(shù)據(jù)源,我的資源組選擇更多選項(xiàng)下的公共資源組(調(diào)試資源組),選擇完成后單擊下一步,一鍵測試網(wǎng)絡(luò)連通性,連通后繼續(xù)后續(xù)配置。
配置數(shù)據(jù)源。
由于任務(wù)每天需要更新寫入日期格式的分區(qū),所以這里數(shù)據(jù)去向的分區(qū)信息使用調(diào)度參數(shù)代替,每天周期性執(zhí)行任務(wù)的時(shí)候,調(diào)度參數(shù)會替換對應(yīng)的日期值。
數(shù)據(jù)來源
參數(shù)
值
數(shù)據(jù)源
MySQL:retail_e_commerce_read
表
mbr_user_info
數(shù)據(jù)過濾
-
切分鍵
id
數(shù)據(jù)去向
參數(shù)
值
數(shù)據(jù)源
ODPS:odps_source
開發(fā)項(xiàng)目名
retail_e_commerce_2_dev
生產(chǎn)項(xiàng)目名
retail_e_commerce_2
表
ods_mbr_user_info
說明在維度建模部分已經(jīng)執(zhí)行過文末附件的ODS層DDL語句,所以這里直接下拉選擇表名即可。在實(shí)際開發(fā)時(shí)也可以直接使用一鍵生成目標(biāo)表根據(jù)源端表結(jié)構(gòu)快速生成MaxCompute表。
如果僅創(chuàng)建了開發(fā)表,需要在
中搜索一下這4張ODS層表,都執(zhí)行一下提交到生產(chǎn)環(huán)境。
分區(qū)信息
ds=${bizdate}
清理規(guī)則
寫入前清理已有數(shù)據(jù)(Insert Overwrite)
空字符串作為null
否
配置字段映射:選擇同名映射,如下圖。
配置通道控制:保持默認(rèn)配置即可,完成后單擊下一步。
調(diào)度配置。核心配置要點(diǎn)如下,其他參數(shù)保持默認(rèn)即可。
參數(shù)配置:使用自動(dòng)生成的參數(shù)配置結(jié)果,bizdate=$bizdate。$bizdate為前一天的日期,格式為yyyymmdd,更多關(guān)于調(diào)度參數(shù)的配置說明,請參見調(diào)度參數(shù)支持的格式。
時(shí)間屬性配置:當(dāng)前任務(wù)需要每日周期性更新數(shù)據(jù),所以這里將調(diào)度周期配置為“日調(diào)度”。重跑屬性設(shè)置為運(yùn)行成功或失敗后皆可重跑。
資源屬性配置:任務(wù)由調(diào)度資源組調(diào)起運(yùn)行,所以這里配置調(diào)度資源組為公共調(diào)度資源組。
調(diào)度依賴配置:單擊同周期頁簽中依賴的上游節(jié)點(diǎn)后的使用工作空間根節(jié)點(diǎn),其他參數(shù)保持默認(rèn)。
配置調(diào)度依賴的目的是為了保障上游表產(chǎn)出完成才會觸發(fā)下游讀取數(shù)據(jù),而當(dāng)前節(jié)點(diǎn)上游的數(shù)據(jù)是靜態(tài)的,不需要等待產(chǎn)出,所以本節(jié)點(diǎn)的上游依賴可配置為工作空間根節(jié)點(diǎn)。
說明嚴(yán)格遵守以下節(jié)點(diǎn)開發(fā)規(guī)范更有利于調(diào)度依賴自動(dòng)解析,如果對調(diào)度依賴不是非常熟悉的,更建議嚴(yán)格遵守。
節(jié)點(diǎn)和產(chǎn)出表一對一關(guān)系。
節(jié)點(diǎn)名命名與產(chǎn)出表名保持一致。
更多關(guān)于調(diào)度依賴的原理,請參見調(diào)度依賴配置指引;若您需要調(diào)整調(diào)度依賴,請參考調(diào)度依賴配置指引以及配置依賴上一周期(跨周期依賴)。建議您在開發(fā)ODPS SQL任務(wù)的時(shí)候再了解,易于理解。
確認(rèn)調(diào)度依賴配置完成后的配置結(jié)果信息。
retail_e_commerce_2_root。
:retail_e_commerce_2.502736866_out、retail_e_commerce_2.ods_mbr_user_info。
:
說明輸出名中的數(shù)字為系統(tǒng)隨機(jī)生成。
保存并測試節(jié)點(diǎn)運(yùn)行結(jié)果。
鍵盤操作Ctrl+S保存配置結(jié)果后,單擊帶參運(yùn)行,配置業(yè)務(wù)日期的值后運(yùn)行節(jié)點(diǎn),例如設(shè)置日期為“20220726”。任務(wù)運(yùn)行成功后可新建一個(gè)ODPS SQL臨時(shí)查詢校驗(yàn)導(dǎo)入的數(shù)據(jù)是否符合預(yù)期。臨時(shí)查詢的創(chuàng)建操作請參見創(chuàng)建臨時(shí)查詢。
SELECT * FROM retail_e_commerce_2_dev.ods_mbr_user_info where ds = '20220726' LIMIT 10;
說明建議本實(shí)驗(yàn)中的任務(wù)高級運(yùn)行時(shí)填寫的日期值一致,比如都填寫“20220726”,避免下游任務(wù)再測試時(shí)因參數(shù)取值不同取不到數(shù)據(jù)。不影響生產(chǎn)調(diào)度。
提交并發(fā)布離線同步節(jié)點(diǎn)ods_mbr_user_info。
說明必須要提交了以后才可以在下游節(jié)點(diǎn)配置依賴關(guān)系的時(shí)候被搜索到,發(fā)布可以等到全部提交完后批量發(fā)布。
同步地區(qū)源表 ods_t_area。
新建如下MySQL到MaxCompute的離線同步任務(wù),使用向?qū)J健?/p>
節(jié)點(diǎn)類型:離線同步。
節(jié)點(diǎn)名:ods_t_area。
路徑:業(yè)務(wù)流程/零售數(shù)倉公共層/數(shù)據(jù)集成。
配置網(wǎng)絡(luò)與資源。
數(shù)據(jù)來源選擇為創(chuàng)建的MySQL數(shù)據(jù)源,數(shù)據(jù)去向選擇為MaxCompute數(shù)據(jù)源,我的資源組選擇更多選項(xiàng)下的公共資源組(調(diào)試資源組),選擇完成后單擊下一步,一鍵測試網(wǎng)絡(luò)連通性,連通后繼續(xù)后續(xù)配置。
配置數(shù)據(jù)來源和去向。
數(shù)據(jù)來源
參數(shù)
值
數(shù)據(jù)源
MySQL:retail_e_commerce_read
表
t_area
數(shù)據(jù)過濾
-
切分鍵
id
數(shù)據(jù)去向
參數(shù)
值
數(shù)據(jù)源
ODPS:odps_source
開發(fā)項(xiàng)目名
retail_e_commerce_2_dev
生產(chǎn)項(xiàng)目名
retail_e_commerce_2
表
ods_t_area
分區(qū)信息
ds=${bizdate}
清理規(guī)則
寫入前清理已有數(shù)據(jù)(Insert Overwrite)
空字符串作為null
否
配置字段映射:使用同名映射。
配置通道控制:使用默認(rèn)通道配置。
單擊下一步。
參數(shù)配置:使用自動(dòng)生成的參數(shù)配置結(jié)果,bizdate=$bizdate。$bizdate為前一天的日期,格式為yyyymmdd,更多關(guān)于調(diào)度參數(shù)的配置說明,請參見調(diào)度參數(shù)支持的格式。
時(shí)間屬性與資源屬性配置:當(dāng)前任務(wù)需要每日周期性更新數(shù)據(jù),所以這里將調(diào)度周期配置為“日調(diào)度”。任務(wù)由調(diào)度資源組調(diào)起運(yùn)行,所以這里配置一下調(diào)度資源組“公共調(diào)度資源組”。時(shí)間屬性和調(diào)度資源屬性使用默認(rèn)配置即可。
調(diào)度依賴配置:配置調(diào)度依賴的目的是為了保障上游表產(chǎn)出完成才會觸發(fā)下游讀取數(shù)據(jù),而當(dāng)前節(jié)點(diǎn)上游的數(shù)據(jù)是靜態(tài)的,不需要等待產(chǎn)出,所以本節(jié)點(diǎn)的上游依賴可配置為工作空間根節(jié)點(diǎn),即周期依賴的上游節(jié)點(diǎn)配置為"使用工作空間根節(jié)點(diǎn)",其他參數(shù)保持默認(rèn)。
說明嚴(yán)格遵守以下節(jié)點(diǎn)開發(fā)規(guī)范更有利于調(diào)度依賴自動(dòng)解析,如果對調(diào)度依賴不是非常熟悉的,更建議嚴(yán)格遵守。
節(jié)點(diǎn)和產(chǎn)出表一對一關(guān)系。
節(jié)點(diǎn)名命名與產(chǎn)出表名保持一致。
更多關(guān)于調(diào)度依賴的原理,請參見調(diào)度依賴配置指引;若您需要調(diào)整調(diào)度依賴,請參考調(diào)度依賴配置指引以及配置依賴上一周期(跨周期依賴)。建議您在開發(fā)ODPS SQL任務(wù)的時(shí)候再了解,易于理解。
調(diào)度依賴配置完成后,請確認(rèn)如下信息:
retail_e_commerce_2_root。
:retail_e_commerce_2.502736901_out、retail_e_commerce_2.ods_t_area。
:說明輸出名中的數(shù)字為系統(tǒng)隨機(jī)生成。
保存、測試及提交、發(fā)布。操作與第一個(gè)同步任務(wù)操作相同。
同步商品信息源表 ods_item_info。
新建如下MySQL到MaxCompute的離線同步任務(wù),使用向?qū)J健?/p>
節(jié)點(diǎn)類型:離線同步。
節(jié)點(diǎn)名:ods_item_info。
路徑:業(yè)務(wù)流程/零售數(shù)倉公共層/數(shù)據(jù)集成。
配置數(shù)據(jù)來源和去向。
數(shù)據(jù)來源
參數(shù)
值
數(shù)據(jù)源
MySQL:retail_e_commerce_read
表
item_info
數(shù)據(jù)過濾
-
切分鍵
id
數(shù)據(jù)去向
參數(shù)
值
數(shù)據(jù)源
ODPS:odps_source
開發(fā)項(xiàng)目名
retail_e_commerce_2_dev
生產(chǎn)項(xiàng)目名
retail_e_commerce_2
表
ods_item_info
分區(qū)信息
ds=${bizdate}
清理規(guī)則
寫入前清理已有數(shù)據(jù)(Insert Overwrite)
空字符串作為null
否
配置字段映射:使用同名映射。
配置通道控制:使用默認(rèn)通道配置。
單擊下一步。
參數(shù)配置:使用自動(dòng)生成的參數(shù)配置結(jié)果,bizdate=$bizdate。$bizdate為前一天的日期,格式為yyyymmdd,更多關(guān)于調(diào)度參數(shù)的配置說明,請參見調(diào)度參數(shù)支持的格式。
時(shí)間屬性與資源屬性配置:當(dāng)前任務(wù)需要每日周期性更新數(shù)據(jù),所以這里將調(diào)度周期配置為“日調(diào)度”。任務(wù)由調(diào)度資源組調(diào)起運(yùn)行,所以這里配置一下調(diào)度資源組“公共調(diào)度資源組”。時(shí)間屬性和調(diào)度資源屬性使用默認(rèn)配置即可。
調(diào)度依賴配置:配置調(diào)度依賴的目的是為了保障上游表產(chǎn)出完成才會觸發(fā)下游讀取數(shù)據(jù),而當(dāng)前節(jié)點(diǎn)上游的數(shù)據(jù)是靜態(tài)的,不需要等待產(chǎn)出,所以本節(jié)點(diǎn)的上游依賴可配置為工作空間根節(jié)點(diǎn),即周期依賴的上游節(jié)點(diǎn)配置為"使用工作空間根節(jié)點(diǎn)",其他參數(shù)保持默認(rèn)。
說明嚴(yán)格遵守以下節(jié)點(diǎn)開發(fā)規(guī)范更有利于調(diào)度依賴自動(dòng)解析,如果對調(diào)度依賴不是非常熟悉的,更建議嚴(yán)格遵守。
節(jié)點(diǎn)和產(chǎn)出表一對一關(guān)系。
節(jié)點(diǎn)名命名與產(chǎn)出表名保持一致。
更多關(guān)于調(diào)度依賴的原理,請參見調(diào)度依賴配置指引;若您需要調(diào)整調(diào)度依賴,請參考調(diào)度依賴配置指引以及配置依賴上一周期(跨周期依賴)。建議您在開發(fā)ODPS SQL任務(wù)的時(shí)候再了解,易于理解。
調(diào)度依賴配置完成后,請確認(rèn)如下信息:
retail_e_commerce_2_root。
:retail_e_commerce_2.502736904_out、retail_e_commerce_2.ods_item_info。
:說明輸出名中的數(shù)字為系統(tǒng)隨機(jī)生成。
保存、測試及提交、發(fā)布。操作與第一個(gè)同步任務(wù)操作相同。
同步訂單源表 ods_trade_order。
新建如下MySQL到MaxCompute的離線同步任務(wù),使用向?qū)J健?/p>
節(jié)點(diǎn)類型:離線同步。
節(jié)點(diǎn)名:ods_trade_order。
路徑:業(yè)務(wù)流程/零售數(shù)倉公共層/數(shù)據(jù)集成。
配置數(shù)據(jù)來源和去向。
數(shù)據(jù)來源
參數(shù)
值
數(shù)據(jù)源
MySQL:retail_e_commerce_read
表
trade_order
數(shù)據(jù)過濾
-
切分鍵
id
數(shù)據(jù)去向
參數(shù)
值
數(shù)據(jù)源
ODPS:odps_source
開發(fā)項(xiàng)目名
retail_e_commerce_2_dev
生產(chǎn)項(xiàng)目名
retail_e_commerce_2
表
ods_trade_order
分區(qū)信息
ds=${bizdate}
清理規(guī)則
寫入前清理已有數(shù)據(jù)(Insert Overwrite)
空字符串作為null
否
配置字段映射:使用同名映射。
配置通道控制:使用默認(rèn)通道配置。
單擊下一步。
參數(shù)配置:使用自動(dòng)生成的參數(shù)配置結(jié)果,bizdate=$bizdate。$bizdate為前一天的日期,格式為yyyymmdd,更多關(guān)于調(diào)度參數(shù)的配置說明,請參見調(diào)度參數(shù)支持的格式。
時(shí)間屬性與資源屬性配置:當(dāng)前任務(wù)需要每日周期性更新數(shù)據(jù),所以這里將調(diào)度周期配置為“日調(diào)度”。任務(wù)由調(diào)度資源組調(diào)起運(yùn)行,所以這里配置一下調(diào)度資源組“公共調(diào)度資源組”。時(shí)間屬性和調(diào)度資源屬性使用默認(rèn)配置即可。
調(diào)度依賴配置:配置調(diào)度依賴的目的是為了保障上游表產(chǎn)出完成才會觸發(fā)下游讀取數(shù)據(jù),而當(dāng)前節(jié)點(diǎn)上游的數(shù)據(jù)是靜態(tài)的,不需要等待產(chǎn)出,所以本節(jié)點(diǎn)的上游依賴可配置為工作空間根節(jié)點(diǎn),即周期依賴的上游節(jié)點(diǎn)配置為"使用工作空間根節(jié)點(diǎn)",其他參數(shù)保持默認(rèn)。
說明嚴(yán)格遵守以下節(jié)點(diǎn)開發(fā)規(guī)范更有利于調(diào)度依賴自動(dòng)解析,如果對調(diào)度依賴不是非常熟悉的,更建議嚴(yán)格遵守。
節(jié)點(diǎn)和產(chǎn)出表一對一關(guān)系。
節(jié)點(diǎn)名命名與產(chǎn)出表名保持一致。
更多關(guān)于調(diào)度依賴的原理,請參見調(diào)度依賴配置指引;若您需要調(diào)整調(diào)度依賴,請參考調(diào)度依賴配置指引以及配置依賴上一周期(跨周期依賴)。建議您在開發(fā)ODPS SQL任務(wù)的時(shí)候再了解,易于理解。
調(diào)度依賴配置完成后,請確認(rèn)如下信息:
retail_e_commerce_2_root。
:retail_e_commerce_2.502736916_out、retail_e_commerce_2.ods_trade_order。
:說明輸出名中的數(shù)字為系統(tǒng)隨機(jī)生成。
保存、測試及提交、發(fā)布。操作與第一個(gè)同步任務(wù)操作相同。
加工數(shù)據(jù)
產(chǎn)出“dim_ec_mbr_user_info 會員基礎(chǔ)信息維度表”
創(chuàng)建調(diào)度任務(wù)。
新建ODPS SQL節(jié)點(diǎn),在零售數(shù)倉公共層業(yè)務(wù)流程MaxCompute引擎模塊下,并命名為“dim_ec_mbr_user_info”。新建ODPS SQL的詳細(xì)操作步驟請參見開發(fā)ODPS SQL任務(wù)。
開發(fā)SQL。
由于任務(wù)每天需要從日期格式的分區(qū)讀取,清理后寫入日期格式的分區(qū),所以這里Insert的分區(qū)信息和From的分區(qū)使用調(diào)度參數(shù)代替,每天周期性執(zhí)行任務(wù)的時(shí)候,調(diào)度參數(shù)會替換對應(yīng)的業(yè)務(wù)日期值。
INSERT OVERWRITE TABLE dim_ec_mbr_user_info PARTITION(ds='${biz_date}') SELECT user.user_id AS user_id ,user.nick AS nick ,user.gmt_create AS gmt_modified ,user.gmt_modified AS gmt_create ,user.reg_fullname AS reg_fullname ,user.reg_mobile_phone AS reg_mobile_phone ,user.reg_email AS reg_email ,user.reg_gender AS reg_gender ,user.reg_gender_name AS reg_gender_name ,user.reg_birthdate AS reg_birthdate ,user.reg_address AS reg_address ,user.reg_nation_id AS reg_nation_id ,user.reg_nation_name AS reg_nation_name ,user.reg_prov_id AS reg_prov_id ,area_prov.name AS reg_prov_name ,user.reg_city_id AS reg_city_id ,area_city.name AS reg_city_name ,user.user_regip AS user_regip ,user.id_card_type AS id_card_type ,user.id_card_type_name AS id_card_type_name ,user.id_card_number AS id_card_number ,null as id_gender ,null as id_bday ,null as id_age ,user.user_regdate AS user_regdate ,user.user_active_type AS user_active_type ,user.user_active_name AS user_active_name ,user.user_active_time AS user_active_time ,user.vip_level AS vip_level ,user.vip_level_name AS vip_level_name ,user.is_delete AS is_delete --,id_region FROM ( SELECT id -- 主鍵 ,gmt_create -- 創(chuàng)建時(shí)間 ,gmt_modified -- 修改時(shí)間 ,user_id -- 會員數(shù)字ID ,nick -- 會員NICK。會員昵稱 ,reg_fullname -- 個(gè)人認(rèn)證表示真實(shí)姓名,企業(yè)認(rèn)證表示企業(yè)名稱 ,reg_mobile_phone -- 注冊時(shí)綁定手機(jī)號碼 ,reg_email -- 注冊填寫EMAIL(用戶可以修改) ,reg_gender -- 注冊填寫性別(F女,M男,不是這兩個(gè)就是未知的,說明性別保密) ,CASE WHEN reg_gender='F' THEN '女' WHEN reg_gender='M' THEN '男' ELSE '未知' END AS reg_gender_name -- 注冊填寫性別(F女,M男,不是這兩個(gè)就是未知的,說明性別保密) ,reg_birthdate -- 注冊填寫生日(用戶可以修改) ,reg_address -- 注冊填寫地址(用戶可以修改) ,reg_nation_id -- 注冊填寫國家ID(暫時(shí)為空) ,CASE WHEN reg_nation_id='cn' THEN '中國' ELSE '海外' END AS reg_nation_name ,reg_prov_id -- 注冊填寫省ID ,reg_city_id -- 注冊填寫城市ID ,user_regip -- 注冊IP ,id_card_type -- 會員認(rèn)證證件類型 0:未知 1:身份證 2:企業(yè)營業(yè)執(zhí)照號 ,CASE WHEN id_card_type=0 THEN '未知' WHEN id_card_type=1 THEN '身份證' WHEN id_card_type=2 THEN '企業(yè)營業(yè)執(zhí)照號' ELSE '異常' END AS id_card_type_name ,id_card_number -- 個(gè)人認(rèn)證表示身份證號,企業(yè)認(rèn)證表示企業(yè)的營業(yè)執(zhí)照號,沒有認(rèn)證不保證準(zhǔn)確性 ,user_regdate -- 注冊時(shí)間 ,user_active_type -- 用戶激活方式 ,CASE WHEN user_active_type='email' THEN '郵箱' WHEN user_active_type='mobile_phone' THEN '手機(jī)' ELSE '異常' END AS user_active_name -- 用戶激活方式 ,user_active_time -- 激活時(shí)間 ,cast(vip_level AS BIGINT) AS vip_level -- VIP等級 ,CASE WHEN vip_level>0 AND vip_level<=3 THEN '初級' WHEN vip_level>3 AND vip_level<=6 THEN '中級' WHEN vip_level>6 AND vip_level<=10 THEN '高級' WHEN vip_level>10 THEN '特級' ELSE '異常' END AS vip_level_name ,is_delete -- 是否刪除 FROM ods_mbr_user_info WHERE ds = '${biz_date}' ) AS USER LEFT JOIN ( SELECT id ,pid ,name ,shortname ,longitude ,latitude ,level ,sort FROM ods_t_area WHERE ds = ${biz_date} ) AS area_prov ON user.reg_prov_id = area_prov.id LEFT JOIN ( SELECT id ,pid ,name ,shortname ,longitude ,latitude ,level ,sort FROM ods_t_area WHERE ds = ${biz_date} ) AS area_city ON user.reg_city_id = area_city.id ;
調(diào)度配置。在ODPS SQL節(jié)點(diǎn)右側(cè)導(dǎo)航欄,單擊調(diào)度配置。
參數(shù):新增參數(shù)biz_date=${yyyymmdd}。更多關(guān)于調(diào)度參數(shù)的配置說明,請參見調(diào)度參數(shù)支持的格式。
時(shí)間屬性:當(dāng)前任務(wù)需要每天執(zhí)行一次,因此調(diào)度周期選擇日。時(shí)間屬性和調(diào)度資源屬性使用默認(rèn)配置即可。
調(diào)度依賴:單擊從代碼解析輸入輸出。
由于我們
insert
當(dāng)前表dim_ec_mbr_user_info需要from
表ods_mbr_user_info和ods_t_area,所以從調(diào)度上需要等待兩張上游表更新完成,才能開始運(yùn)當(dāng)前任務(wù),因此將產(chǎn)出兩張上游表的任務(wù)作為當(dāng)前任務(wù)的上游。開啟代碼解析,使用默認(rèn)解析結(jié)果就可以掛在上游表產(chǎn)出任務(wù)下。更多關(guān)于調(diào)度依賴的內(nèi)容,請參見調(diào)度依賴配置指引;若您需要調(diào)整調(diào)度依賴,請參見配置同周期調(diào)度依賴和配置依賴上一周期(跨周期依賴)。請確認(rèn)以下信息:
retail_e_commerce_2.ods_mbr_user_info、retail_e_commerce_2.ods_t_area。
:retail_e_commerce_2.502637287_out、retail_e_commerce_2.dim_ec_mbr_user_info。
:
產(chǎn)出“dim_ec_itm_item_info 商品基礎(chǔ)信息維度表”
創(chuàng)建調(diào)度任務(wù):方法同上,參照如下信息。
節(jié)點(diǎn)類型:ODPS SQL。
節(jié)點(diǎn)名:dim_ec_itm_item_info。
業(yè)務(wù)流程:業(yè)務(wù)流程/零售數(shù)倉公共層/MaxCompute。
開發(fā)SQL:方法同上,您也可以使用維度建模的模型開發(fā)功能,參考如下腳本。
--模型名稱:dim_ec_itm_item_info(商品基礎(chǔ)信息維度表) --業(yè)務(wù)分類:電商業(yè)務(wù); 數(shù)據(jù)域:商品域; 業(yè)務(wù)過程:商品域_默認(rèn); 生命周期:365天; --模型描述:商品基礎(chǔ)信息維度表 INSERT OVERWRITE TABLE dim_ec_itm_item_info PARTITION(ds='${biz_date}') SELECT t1.gmt_create AS gmt_create --創(chuàng)建時(shí)間 ,t1.gmt_modified AS gmt_modified --修改時(shí)間 ,t1.item_id AS item_id --商品數(shù)字ID ,t1.title AS title --商品標(biāo)題 ,t1.sub_title AS sub_title --商品子標(biāo)題 ,t1.pict_url AS pict_url --主圖URL ,t1.desc_path AS desc_path --商品描述的路徑 ,t1.item_status AS item_status --商品狀態(tài)1:確認(rèn)通過0:未確認(rèn)通過 ,t1.last_online_time AS last_online_time --最近一次開始銷售時(shí)間,商品上架時(shí)間 ,t1.last_offline_time AS last_offline_time --銷售結(jié)束時(shí)間,表示一個(gè)銷售周期的結(jié)束,僅作用于拍賣商品 ,t1.duration AS duration --有效期,銷售周期,只有兩個(gè)值,7天或14天 ,cast(t1.reserve_price as DOUBLE) AS reserve_price --當(dāng)前價(jià)格 ,cast(t1.secure_trade_ordinary_post_fee as DOUBLE) AS secure_trade_ordinary_post_fee --平郵費(fèi)用 ,cast(t1.secure_trade_fast_post_fee as DOUBLE) AS secure_trade_fast_post_fee --快遞費(fèi)用 ,cast(t1.secure_trade_ems_post_fee as DOUBLE) AS secure_trade_ems_post_fee --EMS郵費(fèi) ,t1.last_online_quantity AS last_online_quantity --商品最近一次上架時(shí)的庫存數(shù)量 ,t1.features AS features --商品特征 ,t1.cate_id AS cate_id --商品葉子類目ID ,t1.cate_name AS cate_name --商品葉子類目名稱 ,t1.commodity_id AS commodity_id --品類ID ,t1.commodity_name AS commodity_name --品類名稱 ,t1.is_virtual AS is_virtual --是否虛擬商品 ,t1.shop_id AS shop_id --商家ID ,t1.shop_nick AS shop_nick --商家NICK ,t1.is_deleted AS is_deleted --類目是否刪除 FROM ods_item_info t1 -- FROM retail_e_commerce_2.default.ods_item_info t1 -- 注意:模型開發(fā)自動(dòng)生成的代碼FROM后的表名使用的是“項(xiàng)目名.schema名.表名”,這里的sql中我們僅保留了表名。 -- 原因一:不指定項(xiàng)目名前綴,在DataStudio運(yùn)行時(shí)會默認(rèn)訪問開發(fā)表,發(fā)布生產(chǎn)環(huán)境自動(dòng)調(diào)度會默認(rèn)訪問生產(chǎn)表。 -- 原因二:本實(shí)驗(yàn)中的sql基本都沒有帶上schema名,所以這里也不指定schema。使用自動(dòng)解析時(shí),在對調(diào)度依賴還不是很熟的情況下,我們建議都保持一致,所有sql都不帶上schema或都帶上schema。 WHERE ds = '${biz_date}'; ;
調(diào)度配置。
調(diào)度參數(shù):方法同上,新增參數(shù)biz_date=${yyyymmdd}。
時(shí)間屬性:方法同上,使用默認(rèn)的配置,日調(diào)度。
調(diào)度依賴:方法同上,使用自動(dòng)解析,不需要手動(dòng)修改。
請確認(rèn)以下信息:
retail_e_commerce_2.ods_item_info。
:retail_e_commerce_2.502637814_out、retail_e_commerce_2.dim_ec_itm_item_info。
:
產(chǎn)出“dwd_ec_trd_create_ord_di 交易下單明細(xì)事實(shí)表”
創(chuàng)建調(diào)度任務(wù)。
節(jié)點(diǎn)類型:ODPS SQL。
節(jié)點(diǎn)名:dwd_ec_trd_create_ord_di。
業(yè)務(wù)流程:業(yè)務(wù)流程/零售數(shù)倉公共層/MaxCompute。
開發(fā)SQL。
INSERT OVERWRITE TABLE dwd_ec_trd_create_ord_di PARTITION(ds='${biz_date}') SELECT id, gmt_create, gmt_modified, sub_order_id, parent_order_id, buyer_id, buyer_nick, item_id, item_price, buy_amount, biz_type, memo, pay_status, logistics_status, status, seller_memo, buyer_memo, ip, end_time, pay_time, is_sub, is_parent, shop_id, total_fee FROM ods_trade_order WHERE ds = '${biz_date}';
調(diào)度配置。
調(diào)度參數(shù):新增參數(shù)biz_date=${yyyymmdd}。
時(shí)間屬性:使用默認(rèn)的配置,日調(diào)度。
調(diào)度依賴:使用自動(dòng)解析,不需要手動(dòng)修改。
請確認(rèn)以下信息:
retail_e_commerce_2.ods_trade_order。
:retail_e_commerce_2.502638246_out、retail_e_commerce_2.dwd_ec_trd_create_ord_di。
:
產(chǎn)出“dws_ec_mbr_cnt_std 歷史截至當(dāng)日存量會員數(shù)cube統(tǒng)計(jì)表”
創(chuàng)建調(diào)度任務(wù)。
節(jié)點(diǎn)類型:ODPS SQL。
節(jié)點(diǎn)名:dws_ec_mbr_cnt_std。
業(yè)務(wù)流程:業(yè)務(wù)流程/零售數(shù)倉公共層/MaxCompute。
開發(fā)SQL。
-- 維度建模建表,這里不需要再創(chuàng)建 CREATE TABLE IF NOT EXISTS dws_ec_mbr_cnt_std ( reg_prov_id STRING COMMENT '注冊填寫省ID', reg_prov_name STRING COMMENT '注冊填寫省名稱', reg_gender STRING COMMENT '身份證解析性別(F女,M男,unkown表示身份證為空或格式不對)', reg_gender_name STRING COMMENT '身份證解析性別(F女,M男,unkown表示身份證為空或格式不對)', age_tag STRING COMMENT '出生年代', user_active_type STRING COMMENT '用戶激活方式', user_active_name STRING COMMENT '激活方式名稱', vip_level BIGINT COMMENT 'VIP等級', vip_level_name STRING COMMENT 'VIP等級名稱。v1,v2,v3等', mbr_cnt BIGINT COMMENT '存量會員數(shù)' ) COMMENT '歷史截至當(dāng)日_存量會員數(shù)_cube統(tǒng)計(jì)表' PARTITIONED BY ( ds STRING COMMENT '業(yè)務(wù)日期, yyyymmdd' ) LIFECYCLE 365; INSERT OVERWRITE TABLE dws_ec_mbr_cnt_std PARTITION(ds = '${biz_date}') SELECT if(grouping(reg_prov_id) == 0, reg_prov_id, '-9999') as reg_prov_id , if(grouping(reg_prov_name) == 0, reg_prov_name, '全部') as reg_prov_name , if(grouping(reg_gender) == 0, reg_gender, '-9999') as reg_gender , if(grouping(reg_gender_name) == 0, reg_gender_name, '全部') as reg_gender_name , if(grouping(age_tag) == 0, age_tag, '-9999') as age_tag , if(grouping(user_active_type) == 0, user_active_type, '-9999') as user_active_type , if(grouping(user_active_name) == 0, user_active_name, '全部') as user_active_name , if(grouping(vip_level) == 0, vip_level, -9999) as vip_level , if(grouping(vip_level_name) == 0, vip_level_name, '全部') as vip_level_name , count(distinct user_id) as mbr_cnt from ( select reg_prov_id , reg_prov_name , reg_gender , reg_gender_name ,(case when substr(reg_birthdate,1,4)>=2010 and substr(reg_birthdate,1,4)<2020 then '10后' when substr(reg_birthdate,1,4)>=2000 and substr(reg_birthdate,1,4)<2010 then '00后' when substr(reg_birthdate,1,4)>=1990 and substr(reg_birthdate,1,4)<2000 then '90后' when substr(reg_birthdate,1,4)>=1980 and substr(reg_birthdate,1,4)<1990 then '80后' when substr(reg_birthdate,1,4)>=1970 and substr(reg_birthdate,1,4)<1980 then '70后' else '其他' end)as age_tag , user_active_type , user_active_name , vip_level , vip_level_name , user_id from dim_ec_mbr_user_info where ds = max_pt('dim_ec_mbr_user_info') ) _main group by reg_prov_id , reg_prov_name , reg_gender , reg_gender_name , age_tag , user_active_type , user_active_name , vip_level , vip_level_name grouping sets( (reg_prov_id, reg_prov_name) ,(reg_gender, reg_gender_name) ,(age_tag) ,(user_active_type, user_active_name) ,(vip_level, vip_level_name) ,() );
調(diào)度配置。
調(diào)度參數(shù):新增參數(shù)biz_date=${yyyymmdd}。
時(shí)間屬性:使用默認(rèn)的配置,日調(diào)度。
調(diào)度依賴:使用自動(dòng)解析,不需要手動(dòng)修改。
請確認(rèn)以下信息:
retail_e_commerce_2.dim_ec_mbr_user_info。
:retail_e_commerce_2.502638770_out、retail_e_commerce_2.dws_ec_mbr_cnt_std。
:
產(chǎn)出“dws_ec_trd_cate_commodity_gmv_kpi_fy 財(cái)年KPI類目品類GMV統(tǒng)計(jì)”
創(chuàng)建調(diào)度任務(wù)。
節(jié)點(diǎn)類型:ODPS SQL。
節(jié)點(diǎn)名:dws_ec_trd_cate_commodity_gmv_kpi_fy。
業(yè)務(wù)流程:業(yè)務(wù)流程/零售數(shù)倉公共層/MaxCompute。
開發(fā)SQL。
-- 建模發(fā)布建的表,這里不需要再重新創(chuàng)建 CREATE TABLE IF NOT EXISTS dws_ec_trd_cate_commodity_gmv_kpi_fy ( cate_id BIGINT COMMENT '商品葉子類目ID', cate_name STRING COMMENT '商品葉子類目名稱', commodity_id BIGINT COMMENT '品類ID', commodity_name STRING COMMENT '品類名稱', pay_ord_amt_fy DECIMAL COMMENT '財(cái)年_訂單支付成功金額', kpi_gmv_rate_fy DECIMAL COMMENT '財(cái)年_成交金額完成度' ) COMMENT '財(cái)年KPI_類目_品類_GMV統(tǒng)計(jì)' PARTITIONED BY ( ds STRING COMMENT '業(yè)務(wù)日期, yyyymmdd' ) LIFECYCLE 365; INSERT OVERWRITE TABLE dws_ec_trd_cate_commodity_gmv_kpi_fy PARTITION(ds = '${biz_date}') select t1.cate_id ,t1.cate_name ,t1.commodity_id ,t1.commodity_name ,round(10*sum(t1.total_fee),4) as pay_ord_amt_fy ,round((10*sum(t1.total_fee)/30000000),4) as kpi_gmv_rate_fy from ( select to_char(a.gmt_create,'yyyymmdd') as stat_date ,a.sub_order_id ,a.buyer_id ,a.item_id ,a.biz_type ,a.pay_status ,a.total_fee/100 as total_fee ,b.cate_id ,b.cate_name ,b.commodity_id ,b.commodity_name from dwd_ec_trd_create_ord_di a left outer join ( select distinct item_id ,cate_id ,cate_name ,commodity_id ,commodity_name ,shop_id ,shop_nick from dim_ec_itm_item_info where ds = max_pt('dim_ec_itm_item_info') ) b on a.item_id = b.item_id and a.shop_id = b.shop_id where a.ds = max_pt('dwd_ec_trd_create_ord_di') ) t1 where t1.pay_status in ('2') and t1.biz_type in ('2','3','4') group by t1.cate_id , t1.cate_name , t1.commodity_id , t1.commodity_name ;
調(diào)度配置。
調(diào)度參數(shù):新增參數(shù)biz_date=${yyyymmdd}。
時(shí)間屬性:使用默認(rèn)的配置,日調(diào)度。
調(diào)度依賴:使用自動(dòng)解析,不需要手動(dòng)修改。
請確認(rèn)以下信息:
retail_e_commerce_2.dwd_ec_trd_create_ord_di、retail_e_commerce_2.dim_ec_itm_item_info。
:retail_e_commerce_2.502638774_out、retail_e_commerce_2.dws_ec_trd_cate_commodity_gmv_kpi_fy。
:
產(chǎn)出“ads_ec_ec360_gmv_kpi_overview 電商360KPI概覽”
創(chuàng)建調(diào)度任務(wù)。
節(jié)點(diǎn)類型:ODPS SQL。
節(jié)點(diǎn)名:ads_ec_ec360_gmv_kpi_overview。
業(yè)務(wù)流程:業(yè)務(wù)流程/零售數(shù)倉公共層/MaxCompute。
開發(fā)SQL。
-- 維度建模建表,這里不需要再創(chuàng)建。 CREATE TABLE IF NOT EXISTS ads_ec_ec360_gmv_kpi_overview ( pay_ord_amt_fy DECIMAL COMMENT '財(cái)年_訂單支付成功金額' ,mbr_cnt_std BIGINT COMMENT '歷史截至當(dāng)日_存量會員數(shù)' ,kpi_gmv_rate_fy DECIMAL COMMENT '財(cái)年_成交金額完成度' ) COMMENT '電商360KPI概覽' PARTITIONED BY ( ds STRING COMMENT '業(yè)務(wù)日期, yyyymmdd' ) LIFECYCLE 365 ; -- 指標(biāo)計(jì)算口徑: -- 1. pay_ord_amt_fy 財(cái)年訂單支付成功金額。訂單類型包含:等待賣家發(fā)貨、等待買家確認(rèn)收貨、交易成功;訂單支付狀態(tài)包含付款成功。 -- 2. mbr_cnt_std 歷史截止當(dāng)日存量會員數(shù)。存量會員數(shù):注冊且激活的會員總量。 -- 3. kpi_gmv_rate_fy 成交金額目標(biāo)完成度=成交金額實(shí)際完成值/成交金額目標(biāo)值;成交金額目標(biāo)值為3000萬。 INSERT OVERWRITE TABLE ads_ec_ec360_gmv_kpi_overview PARTITION(ds = '${biz_date}') SELECT pay_ord_amt_fy ,mbr_cnt_std ,round(pay_ord_amt_fy/30000000, 4) AS kpi_gmv_rate_fy FROM ( SELECT max(pay_ord_amt_fy) AS pay_ord_amt_fy ,max(mbr_cnt_std) AS mbr_cnt_std FROM ( SELECT 1 AS id ,sum(pay_ord_amt_fy) AS pay_ord_amt_fy ,null AS mbr_cnt_std FROM dws_ec_trd_cate_commodity_gmv_kpi_fy WHERE ds = max_pt('dws_ec_trd_cate_commodity_gmv_kpi_fy') UNION SELECT 1 AS id ,null AS pay_ord_amt_fy ,SUM(mbr_cnt) AS mbr_cnt_std FROM dws_ec_mbr_cnt_std WHERE ds = max_pt('dws_ec_mbr_cnt_std') AND reg_prov_id = '-9999' AND reg_gender = '-9999' AND age_tag = '-9999' AND user_active_type = '-9999' AND vip_level = - 9999 ) t1 GROUP BY id ) t2 ;
調(diào)度配置。
新增參數(shù):biz_date=${yyyymmdd}。
時(shí)間屬性:使用默認(rèn)的配置,日調(diào)度。
調(diào)度依賴:使用自動(dòng)解析,不需要手動(dòng)修改。
請確認(rèn)以下信息:
retail_e_commerce_2.dws_ec_trd_cate_commodity_gmv_kpi_fy、retail_e_commerce_2.dws_ec_mbr_cnt_std。
:retail_e_commerce_2.502643753_out、retail_e_commerce_2.ads_ec_ec360_gmv_kpi_overview。
:
(可選) 建MaxCompute用戶自定義函數(shù)
對dim_ec_mbr_user_info表的user_regip通過IP2Region函數(shù)解析成地域,最后可以可視化展示注冊地分布。
上傳資源。
在零售數(shù)倉公共層業(yè)務(wù)流程,MaxCompute引擎模塊下新建jar資源,選中上傳為ODPS資源,提交并發(fā)布。您可以使用Demo文件IP2Region.jar。更多關(guān)于UDF的開發(fā),請參見MaxCompute UDF概述。
注冊函數(shù)。
參照如下配置,在零售數(shù)倉公共層業(yè)務(wù)流程,MaxCompute引擎模塊下新建GET_REGION函數(shù)。
函數(shù)類型
其他函數(shù)
MaxCompute引擎實(shí)例
retail_e_commerce_2
函數(shù)名
GET_REGION
責(zé)任人
DataWorks
類名
org.alidata.odps.udf.Ip2Region
資源列表
ip2region.jar
描述
IP地址轉(zhuǎn)換地域
命令格式
string get_region(string <str>)
參數(shù)說明
str:必填。STRING類型。待轉(zhuǎn)換成地域的IP字符串。
返回值
返回string類型。返回地域名。
示例
SELECT GET_REGION('139.209.57.***');-- 吉林省
使用函數(shù)。
使用如下腳本,新建一個(gè)odps sql節(jié)點(diǎn)。
SELECT user_id ,user_regip ,GET_REGION(user_regip) AS region FROM dim_ec_mbr_user_info WHERE ds LIKE '%%' LIMIT 10
運(yùn)行成功后返回結(jié)果如下:
-- 返回結(jié)果 -- user_id user_regip region -- 17088752 139.209.57.XXX 吉林省 -- 78468007 106.90.172.XXX 重慶市 -- 42307553 121.76.42.XXX 上海市 -- 48261858 182.83.94.XXX 陜西省 -- 10124462 139.199.116.XX 未知 -- 52070735 123.232.226.XX 山東省 -- 55604197 222.46.88.XX 浙江省 -- 13785369 36.58.241.XX 安徽省 -- 38112363 210.43.197.XXX 湖南省 -- 60806246 36.61.121.XX 安徽省
(可選)建Hologres外表,加速分析“ads_ec_ec360_gmv_kpi_overview 電商360KPI概覽”
您需要先創(chuàng)建Hologres數(shù)據(jù)源,并將其綁定至數(shù)據(jù)開發(fā)才可參考下文進(jìn)行創(chuàng)建Hologres外表的操作步驟。
創(chuàng)建調(diào)度任務(wù)。
節(jié)點(diǎn)類型:Hologres SQL。
節(jié)點(diǎn)名:ads_ec_ec360_gmv_kpi_overview_bi。
業(yè)務(wù)流程:業(yè)務(wù)流程、零售數(shù)倉公共層、Hologres、數(shù)據(jù)開發(fā)。
開發(fā)SQL。
BEGIN; CREATE FOREIGN TABLE IF NOT EXISTS ads_ec_ec360_gmv_kpi_overview_bi ( pay_ord_amt_fy DECIMAL(38,18) ,mbr_cnt_std BIGINT ,kpi_gmv_rate_fy DECIMAL(38,18) ,ds TEXT ) SERVER odps_server OPTIONS (project_name 'retail_e_commerce_2', table_name 'ads_ec_ec360_gmv_kpi_overview'); COMMENT ON FOREIGN TABLE "ads_ec_ec360_gmv_kpi_overview_bi" IS '電商360KPI概覽'; COMMENT ON COLUMN "ads_ec_ec360_gmv_kpi_overview_bi".pay_ord_amt_fy IS '財(cái)年_訂單支付成功金額'; COMMENT ON COLUMN "ads_ec_ec360_gmv_kpi_overview_bi".mbr_cnt_std IS '歷史截至當(dāng)日_存量會員數(shù)'; COMMENT ON COLUMN "ads_ec_ec360_gmv_kpi_overview_bi".kpi_gmv_rate_fy IS '財(cái)年_成交金額完成度'; COMMENT ON COLUMN "ads_ec_ec360_gmv_kpi_overview_bi".ds IS '業(yè)務(wù)日期, yyyymmdd'; COMMIT; -- 注意當(dāng)前執(zhí)行賬號要申請?jiān)磑dps生產(chǎn)表權(quán)限 SELECT * FROM ads_ec_ec360_gmv_kpi_overview_bi WHERE ds like '%' limit 10;
調(diào)度配置。
調(diào)度參數(shù):無。
時(shí)間屬性:使用默認(rèn)的配置,日調(diào)度。
調(diào)度依賴:
retail_e_commerce_2.ads_ec_ec360_gmv_kpi_overview。
:retail_e_commerce_2.502654249_out、retail_e_commerce_2.ads_ec_ec360_gmv_kpi_overview_bi。
:
(可選)建EMR Hive內(nèi)表
您需要先注冊EMR集群至DataWorks才可參考下文進(jìn)行創(chuàng)建EMR Hive內(nèi)表的操作步驟,本操作步驟為能力演示,不操作不影響后續(xù)實(shí)驗(yàn)。
創(chuàng)建調(diào)度任務(wù)。
節(jié)點(diǎn)類型:EMR hHive。
節(jié)點(diǎn)名:demo_emr_hive。
業(yè)務(wù)流程:業(yè)務(wù)流程、DEMO_EMR_DLA、EMR、數(shù)據(jù)開發(fā)。
開發(fā)SQL。
CREATE TABLE IF NOT EXISTS demo_emr_hive ( id STRING COMMENT 'ID' ,name STRING COMMENT '姓名' ) PARTITIONED BY ( pt STRING ) ; INSERT INTO TABLE demo_emr_hive PARTITION(pt = '${bizdate}') VALUES ('001','張三'),('002','李四') ;
調(diào)度配置。
僅演示,不發(fā)布調(diào)度。
發(fā)布節(jié)點(diǎn)
將以上所有節(jié)點(diǎn)依次發(fā)布到生產(chǎn)環(huán)境,如果已經(jīng)發(fā)布的則不需要再發(fā)布。
若您提交節(jié)點(diǎn)報(bào)錯(cuò),請參見提交節(jié)點(diǎn)報(bào)錯(cuò):當(dāng)前節(jié)點(diǎn)依賴的父節(jié)點(diǎn)輸出名不存在和提交節(jié)點(diǎn)時(shí)提示:輸入輸出和代碼血緣分析不匹配。