SparkSQL电商用户画像(八)之用户画像开发(客户购买类目表)
--用户画像 客户购买类目表 create database if not exists gdm; create external table if not exists gdm.itcast_gdm_user_buy_category( user_id bigint , --客户ID first_cat bigint , --一级分类ID first_cat_name string , --一级分类名称 second_cat bigint , --二分类ID second_cat_name string , --二级分类名称 third_cat bigint , --三级分类ID third_cat_name string , --三级分类名称 month1_cat_cnt bigint , --近30天购物类目次数 month1_cat_amt string , --近30天购物类目金额 month3_cat_cnt bigint , --近90天购物类目次数 month3_cat_amt string , --近90天购物类目金额 month6_cat_cnt bigint , --近180天购物类目次数 month6_cat_amt string , --近180天购物类目金额 total_cat_cnt bigint ,--累计购物类目次数 total_cat_amt string , --累计购物类目次数 month1_cart_cat_cnt bigint , --近30天购物车类目次数 month3_cart_cat_cnt bigint , --近90天购物车类目次数 month6_cart_cat_cnt bigint , --近180天购物车类目次数 total_cart_cat_cnt bigint , --累计购物车类目次数 last_cat_time timestamp , --最后一次购买类目时间 last_cat_ago bigint , --最后一次购买类目距今天数 dw_date timestamp )partitioned by (dt string);--计算订单中客户购买情况 drop table if exists gdm.itcast_gdm_user_buy_category_temp; CREATE TABLE gdm.itcast_gdm_user_buy_category_temp AS SELECT a.user_id, "" first_category_id, "" first_category_name, "" second_category_id, "" second_catery_name, b.third_cart third_category_id, b.third_cat_name third_category_name, SUM( CASE WHEN a.dat_30 = 1 THEN b.goods_amount END ) month1_category_cnt, SUM( CASE WHEN a.dat_30 = 1 THEN COALESCE(b.curr_price,0)* COALESCE(b.goods_amount,0) END ) month1_category_amt, SUM( CASE WHEN a.dat_90 = 1 THEN b.goods_amount END ) month3_category_cnt, SUM( CASE WHEN a.dat_90 = 1 THEN COALESCE(b.curr_price, 0)* COALESCE(b.goods_amount, 0) END ) month3_category_amt, SUM( CASE WHEN a.dat_180 = 1 THEN b.goods_amount END ) month6_category_cnt, SUM( CASE WHEN a.dat_180 = 1 THEN COALESCE(b.curr_price, 0) * COALESCE(b.goods_amount, 0) END ) month6_category_amt, SUM(b.goods_amount) total_category_cnt, SUM( COALESCE(b.curr_price, 0) * COALESCE(b.goods_amount, 0) ) total_category_amt, MAX(a.order_date) last_category_time, DATEDIFF(MIN(a.order_date), "2017-01-01") last_category_ago, FROM_UNIXTIME(UNIX_TIMESTAMP()) dw_date FROM (SELECT a.*, ( CASE WHEN order_date >= DATE_SUB("2017-01-01", 29) AND order_date <= "2017-01-01" THEN 1 END ) dat_30, ( CASE WHEN order_date >= DATE_SUB("2017-01-01", 89) AND order_date <= "2017-01-01" THEN 1 END ) dat_90, ( CASE WHEN order_date >= DATE_SUB("2017-01-01", 179) AND order_date <= "2017-01-01" THEN 1 END ) dat_180 FROM fdm.itcast_fdm_order a WHERE dt = "2017-01-01") a JOIN (SELECT * FROM fdm.itcast_fdm_order_goods WHERE dt = "2017-01-01") b ON (a.user_id = b.user_id) GROUP BY a.user_id,b.third_cart,b.third_cat_name;--购物车中类目情况 --购物车中类目情况 drop table if exists gdm.itcast_gdm_user_cart_category_temp; create table gdm.itcast_gdm_user_cart_category_temp as select a.user_id, b.third_cart, sum( case when to_date (add_time) >= date_sub("2017-01-01", 29) and to_date (add_time) <= "2017-01-01" then 1 end ) month1_category_cnt, sum( case when to_date (add_time) >= date_sub("2017-01-01", 59) and to_date (add_time) <= "2017-01-01" then 1 end ) month3_category_cnt, sum( case when to_date (add_time) >= date_sub("2017-01-01", 179) and to_date (add_time) <= "2017-01-01" then 1 end ) month6_category_cnt, count(1) total_category_cnt from (select * from fdm.itcast_fdm_order_cart where dt = "2017-01-01" and to_date (add_time) >= date_sub("2017-01-01", 179) and to_date (add_time) <= "2017-01-01") a left join (select goods_id, third_cart from fdm.itcast_fdm_order_goods where dt = "2017-01-01" group by goods_id, third_cart) b on (a.goods_id = b.goods_id) group by user_id, b.third_cart ;--整合 drop table if exists gdm.itcast_gdm_user_category_total; create table gdm.itcast_gdm_user_category_total as select a.user_id, b.first_category_id, b.first_category_name, b.second_category_id, b.second_catery_name, a.third_category_id, b.third_category_name from (select user_id, third_category_id from gdm.itcast_gdm_user_buy_category_temp union all select user_id, third_cart from gdm.itcast_gdm_user_cart_category_temp) a left join gdm.gdm_category_code b on ( a.third_category_id = b.third_category_id ) group by a.user_id, b.first_category_id, b.first_category_name, b.second_category_id, b.second_catery_name, a.third_category_id, b.third_category_name ;--生成最终客户购买类目表 INSERT overwrite TABLE gdm.itcast_gdm_user_buy_category PARTITION (dt = "2017-01-01") SELECT t.user_id, t.first_category_id, t.first_category_name, t.second_category_id, t.second_catery_name, t.third_category_id, t.third_category_name, t1.month1_category_cnt, t1.month1_category_amt, t1.month3_category_cnt, t1.month3_category_amt, t1.month6_category_cnt, t1.month6_category_amt, t1.total_category_cnt, t1.total_category_amt, t2.month1_category_cnt, t2.month3_category_cnt, t2.month6_category_cnt, t2.total_category_cnt, t1.last_category_time, t1.last_category_ago, FROM_UNIXTIME(UNIX_TIMESTAMP()) dw_date FROM gdm.itcast_gdm_user_category_total t LEFT JOIN gdm.itcast_gdm_user_buy_category_temp t1 ON ( t.user_id = t1.user_id AND t.third_category_id = t1.third_category_id ) LEFT JOIN gdm.itcast_gdm_user_cart_category_temp t2 ON (t.user_id = t2.user_id AND t.third_category_id = t2.third_cart) ;
滚筒洗衣机和波轮洗衣机哪个好?看完这篇你就能选出来了洗衣机已经成为我们必备的家电之一,很多人都不知道要怎么挑选洗衣机。有些时候我们会跟风买,但是这样很容易踩坑。最常见的洗衣机有滚筒式和波轮式两种。两者的工作原理滚筒洗衣机利用离心力,
智能钥匙柜为什么会一直响?今天在网上搬(摸)砖(鱼)的时候看到一个特别有趣的问题,有人问为什么智能钥匙柜会一直响?。为此我还特意在各大引擎搜索了一下,并没有相关的专业人士给出过解答。想来是这位大哥或者大姐被
液晶电视机还是投影仪网上很多关于搬新家是买液晶电视机还是买投影仪的帖子,也有朋友问我这个问题,看来我这个砖家也得说两句。液晶显示器和投影仪其实是两个不同的设备,就好像白开水和啤酒都能解渴,但不能用啤酒
早报北京3人高价倒卖冰墩墩被处罚小米组建高端化战略工作组出品搜狐科技编辑张雅婷今天是2月9日星期三,昨夜今晨,科技圈有哪些大事发生,请关注今日科技早报。北京警方3人高价倒卖冰墩墩非法牟利,已被行政处罚据平安北京公众号2月8日通报,随着北
北京冬奥定制款手机最高售价16万!到底贵在哪里?第24届冬季奥林匹克运动会已经于近日正式开幕,作为当下最热门的赛事,手机厂商当然也不会缺席。俄罗斯和意大利合资的珠宝商Caviar就开始整活了,说起Caviar大家肯定会陌生,但他
吸尘器十大排名分析冰尊吸尘器是世界吸尘器十大排名领导品牌。家务清洁,是很多人烦恼的问题,而如果拥有一台好用的家用吸尘器,就能很好的提高清洁效率,减轻家庭清洁负担。市面上吸尘器品牌众多,下面就为大家分
爱是AI的原则和底线最近读了关于数智时代和价值共生的书籍,知道了未来是多么的不可预知,尤其对数据的理解严肃到可怕的程度。世界进入了一个精细化数智化的时代,当大多数表面上的需求基本已经被人解决时,更需要
青岛和大连这两座海滨城市,那个发展潜力会更大?两个城市差不多,青岛目前胜在人口红利和区域优势,大连这十多年受东北整体衰落,经济不景气。要问未来哪个城市发展好,个人认为大连进步幅度会超过青岛。大连的gdp产值同城市地位严重不符,
镜花水月般的ARM收购案和英伟达注定无缘黄仁勋的如意算盘,最终还是告吹了。近日,根据英国媒体金融时报对三位业内知情人士的采访内容,我们基本可以确定在美国英国和欧盟的监管机构对其对全球半导体行业竞争的影响表示严重担忧后,英
顺应科技发展趋势科技进步法为开放共享护航新修订的科学技术进步法于今年1月1日起实施,与2007年版科学技术进步法(以下简称旧法)相比,开放一词出现的频次大幅增加。旧法中开放共出现了3次,而新修订的科学技术进步法中开放共出
街电马克工坊等27批次充电宝抽检不合格头部消息1英伟达收购ARM交易宣告失败软银或在年底推动ARM上市据报道,知情人士透露,由于监管者担心全球半导体行业的竞争受到影响,导致软银作价660亿美元将英国芯片公司ARM出售给