菜单

对象数组

适用场景

对象数组属性主要适用于以下场景:

  • 如下单购买商品的场景,订单内包含的多个商品详情
  • 活动奖励礼包,在结束活动收获奖励时,奖励礼包中包含不同的礼品信息及数量
  • 收藏歌单,歌单中具体的歌曲信息,如歌曲名,歌唱者等
  • 用户持有多张银行卡的信息,如卡所在支行编号,支行名称,支行地域等

以上场景的特征为:

  • 1:N的关系结构
    • 某个行为事件下,会触发多个行为对象,行为与行为对象为1对N关系,如:下单与下单商品,活动发放奖励和礼品信息,收藏歌单与歌单信息

    • 多实体间的1对N关系,如用户和持有卡之间,一个用户可以持有多张卡,多个账号,持有多个产品。
  • 对象中包含多项明细信息
    • 比如下单商品包含商品详情
    • 用户持用卡中包含卡的明细信息

事件虚拟属性支持对象数组类型

为支持以上场景的数据上报,事件虚拟属性支持了对象数组类型,可以将传值为 JSON 数组的事件属性解析成多个子属性,从而在后续分析过程中使用。 文档 如何创建 & 解析对象数组 中「 2.3 从普通属性解析获取对应值 」详细介绍了如何创建 & 解析对象数组子属性。

数据格式

下单购买商品的场景,如一次下单订单详情中包含购买的多个商品的信息。

  • 订单详情(order_detail),就是一个对象数组属性,包含商品名称,商品金额,商品类型,订单金额四个子属性。
  • 对象数组内部的数据结构是一个二维表,包含多个子属性,其中子属性有对应的属性名称及数据类型。
  • 订单详情(order_detail)对象数组属性,同时上报了订单中包含的已购买六个产品的信息。

对象数组样例

"distinct_id": "12345",
"event_name": "pay_order"
"time": 1437280200354,
"order_detail":
"[
    {"product_name":"iPhone 13", "product_price": 5000, "product_type": "手机", "order_price": 15000},
    {"product_name":"switch", "product_price": 2000, "product_type": "游戏",  "order_price": 2000},
    {"product_name":"macbookpro", "product_price": 9000, "product_type": "电脑",  "order_price": 9000},
    {"product_name":"iphone 14", "product_price": 6000, "product_type": "手机", "order_price": 6000},
    {"product_name":"iPhone 13 Pro", "product_price": 444, "product_type": "手机","order_price": 444 },
    {"product_name":"iPhone 13 Pro Max", "product_price": 333, "product_type": "手机", "order_price": 333}
]"
CODE

能力说明

  • 在业务场景中,很多需要嵌套结构上报的数据,比如订单详情,礼包内容等,通过支持对象数组格式的上报,可以通过一条事件解决,而不是拆分到多个事件和属性中,进行多次上报。
  • 通过对象数组的方式进行数据上报后,可以在分析指标、筛选条件、分组直接对对象数组整体或对象数组内的子属性进行分析。

分析能力说明

分析指标

  • 选择对象数组属性,支持对象数组的去重数统计。
  • 选择对象数组内的子属性
    • 当子属性为字符类型/时间类型/list/bool,则支持去重数的统计。
    • 当子属性为数值类型,则支持总和、均值、最大值、最小值、人均值、去重数、下四分位数、中位数、上四分位数、P90
      • 总和:子属性值的加和
      • 均值:子属性的加和 / 对象数组个数
      • 最大值、最小值:子属性的最大值,最小值 
      • 人均值:子属性加和/用户数
      • 去重数:子属性去重数的统计
      • 分位数:子属性的分位数


筛选

对象数组筛选

  • 选择对象数组进行筛选时,支持的筛选条件为:存在对象满足、全部对象满足、没有对象满足、包含对象个数、有值、没值。

  • 筛选条件的语义:
    • 存在对象满足:属性值内有任意一个对象满足设定的筛选条件
    • 全部对象满足:属性值内所有对象均满足设定的条件
    • 没有对象满足:属性值内所有对象均不满足设定的条件
    • 包含对象个数:属性值内存在的对象个数
    • 有值:属性值不为 NULL
    • 没值:属性值为NULL

业务场景分析说明

通过此对象数组,来解释对象数组的筛选

对象数组样例

"distinct_id": "12345",
"event_name": "pay_order"
"time": 1437280200354,
"order_detail":
"[
    {"product_name":"iPhone 13", "product_price": 5000, "product_type": "手机",  "order_price": 15000},
    {"product_name":"switch", "product_price": 2000, "product_type": "游戏", "order_price": 2000},
    {"product_name":"macbookpro", "product_price": 9000, "product_type": "电脑",  "order_price": 9000},
    {"product_name":"iphone 14", "product_price": 6000, "product_type": "手机",  "order_price": 6000},
    {"product_name":"iPhone 13 Pro", "product_price": 444, "product_type": "手机","order_price": 444 },
    {"product_name":"iPhone 13 Pro Max", "product_price": 333, "product_type": "手机", "order_price": 333}
]"
CODE
  • case1:订单详情「存在对象满足」商品名称=“iPhone 13”,因为对象数组中包含product_name="iPhone 13 ",则满足筛选条件;

  • case2:订单详情「全部对象满足」订单金额>3000,因对象数组中订单金额(order_price)并不是所有都高于3000,包含2000,444,333低于3000金额,则不满足筛选条件

  • case3:订单详情「没有对象满足」商品类型=“食品”,因为对象数组中没有食品类型(product_type),则满足筛选条件

  • case4:订单详情「包含对象个数」等于 6,因以下对象数组共有6个商品下单信息,则满足筛选条件


子属性筛选

  • 子属性类型(STRING、MUMBER、BOOL、DATETIME、LIST),进行对应数据类型下筛选条件配置。

如不对同一对象数组子属性进行分组,则子属性筛选的筛选查询结果与对象数组内「存在对象满足」子属性筛选条件结果是一致的,只要对象数组内有任意一个对象满足设定的筛选条件,则满足该筛选条件;

如对同一对象数组子属性进行分组,如商品名称等于iPhone13且按照商品名称进行分组,则查询结果只包含对象数组内商品名称为iPhone13的子属性值。


分组

  • 选择对象数组进行分组,则展示整个对象数组进行查看指标,如果对象数组完全相同,则进行指标聚合。

  • 如选择对象数组子属性进行分组,则可对每个子属性的值进行统计。

对象数组样例

"distinct_id": "12345",
"event_name": "pay_order"
"time": 1437280200354,
"order_detail":
"[
    {"product_name":"iPhone 13", "product_price": 5000, "product_type": "手机",  "order_price": 15000},
    {"product_name":"switch", "product_price": 2000, "product_type": "游戏", "order_price": 2000},
    {"product_name":"macbookpro", "product_price": 9000, "product_type": "电脑",  "order_price": 9000},
    {"product_name":"iphone 14", "product_price": 6000, "product_type": "手机",  "order_price": 6000},
    {"product_name":"iPhone 13 Pro", "product_price": 444, "product_type": "手机","order_price": 444 },
    {"product_name":"iPhone 13 Pro Max", "product_price": 333, "product_type": "手机", "order_price": 333}
]"
CODE

如果针对对象数组内子属性商品类型(product_type)进行分组,则统计结果为

商品类型下单量
手机4
游戏1
电脑1

其他说明

  • 不支持的复合查询场景

A、无子属性分组 + 子属性去重数/分位数 + 预定义指标查询(暂不支持)

B、无子属性分组 + 子属性去重数/分位数 + 对比时间查询(暂不支持)

C、无子属性分组 + 子属性去重数/分位数 + 分层查看(暂不支持)

D、无子属性分组 + 子属性去重数/分位数 + 动态分群(暂不支持)

  • 分析模型中 List 类型的子属性只支持 List,例如 ["Adobe","xyz","0.5"];分析模型中 DateTime 类型的子属性只支持毫秒级时间戳,例如:1676978198000
  • 子属性时间类型暂不支持时段区间、相对事件发生时间、相对事件发生时间区间。



支持的分析模型

仅支持在事件分析中选择对象数组类型的属性进行分析

上一个
事件分组
下一个
交易日
最近修改: 2024-12-27