Data Analytics

# Data Analytics

# 概览

Data Analytics 是 BytePower 提供的数据分析工具,用于分析你的应用上报的事件,从而挖掘出产品和用户的价值信息,以辅助你进行下一步的产品优化和商业决策。Data Analytics 会把你的 App 上传的原始数据做去重、清洗的处理,把原始数据和处理后的数据全部存储到 AWS S3。除此之外,用户行为数据可以根据不同的国家(地区)来进行划分,你可以自定义不同地区抽取的数据的比例,这部分数据作为样本,会被上传到 Elasticsearch,根据事件类型创建不同的数据索引,并提供 Kibana 作为分析界面来让你探索并可视化你的数据。

# 接入配置

# 启用 Data Analytics

打开你的应用的 BytePower 控制台 Basic -> Data Analytics,把 Basic config 下的 Data Analytics Enable 勾选上。

BasicConfig

# 查看数据统计

点击 Kibana Address,浏览器会在新窗口打开 Kibana 的控制台,在这里你可以查看 App 上传的数据,并通过 Kibana 控制台提供的功能做一些数据分析。

KibanaAddress

# 查看数据存储量

在 ES Storage Usage 下你可以查看你的 App 上传的数据使用 ES 存储的总量。

ESStorage

# 配置数据样本

你的 App 上传的总数据会被抽取部分样本,然后上传到 Elasticsearch,抽样规则在这里进行配置:

  • Default: 初始状态下,默认配置全球区的抽样比例为 50%,这一项配置不能删除,但你可以自行更改抽样比例。
  • Additional: 在这里你可以自定义某个国家(地区)的抽样比例。

SampleConfig

注意

请注意这里的抽样比例是指:把某个地区的全部数据抽取出一定比例,上传到 Elasticsearch,用作数据分析。 而不是指在某个地区的抽样量占据全部抽样数据的比例。

# 上报数据

# 上报数据的地址

BytePower 目前没有对外开放直接上报数据的服务,如果使用请联系我们为你接入。

# 上报数据格式

在正式将你的应用接入 Data Analytics 之前,你需要知晓上报的事件数据在格式上的要求,才能被 BytePower 正确识别。目前,Data Analytics 接收的数据格式如下:

{
    "country": string,            // 用于基于地点的数据抽样(两位 country code\\ CN \\US)
    "user_segment": int,         // 用于基于用户比例的数据抽样 0-9999
    ...                          // 其他自定义公共字段
    "events":[                   // 用于对多个 event 事件进行压缩合并的列表值,服务器会在此处进行数据展开
    {
        "event_id": string,      // 标记一个事件的唯一标识 UUID,用于数据去重
        "event_type": string,    // OPTIONAL,标记事件的类型,用于数据转存时进行分组
        ...                      // 事件的详细字段
    },
    ...                          // 其他合并的事件
    ]
}

# 事件的抽样

Data Analytics 允许用户在上传数据时选择按一定的规则对数据进行抽样,只有符合抽样条件的数据才会进入到 Data Analytics 中,抽样会根据上报事件的国家和地区以及用户分块来确定。

任何一个用户都需要属于一个地区以及一个用户分块,其中地区 country 使用两位国家码来标识,例如 CNUS 等,不符合要求的国家码会被服务器所拒绝;而用户分块 user_segment 则取值于 0-9999 之间。

用户数据的抽样是根据用户地区和分块来综合决定的,例如,你可以指定美国地区(US)的用户按照 50% 的抽样比例进入 Data Analytics,那么 country=USuser_segment<5000 的用户产生的数据才会写入到 Data Analytics 中。同理如果你可以指定中国地区(CN)的用户抽样 10% 进入 Data Analytics,那么 country=CNuser_segment<1000 的用户产生的数据才会被抽样进入 Data Analytics。此外,你还可以对全局的抽样比例进行调整,如果你上报的数据地区并没有配置抽样比例的时候,就会按照全局配置进行抽样,默认情况下,BytePower 会初始化全局抽样比例为 10%。

详细的抽样比例配置,可以在 Console 中设定:

sampling

# 事件的合并压缩

//todo

注意

  1. 一条上报的数据里面可以含多条 event,条数不做限制。
  2. 配置、上报数据、查询数据,都需要一定的时间同步(1-5 分钟),刚刚配置完成时可能不能立即看到数据。

# 上报数据的加密方式

上报的数据需要使用 AES 加密(模式 ECB),然后进行 BASE64 编码。

示例代码:

:::: tabs type:border-card ::: tab Python

from Crypto.Cipher import AES
import base64
import json

event = {
    # 要上报的数据
}
# secret 为 AES 加密的秘钥
def encrypt(secret):
    event_str = json.dumps(event)
    encobj = AES.new(secret, AES.MODE_ECB, event_str)
    return base64.b64encode(encobj)

::: ::: tab Javascript

let CryptoJS = require("crypto-js");

let json = {
    // 要上报的数据
}
let jsonStr = JSON.stringify(json);
let secret = "4035675ad0285ae6";// AES 加密的秘钥
function encryption() {
    return CryptoJS.AES.encrypt(jsonStr, CryptoJS.enc.Utf8.parse(secret), { mode: CryptoJS.mode.ECB });
}

::: ::::

# 查询上报数据

BytePower 会对你的 App 上报的原始数据进行处理:把原始数据中的 events 列表展开成多个 event,每个 event 和公共字段形成一条单独的数据,然后再把所有处理后的数据保存到 AWS S3 进行持久化,并上传到 ES。

# 通过 Kibana console 查询数据

进入 Kibana 控制台之后,你可以依照自己的需求对索引中的数据进行搜索、查看、交互操作。利用 Kibana 可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。

关于 Kibana 的使用教程可以参照 官方文档 (opens new window),或参照我们整理的 Kibana 使用方法(简)

# 数据埋点上报约定

# 时间格式

Data Analytics 接受的时间格式为 ISO 8601 标准字符串时间,不支持 unix 时间戳。如果希望对数据进行时间维度的分析,需要按如下格式之一进行埋点上报:

ISO 8601 Format
date_time 2020-02-28T19:52:15.123Z
date_time_no_millis 2020-02-28T19:52:15Z
date 2020-02-28
date_hour 2020-02-28T19
date_hour_minute 2020-02-28T19:52
date_hour_minute_second 2020-02-28T19:52:15
date_hour_minute_second_fraction 2020-02-28T19:52:15.123

其中如果是非标准「零时区」,则将 Z 替换成相应时区,如 +08:00 即可。

小贴士

推荐使用标准时区的 date_time 格式作为时间。

上次更新: 2020/9/15 09:42:13