# 事件属性与用户属性

> 来源：https://help.gravity-engine.com/docs/getting-started/event-and-user-properties
> 说明事件属性与用户属性的用途和区别，帮助接入人员为行为分析和用户分析选择正确的数据类型。



在完前期数据模型的准备阶段之后，需要追踪的事件已基本确定，接下来要做的是为这些事件以及用户设置属性。值得注意的是，`事件属性`与`用户属性`的设置会直接影响到分析的深度，因此如何设定需要仔细斟酌，本节将会简单介绍设置用户属性与事件属性的要点。

## 1. 事件属性还是用户属性？ [#1-事件属性还是用户属性]

一般情况下，`Event` 都是在用户产生某个有意义的行为时上报的，因此事件属性除了与该事件相关的属性外，还能够反映用户在进行该行为时的状态；而用户属性则只表示用户最新的状态。比如同样表示会员等级的字段，事件属性中的等级表示用户发生该行为时的会员等级，而用户属性的等级则是用户现在的会员等级。

另外，引力引擎 的客户端 SDK 将会自动收集一些事件属性以及用户属性，如果您想了解这些属性，您可以在[事件属性页面](https://web.gravity-engine.com/#/manage/metadata/eventProperty)中过滤查看`预置属性`。

## 2. 哪些属性应该作为公共事件属性？ [#2-哪些属性应该作为公共事件属性]

公共事件属性是会作用于每一个事件的属性，建议您将重要的属性或常用属性在上传事件前设置为公共事件属性，我们建议将会员等级、渠道设置为公共事件属性。

## 3. 哪些属性应该作为事件属性？ [#3-哪些属性应该作为事件属性]

事件属性是每种事件所独有的属性，在您上传某个事件之前需要手动配置。对于如何设置事件属性，需要使用您在[模型介绍](/docs/getting-started/data-model)整理好的事件列表，根据您的分析需求以及埋点触发的条件进行设置。

事件属性的英文名称，我们建议只使用英文大写、英文小写以及下划线进行标识，并且名称最好是有意义的，请勿使用中文命名。如果有在不同事件中存在意义相同的属性，比如递交订单中的购买商品 ID 以及加入购物车时的商品 ID，最好设置为同一属性名，其作用相当于合并属性。

目前支持的属性值类型有文本、整数、浮点数、布尔值、日期、时间以及列表，属性名可以使用英文大写、英文小写、数字以及布尔值，如果需要了解属性具体的含义，您可以去[元数据页面](https://web.gravity-engine.com/#/manage/metadata/metaEvent)中查看备注信息。

当您设置好一条属性之后，请将属性的名称、类型以及备注补充到[数据模型](/docs/getting-started/data-model)整理的事件文档中，此时的事件文档中会有每个事件的名称、描述、重要程度、分析点以及属性名、属性类型和属性意义。

## 4. 哪些属性应该作为用户属性？ [#4-哪些属性应该作为用户属性]

用户属性表示的是用户的不变的属性以及最新状态，我们建议将下列三种属性设置为用户属性：

（1）固定属性：固定属性指的是用户不会变更的属性，这些属性往往是注册时的信息或首次产生某行为时的信息，比如注册时间、注册来源渠道、性别、用户名、首次付费时间等等。对于这样的属性，在埋点时请调用 `user_setOnce`，并建议在属性名前加上 `first`。

（2）最新状态：最新状态指的是用户的当前状态，往往是用户最后产生某行为的信息，比如最后上线时间、最后付费时间等等。对于这样的属性，在埋点时请使用 `user_set`，并建议属性名前加上 `latest`。

（3）累计值：累计值实质上是最新状态的一种特殊形式，累计值的数据类型为数值型，主要是产生某重要行为的次数或者数值型的最新状态，比如累计付费次数、累计付费金额、累计登录次数等等，在埋点时请调用 `user_add`，每次调用都会在原先的数值上进行累加操作。

在设置完用户属性后，请将这些属性加入到[数据模型](/docs/getting-started/data-model)整理的事件文档中。
