Files
wiki/工作记录/曹强-订单分层算法落地方案v0.6/bidding_order_class_model_dataset.txt
T

215 lines
9.4 KiB
Plaintext

DROP TABLE IF EXISTS wanshifu_dw.ai_training_order_bidding_snapshot;
CREATE TABLE IF NOT EXISTS wanshifu_dw.ai_training_order_bidding_snapshot (
global_order_trace_id STRING COMMENT '订单全局id',
order_no STRING COMMENT '订单编号',
order_submit_time STRING COMMENT '订单创建时间',
order_cancel_time STRING COMMENT '订单取消时间',
goods_level_1_name STRING COMMENT '订单商品一级类目名称',
order_goods_cnt BIGINT COMMENT '订单商品数量',
order_serve_type_name STRING COMMENT '订单服务类型名称',
order_business_line_name STRING COMMENT '订单业务线名称',
order_business_line_type STRING COMMENT '订单业务线类型',
order_appoint_type_name STRING COMMENT '指派类型',
order_etp_flag STRING COMMENT '下单总包标识:0不是,1是',
user_id STRING COMMENT '用户id',
user_name STRING COMMENT '用户名称',
address STRING COMMENT '经营详情地址',
business_full_name STRING COMMENT '企业全称',
company_type STRING COMMENT '企业类型(e_commerce:电商、offline_store:线下门店、factory:工厂、logistics:物流)',
user_type STRING COMMENT '用户类型(1:普通 2:企业 3:新版企业用户 4:小程序用户 5:个人)',
order_onsite_sign_time STRING COMMENT '上门时间',
mst_serve_complete_last_time STRING COMMENT '完工时间',
goods_level_2_name STRING COMMENT '订单商品二级类目名称',
goods_level_3_name STRING COMMENT '订单商品三级类目名称',
order_total_amount DOUBLE COMMENT '订单总金额',
order_unit_price DOUBLE COMMENT '订单单价',
is_urgent_flag STRING COMMENT '是否加急',
city_name STRING COMMENT '城市名称',
offer_mst_cnt BIGINT COMMENT '报价量(人次)',
view_mst_cnt BIGINT COMMENT '查看量(人次)',
fifth_offer_duration_second BIGINT COMMENT '满5人报价时长(第5人报价时间 - 下单时间)',
tenth_offer_duration_second BIGINT COMMENT '满10人报价时长(第10人报价时间 - 下单时间)',
attention_cnt BIGINT COMMENT '商家师傅关注数',
merchant_total_orders BIGINT COMMENT '商家下的总订单量',
merchant_total_aftersales BIGINT COMMENT '商家产生的总售后单量',
ignore_cnt BIGINT COMMENT '商家被拉黑次数',
buyer_note STRING COMMENT '订单备注'
)
STORED AS ALIORC
TBLPROPERTIES (
'comment' = 'AI训练用报价招标订单快照表(非分区表)'
);
INSERT OVERWRITE TABLE wanshifu_dw.ai_training_order_bidding_snapshot
SELECT t1.global_order_trace_id -- 订单全局id
,t1.order_no -- 订单编号
,t1.order_submit_time -- 订单创建时间
,t1.order_cancel_time -- 订单取消时间
,t3.goods_level_1_name -- 订单商品一级类目名称
,CAST(t1.order_goods_cnt AS BIGINT) AS order_goods_cnt -- 订单商品数量
,t1.order_serve_type_name -- 订单服务类型名称
,t1.order_business_line_name -- 订单业务线名称
,t1.order_business_line_type -- 订单业务线类型
,t1.order_appoint_type_name --指派类型
,t1.order_etp_flag -- 下单总包标识:0不是,1是
,t1.user_id -- 用户id
,t2.user_name -- 用户名称
,t2.address -- 经营详情地址
,t2.business_full_name -- 企业全称
,t2.company_type -- 企业类型(e_commerce:电商、offline_store:线下门店、factory:工厂、logistics:物流)
,t2.user_type -- 用户类型(1:普通 2:企业 3:新版企业用户 4:小程序用户5:个人)
,order_onsite_sign_time --上门时间
,mst_serve_complete_last_time --完工时间
,t3.goods_level_2_name -- 订单商品二级类目名称
,t3.goods_level_3_name -- 订单商品三级类目名称
--,init_order_amt --初始主订单金额
--,init_total_amt --初始订单总金额(主订单+子订单)
--,settle_amt --订单结算金额(服务费用)
,t9.init_serve_fee as order_total_amount --订单总金额
,(t9.init_serve_fee/t1.order_goods_cnt) as order_unit_price --订单单价
--,t4.order_label --订单种类(加急单、夜间单等等)
,CASE WHEN t4.order_label LIKE '%加急%' THEN '是'
ELSE '否'
END AS is_urgent_flag --是否加急
,t10.city_name --城市名称
,NVL(t5.offer_mst_cnt,0) AS offer_mst_cnt --报价量(人次)
,NVL(t6.view_mst_cnt,0) AS view_mst_cnt --查看量(人次)
,NVL(t7.fifth_offer_duration_second,0) AS fifth_offer_duration_second --满5人报价时长(第5人报价时间 - 下单时间)
,NVL(t7.tenth_offer_duration_second,0) AS tenth_offer_duration_second --满10人报价时长(第10人报价时间 - 下单时间)
,NVL(t8.attention_cnt,0) AS attention_cnt --商家师傅关注数
,merchant_total_orders --- 商家下的总订单量
,merchant_total_aftersales --- 商家产生的总售后单量
,ignore_cnt --商家被拉黑次数
,t10.buyer_note -- 订单备注
FROM wanshifu_dw.dws_order_d t1
LEFT JOIN wanshifu_dw.dim_usr_info_v t2
ON t1.user_id = t2.user_id
JOIN (
SELECT t1.global_order_trace_id
,t1.goods_level_1_name
,t1.goods_level_2_name
,t1.goods_level_3_name
FROM wanshifu_dw.dwm_order_goods_info_d_v t1
JOIN (
SELECT global_order_trace_id
FROM wanshifu_dw.dwm_order_goods_info_d_v
WHERE stat_date IS NOT NULL
GROUP BY global_order_trace_id
HAVING COUNT(*) = 1
) t2
ON t1.global_order_trace_id = t2.global_order_trace_id
WHERE stat_date IS NOT NULL
) t3 --去掉多类目商品
ON t1.global_order_trace_id = t3.global_order_trace_id
LEFT JOIN (
SELECT global_order_trace_id
,CONCAT_WS(',',COLLECT_SET(business_type_name)) AS order_label
FROM wanshifu_dw.dwd_bas_accounting_trade_settlement_flow_fee_detail_d_v
WHERE etl_date >= '20250101'
AND business_type_code IN ('emergency_order_settlement','fee_subsidy_settlement','fittings_order_settlement','night_order_settlement','order_settlement','price_diff_subsidy_settlement','rate_award_settlement','service_satisfy_award_settlement','toc_order_settlement')
GROUP BY global_order_trace_id
) t4
ON t1.global_order_trace_id = t4.global_order_trace_id
LEFT JOIN (
SELECT global_order_trace_id
,COUNT(DISTINCT master_id) AS offer_mst_cnt
FROM wanshifu_dw.dwd_mst_order_offer_price_d_v
WHERE etl_date >= '20250101'
GROUP BY global_order_trace_id
) t5
ON t1.global_order_trace_id = t5.global_order_trace_id
LEFT JOIN (
SELECT global_order_trace_id
,COUNT(DISTINCT IF(first_view_time IS NOT NULL,master_id,NULL)) AS view_mst_cnt
FROM wanshifu_dw.dwm_mst_order_push_d
WHERE etl_date >= '20250101'
GROUP BY global_order_trace_id
) t6
ON t1.global_order_trace_id = t6.global_order_trace_id
LEFT JOIN (
SELECT global_order_trace_id
,SUM(IF(rn = 5,DATEDIFF(offer_time,order_submit_time,'ss'),0)) AS fifth_offer_duration_second
,SUM(IF(rn = 10,DATEDIFF(offer_time,order_submit_time,'ss'),0)) AS tenth_offer_duration_second
FROM (
SELECT global_order_trace_id
,order_submit_time
,offer_time
,ROW_NUMBER() OVER (PARTITION BY global_order_trace_id ORDER BY offer_time ASC ) rn
FROM wanshifu_dw.dwd_mst_order_offer_price_d_v
WHERE etl_date >= '20250101'
)
WHERE rn IN (5,10)
GROUP BY global_order_trace_id
) t7
ON t1.global_order_trace_id = t7.global_order_trace_id
LEFT JOIN (
SELECT account_id
,COUNT(master_id) AS attention_cnt --商家师傅关注数
FROM wanshifu_dw.ods_mst_info_mst_interaction_d_v
WHERE etl_date = '20250618' --此日期不可修改
AND attention_status = '1'
GROUP BY account_id
) t8
ON t1.user_id = t8.account_id
LEFT JOIN (
SELECT account_id
,COUNT(master_id) AS ignore_cnt --商家被拉黑次数
FROM wanshifu_dw.ods_mst_info_mst_interaction_d_v
WHERE etl_date = '20250618' --此日期不可修改
AND ignore_his_order_status = '1'
GROUP BY account_id
) t88
ON t1.user_id = t88.account_id
LEFT JOIN wanshifu_dw.dwd_usr_order_trade_info t9
on t9.global_order_trace_id = t1.global_order_trace_id
LEFT JOIN wanshifu_dw.dim_order_info_v t10
on t10.global_order_trace_id = t1.global_order_trace_id
left JOIN
(
SELECT user_id,COUNT(distinct global_order_trace_id) as merchant_total_orders
FROM wanshifu_dw.dws_order_d t1
WHERE SUBSTR(t1.stat_date,1,6) BETWEEN '202501' AND '202506'
AND t1.order_cancel_time IS NULL
and t1.mst_serve_complete_last_time is not null
GROUP BY user_id
) a
on t1.user_id = a.user_id
left JOIN
(
SELECT tt2.user_id,count(distinct tt1.global_order_trace_id) as merchant_total_aftersales
FROM (
SELECT global_order_trace_id
FROM wanshifu_dw.dwd_iop_work_order_work_order_infos_v
WHERE work_order_type IN ('complaint','secondline') --投诉,二线
AND TO_CHAR(work_order_create_time,'yyyymmdd') >= '20250101'
and TO_CHAR(work_order_create_time,'yyyymmdd') <= '20250630'
GROUP BY global_order_trace_id
UNION ALL
SELECT global_order_trace_id
FROM wanshifu_dw.dwm_order_arbitration_info --仲裁
WHERE TO_CHAR(create_time,'yyyymmdd') >= '20250101'
AND TO_CHAR(create_time,'yyyymmdd') <= '20250630'
GROUP BY global_order_trace_id
) tt1
LEFT JOIN wanshifu_dw.dim_order_info_v tt2
on tt1.global_order_trace_id = tt2.global_order_trace_id
GROUP BY tt2.user_id
) b
on t1.user_id = b.user_id
WHERE SUBSTR(t1.stat_date,1,6) BETWEEN '202501' AND '202506'
AND t1.order_goods_lv1_name IN ('家具')
AND t1.order_business_line_type = 'tob'
AND t1.order_etp_flag = '0'
AND t1.order_cancel_time IS NULL
AND t1.order_appoint_type_name = '报价招标'
AND t1.order_2nd_onsite_time IS NULL --去掉二次上门
and t10.city_name IN ('西安市','南京市','天津市','成都市','珠海市','佛山市','合肥市','青岛市','郑州市','长沙市','武汉市','宁波市','苏州市','东莞市','重庆市')
;