DataWorks快速入門
DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大數(shù)據(jù)引擎,為數(shù)據(jù)倉庫、數(shù)據(jù)湖、湖倉一體等解決方案提供統(tǒng)一的全鏈路大數(shù)據(jù)開發(fā)治理平臺。本文以DataWorks的部分核心功能為例,指導(dǎo)您使用DataWorks接入數(shù)據(jù)并進行業(yè)務(wù)處理、周期調(diào)度以及數(shù)據(jù)可視化。
入門簡介
通過本快速入門,您可以快速完成以下操作。
數(shù)據(jù)同步:通過DataWorks的數(shù)據(jù)集成模塊,創(chuàng)建離線同步任務(wù),將業(yè)務(wù)數(shù)據(jù)同步至大數(shù)據(jù)計算平臺(如MaxCompute數(shù)倉)。
數(shù)據(jù)清洗:在DataWorks的數(shù)據(jù)開發(fā)模塊中,對業(yè)務(wù)數(shù)據(jù)進行處理、分析和挖掘。
數(shù)據(jù)展示:在DataWorks的數(shù)據(jù)分析模塊中,將分析結(jié)果轉(zhuǎn)化為圖表,便于業(yè)務(wù)人員理解。
周期性調(diào)度:為數(shù)據(jù)同步和數(shù)據(jù)清洗流程配置周期性調(diào)度,使其定時執(zhí)行。
前提條件
為確保本教程可以順利進行,推薦使用阿里云主賬號或具備AliyunDataWorksFullAccess權(quán)限的RAM用戶。具體操作,請參見準(zhǔn)備阿里云賬號(主賬號)或準(zhǔn)備RAM用戶(子賬號)。
DataWorks提供了完善的權(quán)限管控機制,支持在產(chǎn)品級與模塊級對權(quán)限進行管控,如果您需要更精細的權(quán)限控制,請參見DataWorks權(quán)限體系功能概述。
準(zhǔn)備工作
創(chuàng)建工作空間并綁定資源組。
本教程以華東2(上海)地域為例,介紹DataWorks快速入門,您需要登錄DataWorks管理控制臺,切換至華東2(上海)地域,查看該地域是否開通DataWorks。
說明本教程以華東2(上海)為例,在實際使用中,請根據(jù)實際業(yè)務(wù)數(shù)據(jù)所在位置確定開通地域:
如果您的業(yè)務(wù)數(shù)據(jù)位于阿里云的其他云服務(wù),請選擇與其相同的地域。
如果您的業(yè)務(wù)在本地,需要通過公網(wǎng)訪問,請選擇與您實際地理位置較近的地域,以降低訪問延遲。
如果未開通,單擊0元組合購買,通過組合購買,一站式完成DataWorks開通、默認空間創(chuàng)建以及資源組綁定。
配置組合購買頁相關(guān)參數(shù)。
參數(shù)
說明
示例
地域
選擇需要開通DataWorks的地域。
華東2(上海)
DataWorks
選擇需要購買的DataWorks版本。
說明本教程以基礎(chǔ)版為例,所有版本均可體驗本教程所涉及的功能,您可以參考DataWorks各版本支持的功能詳情,根據(jù)實際業(yè)務(wù)需要,選擇合適的DataWorks版本。
基礎(chǔ)版
DataWorks資源組
通過DataWorks進行數(shù)據(jù)集成、數(shù)據(jù)開發(fā)、數(shù)據(jù)調(diào)度等任務(wù)時,需要消耗計算資源,您需要配套購買資源組,以確保后續(xù)任務(wù)的順利運行。
付費模式:按量付費
資源組名稱:自定義
專有網(wǎng)絡(luò)(VPC)、交換機(V-Switch):選擇已有的VPC和交換機。
說明如當(dāng)前地域沒有可用的VPC和交換機,請單擊參數(shù)說明中對應(yīng)的控制臺鏈接前往創(chuàng)建。VPC和交換機的更多信息,請參見什么是專有網(wǎng)絡(luò)。
服務(wù)關(guān)聯(lián)角色:根據(jù)頁面提示,創(chuàng)建服務(wù)關(guān)聯(lián)角色。
勾選服務(wù)協(xié)議后,單擊確認訂單并支付,完成后續(xù)支付。
說明完成購買后,系統(tǒng)將自動創(chuàng)建工作空間和資源組,并將資源組綁定至工作空間。
你可以前往DataWorks工作空間列表,切換至華東2(上海)地域,查看已創(chuàng)建的工作空間。
如果已開通,則需要手動創(chuàng)建本次教程使用的工作空間、資源組及資源組綁定操作。
創(chuàng)建工作空間。
單擊DataWorks管理控制臺左側(cè)導(dǎo)航欄的工作空間,進入工作空間列表頁面,然后單擊創(chuàng)建工作空間。
在創(chuàng)建工作空間頁面,自定義工作空間名稱,然后單擊創(chuàng)建工作空間。
創(chuàng)建資源組。
單擊DataWorks管理控制臺左側(cè)導(dǎo)航欄的資源組,進入資源組列表,然后單擊新建資源組。
在DataWorks通用資源組(按量付費)頁面,配置如下參數(shù)。
參數(shù)
說明
資源組名稱
自定義。
專有網(wǎng)絡(luò)(VPC)、交換機(V-Switch)
選擇已有的VPC和交換機,如當(dāng)前地域沒有,請單擊參數(shù)說明中對應(yīng)的控制臺鏈接前往創(chuàng)建。
服務(wù)關(guān)聯(lián)角色
根據(jù)頁面提示,創(chuàng)建DataWorks服務(wù)關(guān)聯(lián)角色。
單擊立即購買,完成后續(xù)支付。
為工作空間綁定資源組。
單擊DataWorks管理控制臺左側(cè)導(dǎo)航欄的資源組,進入資源組列表頁面,找到已創(chuàng)建的資源組,單擊操作列的
。在綁定工作空間頁面,找到已創(chuàng)建的DataWorks工作空間,單擊其操作列的綁定。
為資源組綁定的VPC配置EIP。
本教程使用的電商平臺公開測試業(yè)務(wù)數(shù)據(jù)需要通過公網(wǎng)獲取,而上一步創(chuàng)建的通用型資源組默認不具備公網(wǎng)訪問能力,需要為資源組綁定的VPC配置公網(wǎng)NAT網(wǎng)關(guān),添加EIP,使其與公開數(shù)據(jù)網(wǎng)絡(luò)打通,從而獲取數(shù)據(jù)。
登錄專有網(wǎng)絡(luò)-公網(wǎng)NAT網(wǎng)關(guān)控制臺,在頂部菜單欄切換至華東2(上海)地域。
單擊創(chuàng)建公網(wǎng)NAT網(wǎng)關(guān)。配置相關(guān)參數(shù)。
參數(shù)
取值
所屬地域
華東2(上海)。
所屬專有網(wǎng)絡(luò)
選擇資源組綁定的VPC和交換機。
您可以前往DataWorks管理控制臺,切換地域后,在左側(cè)導(dǎo)航欄單擊資源組列表,找到已創(chuàng)建的資源組,然后單擊操作列的網(wǎng)絡(luò)設(shè)置,在數(shù)據(jù)調(diào)度 & 數(shù)據(jù)集成區(qū)域查看綁定專有網(wǎng)絡(luò)和交換機。VPC和交換機的更多信息,請參見什么是專有網(wǎng)絡(luò)。
關(guān)聯(lián)交換機
訪問模式
VPC全通模式(SNAT)。
彈性公網(wǎng)IP實例
新購彈性公網(wǎng)IP。
關(guān)聯(lián)角色創(chuàng)建
首次創(chuàng)建NAT網(wǎng)關(guān)時,需要創(chuàng)建服務(wù)關(guān)聯(lián)角色,請單擊創(chuàng)建關(guān)聯(lián)角色。
說明上表中未說明的參數(shù)保持默認值即可。
單擊立即購買,勾選服務(wù)協(xié)議后,單擊立即開通,完成購買。
操作步驟
本文以如下場景為例,指導(dǎo)您快速體驗DataWorks的相關(guān)功能:
假設(shè)某一電商平臺將商品信息、訂單信息存儲在MySQL數(shù)據(jù)庫中,需要定期對訂單數(shù)據(jù)進行分析,通過可視化的方式查看每日最暢銷商品類目排名表。
步驟一:數(shù)據(jù)同步
創(chuàng)建數(shù)據(jù)源。
DataWorks通過創(chuàng)建數(shù)據(jù)源的方式,接入數(shù)據(jù)來源和數(shù)據(jù)去向,因此,本步驟需要分別創(chuàng)建MySQL和MaxCompute兩個數(shù)據(jù)源。
MySQL數(shù)據(jù)源,用于連接數(shù)據(jù)來源(存儲業(yè)務(wù)數(shù)據(jù)的MySQL數(shù)據(jù)庫),為本教程提供原始業(yè)務(wù)數(shù)據(jù)。
說明您無需準(zhǔn)備本教程使用的原始業(yè)務(wù)數(shù)據(jù),為方便測試和學(xué)習(xí),DataWorks為您提供測試數(shù)據(jù)集,相關(guān)表數(shù)據(jù)已存儲在公網(wǎng)MySQL數(shù)據(jù)庫中,您只需創(chuàng)建MySQL數(shù)據(jù)源接入即可。
進入管理中心頁面。
登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的 ,在下拉框中選擇對應(yīng)工作空間后單擊進入管理中心。
在左側(cè)導(dǎo)航欄單擊
,然后單擊新增數(shù)據(jù)源,選擇數(shù)據(jù)源類型為MySQL數(shù)據(jù)源。配置MySQL數(shù)據(jù)源相關(guān)參數(shù)。
說明表中未說明的參數(shù)保持默認值即可。
首次新增數(shù)據(jù)源時,需要完成跨服務(wù)授權(quán),請根據(jù)頁面提示,授權(quán)服務(wù)關(guān)聯(lián)角色AliyunDIDefaultRole。
參數(shù)
描述
數(shù)據(jù)源名稱
本示例為MySQL_Source。
配置模式
選擇連接串模式。
連接地址
單擊新增地址。
主機地址IP:
rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com
端口號:
3306
。
重要本教程提供的數(shù)據(jù)僅作為阿里云大數(shù)據(jù)開發(fā)治理平臺 DataWorks數(shù)據(jù)應(yīng)用實操使用,所有數(shù)據(jù)均為測試數(shù)據(jù),并且僅支持在數(shù)據(jù)集成模塊讀取數(shù)據(jù)。
數(shù)據(jù)庫名稱
配置為
retail_e_commerce
。用戶名
輸入用戶名
workshop
。密碼
輸入密碼
workshop#2017
。在連接配置區(qū)域,找到工作空間已綁定的資源組,單擊連通狀態(tài)列的測試連通性。
說明如果MySQL數(shù)據(jù)源連通性測試失敗,請檢查是否為資源組綁定的VPC配置EIP,MySQL數(shù)據(jù)源需要資源組具備公網(wǎng)訪問能力。
單擊完成創(chuàng)建。
MaxCompute數(shù)據(jù)源,用于連接數(shù)據(jù)去向(MaxCompute數(shù)倉),將MaxCompute數(shù)據(jù)源綁定至數(shù)據(jù)開發(fā)后,能夠為本教程提供數(shù)據(jù)存儲和計算能力。
如果您的項目空間中存在已添加的MaxCompute數(shù)據(jù)源,則無需進行此步驟。
如果您的項目空間中沒有添加MaxCompute數(shù)據(jù)源,在參考如下步驟創(chuàng)建。
在管理中心左側(cè)導(dǎo)航欄單擊
,然后單擊新增數(shù)據(jù)源,選擇數(shù)據(jù)源類型為MaxCompute數(shù)據(jù)源。配置MaxCompute數(shù)據(jù)源相關(guān)參數(shù)。
說明表中未說明的參數(shù)保持默認值即可。
參數(shù)
描述
數(shù)據(jù)源名稱
本示例為MaxCompute_Source。
地域
選擇MaxCompute數(shù)據(jù)源所在地域。
MaxCompute項目名稱
選擇創(chuàng)建MaxCompute項目。
計算資源付費類型
選擇按量付費。
說明如果按量付費不可選,請單擊按量付費后的去開通,完成MaxCompute服務(wù)的開通。
默認Quota
下拉選擇默認已存在的Quota。
默認訪問身份
阿里云主賬號。
在連接配置區(qū)域,找到工作空間已綁定的資源組,單擊連通狀態(tài)列的測試連通性。
說明MaxCompute項目名稱全局唯一,如測試連通性不通過,報錯提示為
ErrorMessage:[ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project xxx.
,是因為項目名稱已存在,請修改項目名稱后再試。單擊完成創(chuàng)建。
數(shù)據(jù)開發(fā)綁定MaxCompute數(shù)據(jù)源。
需要先將MaxCompute數(shù)據(jù)源綁定至數(shù)據(jù)開發(fā),后續(xù)才能在數(shù)據(jù)開發(fā)模塊中對MaxCompute的數(shù)據(jù)進行處理。
單擊左上角圖標(biāo),在彈出頁面中單擊
。在左側(cè)導(dǎo)航欄單擊數(shù)據(jù)源(),找到已創(chuàng)建的MaxCompute數(shù)據(jù)源,單擊綁定。
說明如果您的數(shù)據(jù)開發(fā)模塊已綁定了MaxCompute數(shù)據(jù)源,則無需進行此步驟。
創(chuàng)建虛擬節(jié)點,用于統(tǒng)籌管理整個電商平臺銷售數(shù)據(jù)分析的業(yè)務(wù)流程。該節(jié)點為空跑任務(wù),無須編輯代碼。
在左側(cè)導(dǎo)航欄單擊圖標(biāo),進入數(shù)據(jù)開發(fā)頁面,找到
,然后右鍵Workflow,選擇 ,自定義節(jié)點名稱,本教程以Workshop
為例。創(chuàng)建離線同步任務(wù)。
本教程使用的測試數(shù)據(jù)涉及兩張表(商品信息源表
item_info
和訂單信息源表trade_order
),這兩張表存儲于MySQL數(shù)據(jù)源關(guān)聯(lián)的MySQL數(shù)據(jù)庫中,本步驟需要分別創(chuàng)建兩個離線同步節(jié)點(節(jié)點名稱以ods_item_info
和ods_trade_order
為例),用于將item_info
表和trade_order
表同步至MaxCompute數(shù)據(jù)源關(guān)聯(lián)的MaxCompute數(shù)倉中,然后再進行后續(xù)數(shù)據(jù)開發(fā)。右鍵Workflow,選擇
。在新建節(jié)點頁面,設(shè)置名稱為ods_item_info。
配置數(shù)據(jù)來源為已創(chuàng)建的MySQL數(shù)據(jù)源,數(shù)據(jù)去向為已綁定至數(shù)據(jù)開發(fā)的MaxCompute數(shù)據(jù)源,中間的資源組選擇工作空間已綁定的資源組,然后測試連通性都為可連通后,單擊下一步。
配置數(shù)據(jù)來源和數(shù)據(jù)去向的相關(guān)參數(shù)。
說明表中未說明的參數(shù)保持默認值即可。
配置區(qū)域
參數(shù)
ods_item_info離線同步節(jié)點取值
數(shù)據(jù)來源
表
item_info
數(shù)據(jù)去向
表
單擊一鍵生成目標(biāo)表結(jié)構(gòu),在新建表窗口中,修改建表語句,將表名修改為
ods_item_info
,然后單擊新建表。通道控制
臟數(shù)據(jù)策略
配置為不容忍臟數(shù)據(jù)。
單擊離線同步任務(wù)配置窗口頂部的保存(),然后單擊帶參運行()。
重要在離線計算場景下,
bizdate
為業(yè)務(wù)交易發(fā)生的日期,也常被稱為業(yè)務(wù)日期(business date)。例如,今天統(tǒng)計前一天的營業(yè)額,此處的前一天,指交易發(fā)生的日期,也就是業(yè)務(wù)日期。帶參運行時,自定義參數(shù)取值保持默認(當(dāng)前時間的前一天)即可。如果您在此時修改了
bizdate
取值,請在后續(xù)本文所有節(jié)點涉及帶參運行時,同步修改bizdate
取值。
右鍵Workflow,選擇
。在新建節(jié)點頁面,設(shè)置名稱為ods_trade_order。
配置數(shù)據(jù)來源為已創(chuàng)建的MySQL數(shù)據(jù)源,數(shù)據(jù)去向為已綁定至數(shù)據(jù)開發(fā)的MaxCompute數(shù)據(jù)源,中間的資源組選擇工作空間已綁定的資源組,然后測試連通性都為可連通后,單擊下一步。
配置數(shù)據(jù)來源和數(shù)據(jù)去向的相關(guān)參數(shù)。
說明表中未說明的參數(shù)保持默認值即可。
配置區(qū)域
參數(shù)
ods_trade_order離線同步節(jié)點取值
數(shù)據(jù)來源
表
trade_order
數(shù)據(jù)去向
表
單擊一鍵生成目標(biāo)表結(jié)構(gòu),在新建表窗口中,修改建表語句,將表名修改為
ods_trade_order
,然后單擊新建表。通道控制
臟數(shù)據(jù)策略
配置為不容忍臟數(shù)據(jù)。
單擊離線同步任務(wù)配置窗口頂部的保存(),然后單擊帶參運行()。
步驟二:數(shù)據(jù)清洗
數(shù)據(jù)已從MySQL同步至MaxCompute后,獲得兩張數(shù)據(jù)表(商品信息表ods_item_info
和訂單信息表ods_trade_order
),您可以在DataWorks的數(shù)據(jù)開發(fā)模塊對表中數(shù)據(jù)進行清洗、處理和分析,從而獲取每日最暢銷商品類目排名表。
運行ODPS節(jié)點時,會展示費用預(yù)估,由于每一個ODPS節(jié)點配置的SQL中同時包括CREATE和INSERT語句,INSERT時,表還未創(chuàng)建,因此可能提示預(yù)估費用失敗,請忽略此報錯,直接運行即可。
DataWorks提供調(diào)度參數(shù),可實現(xiàn)代碼動態(tài)入?yún)?,您可在SQL代碼中通過
${變量名}
的方式定義代碼中的變量,并在調(diào)度配置 > 調(diào)度參數(shù)處,為該變量賦值。調(diào)度參數(shù)支持的格式,詳情請參見調(diào)度參數(shù)支持的格式。本示例SQL中使用了調(diào)度參數(shù)${bizdate}
,表示業(yè)務(wù)日期為前一天。
創(chuàng)建
dim_item_info
節(jié)點。基于
ods_item_info
表,處理商品維度數(shù)據(jù),產(chǎn)出商品基礎(chǔ)信息維度表dim_item_info
。右鍵Workflow,選擇
,在新建節(jié)點頁面,設(shè)置名稱為dim_item_info
后,單擊確認,配置如下SQL。CREATE TABLE IF NOT EXISTS dim_item_info ( gmt_modified STRING COMMENT '商品最后修改日期', gmt_create STRING COMMENT '商品創(chuàng)建時間', item_id BIGINT COMMENT '商品數(shù)字ID', title STRING COMMENT '商品標(biāo)題', sub_title STRING COMMENT '商品子標(biāo)題', pict_url STRING COMMENT '主圖URL', desc_path STRING COMMENT '商品描述的路徑', item_status BIGINT COMMENT '商品狀態(tài)1:確認通過0:未確認通過', last_online_time DATETIME COMMENT '最近一次開始銷售時間,商品上架時間', last_offline_time DATETIME COMMENT '銷售結(jié)束時間,表示一個銷售周期的結(jié)束,僅作用于拍賣商品', duration BIGINT COMMENT '有效期,銷售周期,只有兩個值,7天或14天', reserve_price DOUBLE COMMENT '當(dāng)前價格', secure_trade_ordinary_post_fee DOUBLE COMMENT '平郵費用', secure_trade_fast_post_fee DOUBLE COMMENT '快遞費用', secure_trade_ems_post_fee DOUBLE COMMENT 'EMS郵費', last_online_quantity BIGINT COMMENT '商品最近一次上架時的庫存數(shù)量', features STRING COMMENT '商品特征', cate_id BIGINT COMMENT '商品葉子類目ID', cate_name STRING COMMENT '商品葉子類目名稱', commodity_id BIGINT COMMENT '品類ID', commodity_name STRING COMMENT '品類名稱', is_virtual STRING COMMENT '是否虛擬商品', shop_id BIGINT COMMENT '商家ID', shop_nick STRING COMMENT '商家NICK', is_deleted BIGINT COMMENT '類目是否刪除' ) COMMENT '商品基礎(chǔ)信息維度表' PARTITIONED BY (pt STRING COMMENT '業(yè)務(wù)日期, yyyymmdd') LIFECYCLE 365; -- 插入數(shù)據(jù)到 dim_item_info 表 INSERT OVERWRITE TABLE dim_item_info PARTITION(pt='${bizdate}') SELECT gmt_create, gmt_modified, item_id, title, sub_title, pict_url, desc_path, item_status, last_online_time, last_offline_time, duration, cast(reserve_price as DOUBLE), cast(secure_trade_ordinary_post_fee as DOUBLE), cast(secure_trade_fast_post_fee as DOUBLE), cast(secure_trade_ems_post_fee as DOUBLE), last_online_quantity, features, cate_id, cate_name, commodity_id, commodity_name, is_virtual, shop_id, shop_nick, is_deleted FROM ods_item_info WHERE pt = '${bizdate}';
單擊ODPS SQL配置窗口頂部的保存(),然后單擊帶參運行()。
創(chuàng)建
dwd_trade_order
節(jié)點。基于
ods_trade_order
表,對訂單的詳細交易數(shù)據(jù)進行初步清洗、轉(zhuǎn)換和業(yè)務(wù)邏輯處理,產(chǎn)出交易下單明細事實表dwd_trade_order
。右鍵Workflow,選擇
,在新建節(jié)點頁面,設(shè)置名稱為dwd_trade_order
后,單擊確認,配置如下SQL。CREATE TABLE IF NOT EXISTS dwd_trade_order ( id BIGINT COMMENT '主鍵,去重后的最新id', gmt_create DATETIME COMMENT '創(chuàng)建時間', gmt_modified DATETIME COMMENT '修改時間', sub_order_id BIGINT COMMENT '子訂單ID', parent_order_id BIGINT COMMENT '父訂單ID', buyer_id BIGINT COMMENT '買家數(shù)字id', buyer_nick STRING COMMENT '買家昵稱,處理空值', item_id BIGINT COMMENT '商品數(shù)字id', item_price DECIMAL(38,18) COMMENT '商品價格,單位分', buy_amount BIGINT COMMENT '購買數(shù)量', biz_type BIGINT COMMENT '交易類型', memo STRING COMMENT '備注,處理空值', pay_status BIGINT COMMENT '支付狀態(tài)', logistics_status BIGINT COMMENT '物流狀態(tài)', status BIGINT COMMENT '狀態(tài)', seller_memo STRING COMMENT '賣家的給交易的備注', buyer_memo STRING COMMENT '買家給交易的備注', clean_ip STRING COMMENT '清洗后的買家IP,過濾無效格式', end_time DATETIME COMMENT '交易結(jié)束時間', pay_time DATETIME COMMENT '付款的時間', is_sub BIGINT COMMENT '是否是子訂單1表示子訂單', is_parent BIGINT COMMENT '是否是父訂單1表示父訂單', shop_id BIGINT COMMENT '商家id', total_fee DECIMAL(38,18) COMMENT '去除折扣和調(diào)整后的子訂單費用', is_large_order_flag BOOLEAN COMMENT '是否為大額訂單標(biāo)志' ) COMMENT '交易下單明細事實表,包含初步清洗和業(yè)務(wù)邏輯處理' PARTITIONED BY (pt STRING COMMENT '業(yè)務(wù)日期, yyyymmdd') LIFECYCLE 365; -- 數(shù)據(jù)生命周期設(shè)置為365天 INSERT OVERWRITE TABLE dwd_trade_order PARTITION(pt='${bizdate}') SELECT MAX(id) AS id, -- 假設(shè)使用最新的id作為去重標(biāo)準(zhǔn) gmt_create, gmt_modified, sub_order_id, parent_order_id, buyer_id, COALESCE(buyer_nick, '') AS buyer_nick, -- 處理buyer_nick為空的情況 item_id, item_price, buy_amount, biz_type, COALESCE(memo, '') AS memo, -- 處理memo為空的情況 pay_status, logistics_status, status, seller_memo, buyer_memo, CASE WHEN ip LIKE '__.__.__.__' THEN NULL -- 過濾無效IP格式 ELSE ip END AS clean_ip, end_time, pay_time, is_sub, is_parent, shop_id, total_fee, CASE WHEN total_fee >= 10000 THEN TRUE -- 假設(shè)大于10000分的訂單為大額訂單 ELSE FALSE END AS is_large_order_flag -- 添加業(yè)務(wù)邏輯標(biāo)志 FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY buyer_id, item_id, gmt_create ORDER BY id DESC) AS rn -- 用于去重的行號 FROM ods_trade_order WHERE pt = '${bizdate}' ) AS sub_query WHERE rn = 1 -- 僅保留每個去重組的第一條記錄 GROUP BY 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, clean_ip, end_time, pay_time, is_sub, is_parent, shop_id, total_fee, is_large_order_flag;
單擊ODPS SQL配置窗口頂部的保存(),然后單擊帶參運行()。
創(chuàng)建
dws_daily_category_sales
節(jié)點。基于
dwd_trade_order
表和dim_item_info
表,對DWD層經(jīng)過清洗和標(biāo)準(zhǔn)化的明細數(shù)據(jù)進行匯總,產(chǎn)出每日商品類目銷售匯總表dws_daily_category_sales
。右鍵Workflow,選擇
,在新建節(jié)點頁面,設(shè)置名稱為dws_daily_category_sales
后,單擊確認,配置如下SQL。CREATE TABLE IF NOT EXISTS dws_daily_category_sales ( cate_id BIGINT COMMENT '商品葉子類目ID', cate_name STRING COMMENT '商品葉子類目名稱', total_sales_amount DECIMAL(38,18) COMMENT '商品類目總銷售額,單位分', order_count BIGINT COMMENT '訂單數(shù)量' ) COMMENT '每日商品類目銷售匯總表' PARTITIONED BY (pt STRING COMMENT '業(yè)務(wù)日期, yyyymmdd') LIFECYCLE 365; INSERT OVERWRITE TABLE dws_daily_category_sales PARTITION(pt='${bizdate}') SELECT i.cate_id, i.cate_name, SUM(t.total_fee) AS total_sales_amount, COUNT(DISTINCT t.id) AS order_count FROM dwd_trade_order t JOIN dim_item_info i ON t.item_id = i.item_id AND t.pt = i.pt WHERE t.pt = '${bizdate}' GROUP BY t.pt, i.cate_id, i.cate_name;
單擊ODPS SQL配置窗口頂部的保存(),然后單擊帶參運行()。
創(chuàng)建
ads_top_selling_categories
節(jié)點。基于
dws_daily_category_sales
表,產(chǎn)出每日最暢銷商品類目排名表ads_top_selling_categories
。右鍵Workflow,選擇
,在新建節(jié)點頁面,設(shè)置名稱為ads_top_selling_categories
后,單擊確認,配置如下SQL。CREATE TABLE IF NOT EXISTS ads_top_selling_categories ( rank BIGINT COMMENT '銷量排名', cate_id BIGINT COMMENT '商品葉子類目ID', cate_name STRING COMMENT '商品葉子類目名稱', total_sales_amount DECIMAL(38,18) COMMENT '商品類目總銷售額,單位分', order_count BIGINT COMMENT '訂單數(shù)量' ) COMMENT '每日最暢銷商品類目排名表' PARTITIONED BY (pt STRING COMMENT '業(yè)務(wù)日期, yyyymmdd'); INSERT OVERWRITE TABLE ads_top_selling_categories PARTITION(pt='${bizdate}') SELECT rank, cate_id, cate_name, total_sales_amount, order_count FROM ( SELECT DENSE_RANK() OVER(ORDER BY total_sales_amount DESC) AS rank, cate_id, cate_name, total_sales_amount, order_count FROM ( SELECT cate_id, cate_name, SUM(total_sales_amount) AS total_sales_amount, SUM(order_count) AS order_count FROM dws_daily_category_sales WHERE pt = '${bizdate}' GROUP BY cate_id, cate_name ) agg_sub ) agg_outer WHERE rank <= 10;
單擊ODPS SQL配置窗口頂部的保存(),然后單擊帶參運行()。
步驟三:數(shù)據(jù)展示
您已經(jīng)將從MySQL中獲取的原始測試數(shù)據(jù),經(jīng)過數(shù)據(jù)開發(fā)處理,匯總于表ads_top_selling_categories
中,現(xiàn)在可查詢表數(shù)據(jù),查看數(shù)據(jù)分析后的結(jié)果。
單擊左上角圖標(biāo),在彈出頁面中單擊
。在我的文件后單擊
,自定義文件名后單擊確定。在SQL查詢頁面,配置如下SQL。
SELECT * FROM ads_top_selling_categories WHERE pt=${bizdate};
單擊頂部的運行(),根據(jù)頁面提示,在右上角選擇MaxCompute數(shù)據(jù)源后單擊確定,然后在成本預(yù)估頁面,單擊運行。
在查詢結(jié)果中單擊,查看可視化圖表結(jié)果,您可以單擊圖表右上角的自定義圖表樣式。自定義圖表樣式的更多信息,請參見增強分析(卡片和報告)。
您也可以單擊圖表右上角保存,將圖表保存為卡片,然后在左側(cè)導(dǎo)航欄單擊卡片()查看。
步驟四:周期性調(diào)度
通過完成前文操作步驟,您已經(jīng)獲取了前一天各類商品的銷售數(shù)據(jù),但是,如果需要每天獲取最新的銷售數(shù)據(jù),則可以為數(shù)據(jù)開發(fā)中各任務(wù)節(jié)點配置周期任務(wù),使其周期性定時執(zhí)行。
為簡化操作,快速入門教程以可視化方式為業(yè)務(wù)流程配置調(diào)度,DataWorks還支持手動精細化配置,各任務(wù)節(jié)點支持根據(jù)SQL自動解析上下游依賴,調(diào)度配置的更多信息,請參見任務(wù)調(diào)度配置。
單擊左上角圖標(biāo),在彈出頁面中單擊
。右鍵單擊業(yè)務(wù)流程Workflow,單擊看板進入畫布,在畫布中移動各節(jié)點位置并按下圖拖拽出各節(jié)點的上下游依賴關(guān)系。
單擊右側(cè)流程參數(shù),配置參數(shù)名稱為
bizdate
,參數(shù)值或表達式為$bizdate
,單擊保存。雙擊虛擬節(jié)點(Workshop),配置如下周期調(diào)度參數(shù)后,單擊頂部的保存()。
說明其他參數(shù)保持默認即可。
切換至Workflow業(yè)務(wù)流程頁簽,單擊頂部的運行,確認運行業(yè)務(wù)流程,參數(shù)bizdate填寫為前一天(例如今天為20240731,則此處填寫為20240730),單擊確定測試所有流程是否均能成功運行。
所有節(jié)點均能成功運行后,點擊頂部的提交,將流程中所有節(jié)點提交至運維中心。
單擊左上角圖標(biāo),在彈出頁面單擊
。在
中即可看到已創(chuàng)建的周期任務(wù)。說明如需展示如下圖的所有上下游依賴節(jié)點,請右鍵單擊Workshop節(jié)點,選擇
。
下一步
本教程中各模塊的更多操作細節(jié)及參數(shù)解釋,請參見數(shù)據(jù)集成、數(shù)據(jù)開發(fā)、數(shù)據(jù)分析和任務(wù)調(diào)度配置。
除本教程介紹的模塊外,DataWorks還支持數(shù)據(jù)建模、數(shù)據(jù)質(zhì)量、數(shù)據(jù)保護傘、數(shù)據(jù)服務(wù)等多個模塊,為您提供一站式數(shù)據(jù)監(jiān)控與運維。
您還可以體驗更多DataWorks實踐教程,具體內(nèi)容,請參見場景教程。
附錄:資源釋放與清理
如果您需要釋放本次教程所創(chuàng)建的資源,具體操作步驟如下:
停止周期任務(wù)。
進入運維中心頁面。
登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的 ,在下拉框中選擇對應(yīng)工作空間后單擊進入運維中心。
在
中,勾選所有之前創(chuàng)建的周期任務(wù),然后在底部單擊 。
刪除數(shù)據(jù)開發(fā)節(jié)點并解綁MaxCompute數(shù)據(jù)源。
進入數(shù)據(jù)開發(fā)頁面。
登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的 ,在下拉框中選擇對應(yīng)工作空間后單擊進入數(shù)據(jù)開發(fā)。
在
中,找到已創(chuàng)建的離線同步節(jié)點和ODPS SQL節(jié)點,右鍵選擇刪除。在左側(cè)導(dǎo)航欄,單擊數(shù)據(jù)源,找到已綁定的MaxCompute數(shù)據(jù)源,單擊解綁。在確認窗口中勾選選項后單擊解綁。
刪除數(shù)據(jù)源。
進入管理中心頁面。
登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的 ,在下拉框中選擇對應(yīng)工作空間后單擊進入管理中心。
在左側(cè)導(dǎo)航欄單擊
,找到已創(chuàng)建的MySQL數(shù)據(jù)源和MaxCompute數(shù)據(jù)源,單擊操作列的刪除。在刪除窗口中單擊繼續(xù)。
刪除MaxCompute項目。
登錄MaxCompute管理控制臺,找到已創(chuàng)建的MaxCompute項目,單擊操作列的刪除,在確認窗口中勾選選項后單擊確定。
刪除公網(wǎng)NAT網(wǎng)關(guān)并釋放彈性公網(wǎng)IP。
登錄專有網(wǎng)絡(luò)-公網(wǎng)NAT網(wǎng)關(guān)控制臺,在頂部菜單欄切換至華東2(上海)地域。
找到已創(chuàng)建的公網(wǎng)NAT網(wǎng)關(guān),單擊操作列的
,在確認窗口中,勾選強制刪除,然后單擊確定。在左側(cè)導(dǎo)航欄單擊
,找到已創(chuàng)建的彈性公網(wǎng)IP,單擊操作列中 ,在確認窗口中單擊確定。