数据分析案例-某宝数据产品如何构建

某宝数据产品

每年年底我们都能收到某宝的一个触达,回顾当年我们的消费情况,下面是我在WB上搜到的一个账单信息,只截取了部分,从回顾中我们能够清晰的看到当年消费情况,以及一些我们连自己都想不到的一些消费数据。今天我们就来看看像这样的数据产品,我们是如何实现的呢。


2020年支付宝账单

构建数据产品流程

在实际工作中,想要实现像某宝的数据产品,我们主要有以下几部分内容。如下图中红色的第一部分:

  1. 首先确定目标,我们这个数据产品为了干嘛,是提高活跃还是希望作为营销工具提高我们核心指标,比如销量。
  2. 一旦确定了目标,就需要进行产品的设计,就需要看蓝色部分的设计图,这部分主要是由运营同学来进行设计,确定一些核心指标。
  3. 品设计完成之后,我们需要考虑底层数据的加工,加工完成之后,由研发同学进行调用,触达给相应的用户。
  4. 最后,数据分析同学进行效果分析,此次活跃的效果如何,在分析时,需要注意的是,我们如何确定是由这个活动带来的活跃,最好是进行埋点,如果没有埋点,那么,我们可以进行一些逻辑判断,比如,至少这个用户当日第一次登录是在我触达之后,具体的逻辑判断需要实际做的时候确定,但是,建议埋点最好
    数据产品-营销工具--底层SQL搭建

构建底层数据

一旦我们确定了具体的数据产品,接下来就是如何处理底层数据的问题了。我们以一个具体的数据给大家讲讲该如何去实现,下图是我们具体的数据源:


通过这个数据源,我模拟了设计一个数据产品,如下:


设计

这个数据产品主要分三部分:

  • 第一部分是总述,加上每个月消费额的趋势。
  • 第二部分是按照城市的维度来看
  • 第三部分是看用户第一次购买的数据

通过上面的产品,我们可以知道具体的数据指标,但是如果研发在调用我们数据的时候,一般都是一个用户一条数据,所以,我们需要在底层把用户的数据加工成N个字段,以user_id为主键,其他的所有数据都是json的格式存储

具体SQL

select
  cumu.Customer_ID,
  parse_json('sum_sale',sum_sale,'sum_order_cnt',sum_order_cnt,'dis_city_cnt',dis_city_cnt,'dis_product_cnt',dis_product_cnt,'first_order_date',first_order_date,'first_city',first_city,'first_product_id',first_product_id,'max_sales_city',max_sales_city) as order_list
from 
  (##累计消息相关数据
    select 
    Customer_ID,
    sum(Sales) as sum_sale,##累计消费
    count(distinct order_id) as sum_order_cnt,##累计下单
    count(distinct city) as dis_city_cnt, ##不同的城市
    count(distinct Product_ID) as dis_product_cnt ##不同的产品
  from 
    chaoshi.order
  where 
    year(order_date) = 2017
  group by 
    Customer_ID
  )cumu left join 
    (##第一次消费
  select
    Customer_ID,
    Order_Date as first_order_date,
    city as first_city,
    Product_ID as first_product_id
  from 
    (
    select 
      Customer_ID,
      Product_ID,
      Order_Date,
      city,
      row_number() over(partition by Customer_ID order by Order_Date asc) as num 
    from 
      chaoshi.order
    where 
      year(order_date) = 2017
    )a 
  where 
    num = 1
  )f on cumu.Customer_ID = f.Customer_ID 
  left join 
  (## 消费最多的城市
  select
    Customer_ID,
    city,
    sum_sales_city as max_sales_city
  from     
    (
    select
      Customer_ID,
      city,
      sum_sales_city,
      row_number() over(partition by Customer_ID order by sum_sales_city desc) as num 
    from
      (
      select 
        Customer_ID,
        city,
        sum(sales) as sum_sales_city
      from 
        chaoshi.order
      where 
        year(order_date) = 2017
      group by 
        Customer_ID,
        City
      )a 
    )b 
  where 
    num = 1
  )cy on cumu.Customer_ID = cy.Customer_ID

星星详析

上面我们得到了一个用户的一条数据,但是我们就是取到了累计消费、累计订单、分布的城市数、购买了不同的产品量、第一个订单时间、第一个订单城市、第一个订单的产品以及订单量最多的城市。
最后,通过parse_json,把这些字段整合到一个json的字典中。
但是,我们有没有发现还有一部分内容,就是每个月的消费量趋势没有处理。接下来,我们单独说说这一部分的内容,这部分特殊点在于,每个用户并不是对应一条数据。我们需要其他的函数来处理,具体如下:

select
    Customer_ID,
    concat('[',concat_ws(',',collect_list(json)),']') as month_list
from 
    (
    select
        Customer_ID,
        parse_json('order_month',order_month,'sum_sales_month',sum_sales_month) as json 
    from 
        (##每个月消费数据
        select 
            Customer_ID,
            month(order_date) as order_month,
            sum(sales) as sum_sales_month
        from 
            chaoshi.order
        where 
            year(order_date) = 2017
        group by 
            Customer_ID,
            month(order_date) 
        )m 
    )aa
group by 
    Customer_ID

我们通过concat_ws和collect_list以及concat,把多个json处理成一个列表的形式,这样还是一个用户一条数据,便于研发调用,最后,这两个SQL再关联,取出
Customer_ID/order_list/month_list形成三个字段,具体如下:

Customer_ID order_list month_list
235543323 {'sum_sale':23545,'sum_order_cnt':223,'dis_city_cnt':3,'dis_product_cnt':78,'first_order_date':'2017-01-03','first_city':'北京','first_product_id',3535,'max_sales_city':'北京'} [{'1':234},{'2',464},...]

这样,我们就构建了整个数据产品的底层数据部分。

接下就是运营同学直接就触达我们的目标用户了,触达完了之后,就需要具体分析这个数据产品的效果了。关于如何分析活动的效果,这里我们不做具体的说明,后面会有专门的文章去介绍

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容