本文以查詢某區域內各城市的銷售總額排行
為例,為您介紹組件的使用。
前提條件
已創建SQL組件節點,詳情請參見創建并管理MaxCompute節點。
步驟一:定義組件
您需先參考定義SQL組件創建get_top_n
組件,組件配置詳情如下。
組件參數配置
參數分類
參數名稱
參數類型
參數描述
參數定義
輸入參數
myinputtable
table
指定的銷售明細數據表。
area_id string city_id string order_amt double rank bigint
topn
string
取銷售排行的前N名。
不涉及
輸出參數
myoutput
table
目標輸出表,用于獲取各個區域下指定前N名的城市排行。
area_id string city_id string order_amt double rank bigint
組件過程體定義
INSERT OVERWRITE TABLE @@{myoutput} PARTITION (pt='${bizdate}') SELECT r3.area_id, r3.city_id, r3.order_amt, r3.rank from ( SELECT area_id, city_id, rank, order_amt_1505468133993_sum as order_amt , order_number_1505468133991_sum, profit_amt_1505468134000_sum FROM (SELECT area_id, city_id, ROW_NUMBER() OVER (PARTITION BY r1.area_id ORDER BY r1.order_amt_1505468133993_sum DESC) AS rank, order_amt_1505468133993_sum, order_number_1505468133991_sum, profit_amt_1505468134000_sum FROM (SELECT area AS area_id, city AS city_id, SUM(order_amt) AS order_amt_1505468133993_sum, SUM(order_number) AS order_number_1505468133991_sum, SUM(profit_amt) AS profit_amt_1505468134000_sum FROM @@{myinputtable} WHERE SUBSTR(pt, 1, 8) IN ( '${bizdate}' ) GROUP BY area, city ) r1 ) r2 WHERE r2.rank >= 1 AND r2.rank <= @@{topn} ORDER BY area_id, rank limit 10000) r3;
步驟二:使用組件
后續步驟
當您完成當前節點的任務開發后,通常您可進行以下操作。
調度配置:配置節點的周期性調度屬性。任務需要周期性調度運行時,您需要設置節點后續實際運行過程中的重跑屬性、調度依賴關系等,操作詳情請參見任務調度屬性配置概述。
任務調試:對當前節點的代碼進行測試運行,確認代碼邏輯符合預期,操作詳情請參見任務調試流程。
任務發布:完成所有開發相關操作后,您需要將所有任務節點進行發布,發布后節點即會根據調度配置結果進行周期性運行,操作詳情請參見發布任務。
附錄:表結構說明
您需在ODPS SQL節點中創建銷售明細數據表和目標輸出表,詳情請參見開發ODPS SQL任務。
創建銷售明細數據表
銷售明細數據表的建表語句如下:
CREATE TABLE IF NOT EXISTS company_sales_record
(
order_id STRING COMMENT '訂單編號(PK)',
report_date STRING COMMENT '訂單日期',
customer_name STRING COMMENT '客戶名稱',
order_level STRING COMMENT '訂單等級',
order_number DOUBLE COMMENT '訂單數量',
order_amt DOUBLE COMMENT '訂單金額',
back_point DOUBLE COMMENT '折扣點',
shipping_type STRING COMMENT '運輸方式',
profit_amt DOUBLE COMMENT '利潤金額',
price DOUBLE COMMENT '單價',
shipping_cost DOUBLE COMMENT '運輸成本',
area STRING COMMENT '區域',
province STRING COMMENT '省份',
city STRING COMMENT '城市',
product_type STRING COMMENT '產品類型',
product_sub_type STRING COMMENT '產品小類',
product_name STRING COMMENT '產品名稱',
product_box STRING COMMENT '產品包箱',
shipping_date STRING COMMENT '運輸日期'
)
COMMENT '銷售數據的明細信息'
PARTITIONED BY
(
pt STRING
)
LIFECYCLE 365;
創建目標輸出表
您需創建存放輸出結果的目標表,建表語句如下:
CREATE TABLE IF NOT EXISTS company_sales_top_n
(
area STRING COMMENT '區域',
city STRING COMMENT '城市',
sales_amount DOUBLE COMMENT '銷售額',
rank BIGINT COMMENT '排名'
)
COMMENT '公司銷售排行榜'
PARTITIONED BY (pt STRING COMMENT '')
LIFECYCLE 365;
文檔內容是否對您有幫助?