数据格式

方舟支持多种 SDK 上报数据,接口会有所不同,但底层数据都使用统一的数据格式,尤其是通过工具导入数据时,也需要符合相应的数据格式。同时,不同的属性,会有不同的数据类型,在分析时对应不同的计算方式,所以在上报数据时需要注意采用合适的格式。

上报数据的格式

数据整体是 JSON 格式,描述一条事件或者属性。

Event 数据样例

[
    {
        "appid":"demo",
        "xwho":"9692043c-7d85-417a-b84e-fd37e1b7a67e",
        "xwhat":"confirmOrder",
        "xwhen":1533110482778,
        "xcontext":{
            "$pagename":"com.analysys.demo.activity.MainActivity",
            "$channel":"豌豆荚",
            "$manufacturer":"Xiaomi",
            "$app_version":"4.0.4.001",
            "$model":"MIX 2S",
            "$os":"Android",
            "$os_version":"8.0.0",
            "$network":"WIFI",
            "$screen_width":1080,
            "$screen_height":2030,
            "$brand":"Xiaomi",
            "$is_first_day":true,
            "$lib":"Android",
            "$platform":"Android",
            "$is_login":false,
            "$lib_version":"4.0.4",
            "$debug":2
            "order_price":1213.23
        }
    }
]

上述字段说明:

  • appid:字符串类型,记录项目的 AppKey,创建项目后生成;

  • xwho:字符串类型,记录用户 ID,调用接口生成;

  • xwhat:字符串类型,记录事件 ID,必须是合法的变量名,由字母、数字和下划线组成,不能以数字开头,对于系统预置的事件以 $ 开头 ;

  • xwhen:数据值类型,记录事件发生的时间戳,精确到毫秒;

  • xcontext:事件的属性,以 dict 的形式存在,其中每个属性,有相应格式。以 $ 开头表示为系统预置的属性,其属性值数据类型都是约定好的,自定义的属性不要以 $ 开头,同一个属性 ID 在不同事件中的定义和数据类型应该保持一致。

Profile 数据样例

[
{
    "appid":"demo",
    "xwho":"9692043c-7d85-417a-b84e-fd37e1b7a67e",
    "xwhat":"$profile_set",
    "xwhen":1533110558121,
    "xcontext":{
        "Email":"yonghu@163.com",
        "$mac":"9c:2e:a1:fe:b7:eb",
        "$lib":"Android",
        "$platform":"Android",
        "$is_login":false,
        "$lib_version":"4.0.4",
        "$debug":2
    }
}
]

Profile 信息是通过一些特殊的事件上报,数据格式要求和事件相同。Profile 系列事件包括:

  • $profile_set

  • $profile_set_once

  • $profile_unset

  • $profile_increment

  • $profile_append

  • $profile_delete

特别说明:

建议您在上报数据时,用户属性ID 和 事件属性ID 使用小写英文字母和下划线组合命名,例如 pagename 、page_name;

不建议使用含大写字母的属性ID,例如 pageName 、pageTitle。

因为易观方舟会将 事件属性ID 和 用户属性ID 中的大写字母强制转换为小写字母。

属性值的数据类型

除了整体数据要以 JSON 作为数据传输格式之外,属性值的数据类型也会对应一定格式。

方舟定义了以下数据类型:

方舟预置的一些事件属性和用户属性,也会同时定义好数据类型,详见《预置事件和属性》

方舟不会自动对数据类型错误的属性进行转换

假如我们有一个表示商品数量的属性 product_number 首次上报时是数值(number)类型,那么数据库就会将存储这个属性的字段的类型设置为数值(number)。如果接下来 product_number 收到非数值类型的值时,这一整条日志都会被标记为异常,进入错误队列,而不会进入方舟参与到正常计算中。

错误队列中的数据会保留7天,如果需要恢复当中的数据,请随时联系我们。

如果发现数据异常变少,可以通过“数据入库检查”中的“错误数据日志”查看日志是否因为此种情况而被抛弃。

不同数据类型属性值的应用

数据上报中的属性,在分析时可以作为条件查询,也可以作为维度去细分,之所以需要定义不同属性值的数据类型,就是为了进行合适的运算和维度细分,例如 “支付订单金额” ,分析时希望对它进行求和、最大值、最小值、均值等运算,这就要求这个属性值的类型应该是数值型。

以下说明不同数据类型作为细分维度和过滤条件时的使用差异:

维度

条件

字符串类型

数值型

布尔值

日期时间

字符串集合

以上内容没有解答我的问题?点击我进入方舟论坛去反馈 🚀

最后更新于