数据模型

智能分析平台的所有功能,全部依赖于底层的数据模型实现,即Event实体+User实体为基础,Item实体作为辅助的基本模型,下面将从实际应用中解释实现逻辑。

Event实体与User实体在数据上体现为数据层面的Event表与User表,二者通过唯一ID互联互通,构成了数据分析工作台的数据基础。

Event实体对于分析模块的支撑

以一个很常见的简单场景举例,在电商运营中,销售数据是很重要的数据,我们把销售数据细化为独立的数据指标,可以包含销售额订单量品类分布成交时间分布等等多个指标。

以细化指标为切入点,如果我们想要了解这些指标的数据,那么就需要监测用户的支付订单行为,我们可以把支付订单设计为一个事件进行数据采集,接下来我们看这个事件能为我们携带什么样的属性:

订单金额:该笔订单的金额,该属性可以实现对销售额的监测

商品品类:该比订单中包含的商品品类,该属性可以实现对品类分布的监测

商品名称:该比订单中包含的商品名称,该属性可以实现细化到单品的销售数据监测

事件触发时间:支付订单事件触发的时间点,该属性可以实现对成交时间分布的监测

事件量:支付订单事件的条数,可以实现对于订单量的监测

事件触发用户数:触发支付订单的用户数,该属性可以实现对于客单价的监测

梳理清楚这些,我们就有了这样的事件数据:

{
    "distinct_id":"",
    "time":"",
    "type":"",
    "event":"payment",
    "project":"",
    "properties":{
        "price":,
        "item_classify":"",
        "item_name":"",
    }
}

随着用户对于支付订单事件的触发,支付订单事件的数据将不断的由设备上报至工作台并存入Event表中,接下来,我们来看Event表中的数据是如何支撑各个分析模块的。

订单量

订单量,即订单的总量,从业务上来讲,同一个用户支付两个订单,订单量会被计为2,那么对于订单量的统计,即可等同于对支付订单事件条数的统计。

也就是说,在事件分析模块中配置支付订单-总次数这个查询条件时,工作台会检索Event表中选定时间范围内的payment事件条数,并给出结果。

支付用户数

这个指标要依赖于distinct_id字段来实现,该字段是用户的唯一标识,两条订单数据如果distinct_id字段值相同,则证明这两笔订单来自于同一个用户。

如果在事件分析模块中配置支付订单-用户数这个查询条件时,工作台会计算Event表中选定时间范围内所有payment事件携带的distinct_id的去重数。

销售额&客单价

订单金额,即数据样例中的price字段,该字段记录了此订单的订单金额,我们把它设计为number类型,因此,我们可以计算订单金额的总和,最大值,最小值等多个指标。

实现对于订单额数据的监测,也就是在事件分析模块中配置支付订单-订单金额-总和这个查询条件,执行查询后,工作台会计算Event表中选定时间范围内所有payment事件携带的price字段值的总和。

同理,我们可以配置支付订单-订单金额-人均值这个查询条件,执行查询后,工作台会计算Event表中选定时间范围内所有payment事件携带的price字段的人均值。

支付时间分布

我们注意到,数据样例中携带了一个time字段,表示此事件被触发时的时间点,那么我们可以进入分布分析模块,配置支付订单-触发时间-默认区间这个查询条件,执行查询后,工作台会以小时为区间划分标准,计算每个时间区间内的订单量,给出的结果也就是支付时间分布。

可见,Event实体是分析模块实现功能的基础,但是只有Event实体对于数据分析来说开始有些薄弱,为此,我们引入了User实体作为Event实体的组合支撑。

User实体对于分析模块的支撑

还是以电商运营环境为例,新老用户的表现如何?VIP体系是否能提升用户的消费频率?复购率较高的用户或消费水平较高的用户有什么样的特征?

以这三个问题切入,想要划分新老用户,我们需要知道用户的注册时间,想要分析不同VIP等级与用户消费频率的关系,我们需要知道用户的VIP等级,想要知道高价值用户的特征,我们需要将这部分用户单独提取出来。

于是我们可以在用户注册以及登录之后,使用profile_*接口,向User表中写入注册时间以及VIP等级,数据样例如下:

注册时触发

{
    "distinct_id":"",
    "type":"profile_set_once",
    "time":"",
    "project":"",
    "properties":{
        "sign_up_time":"",
}
}

登录时触发

{
    "distinct_id":"",
    "type":"profile_set",
    "time":"",
    "project":"",
    "properties":{
        "vip_level":,
        "nick_name":"",
    }
}

随着数据的不断上报,User实体也就组建完成并逐渐丰富起来,借助User实体,我们可以解决之前的问题。

新老用户

划分新老用户,我们可以进入用户分群模块,配置如下:

分群名称 划分标准 配置条件
新客客群 用户属性 注册时间-相对当前时间点-30天-之内
老客客群 用户属性 注册时间-相对当前时间点-30天-之前

我们可以得到两个用户群组,再回到事件分析模块中,将分析用户群选定为新客客群与老客客群,这样就可以横向对比新老客群的订单量销售额品类分布等数据指标。

VIP体系

同理,我们可以根据VIP等级将用户划分为不同的分群,横向对比不同VIP等级用户的消费数据。

用户价值特征

对于用户价值特征的分析,我们可以配置这样的分群条件:

分群名称 划分标准 配置条件
低价值用户 触发事件 上线至今-做过-支付订单事件-总次数-[0,5]次
中价值用户 触发事件 上线至今-做过-支付订单事件-总次数-[6,20]次
高价值用户 触发事件 上线至今-做过-支付订单事件-总次数-[21,+∞]次

分群创建完成后,可以通过用户分析模块详细分析不同价值用户群体之间的特征差异。

results matching ""

    No results matching ""