本文以查询某区域内各城市的销售总额排行
为例,为您介绍组件的使用。
前提条件
已创建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;
文档内容是否对您有帮助?