# 维度表
## **概述**
通过维度表,我们可以更加便捷高效、自由灵活地为埋点事件扩展新的事件属性。换言之,对于一些在埋点时没有上报的事件属性,可以通过维度表来补充到方舟系统中,以用于实现更多维度和更加深入的分析应用。
#### 举例来说:
方舟 SDK 会默认采集用户使用 App 时的地理位置信息,包括IP、国家、省份和城市,所以我们才能够在方舟中基于这些维度进行细分、条件筛选等操作,从而进行相应的分析查询。而对于某些业务来说,除了常规的地域维度外,我们可能还需要通过销售区域维度(如华北区、华南区等)来进行统计分析。在不使用维度表的情况下,为了满足这个需求,必须先通过埋点的方式将“销售区域”上报到方舟系统中。而现在,利用维度表,我们不必埋点就能“采集”到这部分数据,从而实现同样的分析需求。
####
另外一个常见的应用场景:就是为商品或产品等 Item 实体扩充更多的属性信息。
对于一件商品而言,通常会有商品ID、商品名称、一级类目、二级类目、品牌、型号、尺寸、颜色、商品标签等等非常多的属性信息。假如我们在最初埋点时,只上报了少部分商品属性,那么之后,当我们对其他维度产生分析需求时,就可以通过维度表来补充更多的属性用于分析。
实际上,维度表的灵活性非常高,我们可以通过维度表对基于埋点上报的任何事件来进行属性扩展。
## **维度表功能原理**
维度表的工作原理类似Excel 的 VLOOPKUP 函数,以及 SQL 中的 LEFT JOIN 操作。·我们以上述销售区域维度扩展的场景为例,通过一个简单的示例,来解释维度表的工作原理。
理解维度表,需要从事件表说起。
我们知道,通过埋点,方舟能够采集到信息维度(即事件属性)非常丰富的用户行为数据。在一个项目中,所有用户的行为数据,都会被记录在一张“数据表”中,这张表即为“事件表”。我们可以将事件表理解为一张由行和列组成的表格。表格中,一行数据即为一条事件记录,描述了一个用户的一次行为。一条事件记录由若干列字段组成,一个字段对应一个事件属性。一条完整的事件记录,通常会包括 xwho、xwhen、xwhat、$os、$ip 等等少则百列、多则数百列属性字段,涵盖了 SDK 默认采集的预置属性以及用户自定义的事件属性。
下图中,我们模拟了一份事件表数据片段(非真实且仅有少量字段)。有了这些字段,我们就可以统计这部分用户的地理位置分布以及行为的触发时间分布等。

然而,除了通过国家、省份、城市这样常规的地理维度进行分析外,我们还想对华南、华北、华中等区域的数据进行汇总,但是此前埋点时并没有上报这个属性。那么此时,我们就可以通过维度表来为每条事件补充一个新的属性(area)。
下图是我们构造的一份简单的维度表数据示例。维度表中的数据仍然是通过行和列组织起来的,一行数据为一条记录,每条记录必须具备唯一性,不得重复。

我们会发现,示例中的事件表和维度表里,都存在 $province 这个字段 。通过这个字段,我们可以将事件表和维度表关联起来,将表中相应的行进行匹配,从而为事件表中的所有行“新增”一个“area”字段。
举例来说,当事件表中一个事件的 $province字段值=“北京”时,就可以通过两张表的关联得到该事件的 area = “华北”,以此类推,最终我们为每条事件都扩展了一个新的属性:“area”,如下图所示。

在这个场景示例中,$province 字段就像“纽扣”一样,可以将两张表中的行“扣”起来,将行内的数据正确地关联和匹配在一起,从而达到扩展事件属性的效果。
*****
**像 $province 这样的字段被我们称为“关联字段”。使用维度表的前提,就是要在事件表中选择一个或多个合适的字段作为关联字段。当然,这个字段在维度表中也必须存在。**
通常来说,使用单一字段作为关联字段足够满足多数使用场景。如上面这个示例中,仅通过省份($province )我们就可以进行地理区域的区分,所以在创建维度表时指定 $province 这一个字段作为关联字段即可。**但也有部分情况,需要使用多字段关联。方舟维度表最多支持选择3个字段作为关联字段。**
> **什么是多字段关联**
上文中我们提到,维度表中的每行数据必须具备唯一性。因为只有保证了唯一性,才能确保事件表和维度表之间能够进行正确地关联。
对于维度表本身而言,关联字段还有一个作用,就是用来标识每条记录的唯一性。也就是说,维度表中关联字段的值(也称key值),就是每条记录的唯一ID。示例中 area 维度表中每行数据的 $province 的值(北京、上海等)都是唯一的、不重复的。
所谓多字段关联,就是通过多个字段唯一标识一条记录,类似 MySQL 中的联合主键。
所以,在多字段关联的场景中,当多个字段的值同时相等时,才能将维度表中新增的“属性”列匹配给事件表中对应的行。
举例来说,仍沿用上文场景。假如我们只需要为某一个或者某几个事件(xwhat)新增属性,那么我们就可以指定 xwhat 和 $province 两个字段为关联字段(多字段关联)。
这种情况下,只有当事件表中和维度表中多个关联字段( xwhat 和 $province )的值同时相等时,才能将维度表中新增的属性 (area) 匹配给事件表中对应的行。
事件表中,除了xwhen 和 xwho ,其余所有列字段都可以作为关联字段,包括xwhat、预定义属性字段、自定义属性字段。您可以在 **元数据管理》事件属性** 中查看事件表的“字段”信息。
需要注意的是,使用多字段关联会增加关联计算的复杂度,从而导致查询较慢,因此建议尽量使用单一字段进行关联,除非只能通过多字段关联才满足需求。·
## **适用场景**
并非所有事件属性都适宜通过维度表来上报。
如前所述,除 xwhen 和 xwho 外,我们可以基于事件表中的任意列来为事件扩充属性。
**但我们还需要了解的是,这里所言的“扩充”实质上主要作用于查询环节,而并非在事件表中真的添加了一列数据。**
也就是说,只有在我们使用维度表中的字段进行分析查询的时候(点击查询按钮之后),方舟系统才会“临时”去对事件表和维度表进行关联匹配以用于计算。
因此,维度表仅适于在部分场景下进行使用:
1\. 首先,使用维度表必须以埋点采集数据为基础,以合理的关联字段为前提。
2\. 维度表仅适用于上报、存储一些相对静态的、或者低频变更的属性信息。例如前面举例的地理区域维度、商品类目信息。
而对于记录用户行为发生的当下,用户行为(即事件)及用户行为对象(如购买的商品)的状态信息(动态价格、活动信息),仍需要通过埋点上报。
3\. 维度表数据不宜过多,文件不宜过大。目前一张维度表的文件大小上限为10M,且一个项目支持5个维度表。
综上,更适于“查漏补缺“的场景。
## **功能操作说明**
将需要添加的属性数据按照一定的格式写入 CSV 文件,然后进入 **元数据管理 》维度表** 页面,通过界面上传文件,就可以将数据导入方舟后台用于分析了。
### **创建维度表**
**第一步:准备数据**
>[warning] 请注意:
> 维度表数据文件,必须遵循一定的格式规范;详细规范请参考[《维度表数据文件规范》](https://www.analysysdata.com/file/202011/33050611342020.pdf)。
> 创建和编辑文件时,建议尽量使用纯文本编辑器;避免使用Microsoft Excel 和 WPS 表格这类电子表格软件,容易导致数据文件错误。
**第二步:创建维度表并导入数据**
* 功能入口:元数据管理 》维度表(注:须开通维度表功能权限)
* 点击创建维度表,填写基本信息


* 选择准备好的数据文件,确认导入数据

**数据导入完成后,就可以使用维度表进行分析了。**
在大部分分析模型以及用户分群中,都可以选择维度表中的字段,进行条件筛选和细分操作,
### **更多操作**

* **更新维度表**
支持追加行、追加列、修改行、修改列,以及全表覆盖更新
更新文件格式仍须遵循 数据文件规范
* **清空数据**
·仅清空表中的数据,表结构仍然保留
* **删除**
·一个项目仅支持创建5张维度表,对于不再需要的维度表,可以酌情进行删除
但注意删除之后,所有通过该维度表创建的分析图表将失效。
* **导出数据**
·导出维度表数据,查看数据内容,进行编辑更新
- 产品简介
- 快速上手
- Step 1 安装部署
- Step 2 激活系统创建项目
- Step 3 开启您的分析旅程
- 1. 集成 SDK
- 2. 可视化埋点
- 3. 创建分析模型
- 附:埋点方案设计
- 附:数据分析思路
- 产品更新日志
- V5.5 新增LTV分析功能等
- V5.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
- V5.2 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
- V5.1.0317 体验优化& Bug修复
- V5.1 升级可视化埋点、增强权限控制……
- Part I 产品功能说明
- 名词解释
- 指标说明
- 看板
- 5.3.3 看板 UI 重构
- 分析
- 事件分析
- 渠道分析
- 渠道相关名词解释
- 来源识别规则
- 搜索引擎
- 社交媒体
- 小程序场景值
- Session 分析
- Session 规则
- 实时分析
- 留存分析
- 转化漏斗
- 智能路径
- 归因分析
- 热图分析
- Web/H5 热图
- APP 热图
- 分布分析
- 间隔分析
- 属性分析
- LTV 分析
- 多主体分析
- 自定义查询
- 用户
- 用户分群
- 用户探查
- 用户标签
- 标签体系应用概览
- 标签体系
- 标签生命周期管理
- 标签加工
- 如何自定义SQL创建标签
- 单用户档案
- 运营
- 广告跟踪
- 微信小程序渠道追踪
- 预置广告媒介和渠道
- App 推广监测(Beta版本)
- 电子邮件(即将下线)
- 短信(即将下线)
- 消息通知(即将下线)
- 项目管理
- 项目概览
- 项目角色管理
- 项目成员管理
- 数据接入管理
- 埋点方案
- 可视化埋点
- 集成SDK接入数据
- 数据验证
- 用户数据导入
- 微信小程序全埋点事件定义
- 元数据管理
- 元事件
- 虚拟事件
- 事件属性
- 用户属性
- Session 管理
- 页面组管理
- 维度表
- 服务集成配置
- 监控告警
- 智能监控
- 自定义监控
- 平台管理
- 企业概览
- 项目管理
- 成员管理
- 安全设置
- 企业设置
- 日志管理
- 帐号设置
- Part II 技术文档
- 技术接入准备工作
- 部署环境检测工具
- 数据模型
- 数据格式
- 预置事件和属性
- App预置事件/属性
- JS 预置事件/属性
- 如何准确识别用户
- 如何设计埋点方案
- 分平台上报数据 vs 跨平台打通
- SDK 指南
- Android SDK
- 快速集成
- 全埋点模块
- 消息推送模块
- Android Hybrid模式
- SDK Gradle集成方式
- 多渠道打包
- 易观小工具
- 合规相关
- iOS SDK
- 快速集成
- 全埋点介绍
- iOS Hybrid模式
- 消息推送模块
- JS SDK
- 快速集成
- JS SDK基础版
- JS SDK插件
- uni-app SDK
- 快速集成
- 打包原生APP
- 开启移动端全埋点
- uni-app SDK标准版
- 微信小程序 SDK
- 快速集成
- 微信小程序标准版
- 微信小程序插件版
- 微信小程序通用框架版
- 支付宝小程序 SDK
- 支付宝小程序标准版
- 支付宝小程序通用框架版
- 字节跳动小程序 SDK
- 字节跳动小程序标准版
- 字节跳动小程序通用框架版
- 百度小程序 SDK
- 百度小程序标准版
- 百度小程序通用框架版
- 钉钉小程序 SDK
- 钉钉小程序标准版
- 钉钉小程序通用框架版
- QQ小程序 SDK
- QQ小程序标准版
- QQ小程序通用框架版
- 快应用 SDK
- 华为WeCode小程序
- WeCode SDK 标准版
- WeCode SDK插件
- PhoneGap SDK
- mPaaS SDK
- ReactNative SDK
- Flutter SDK
- Java SDK
- Python SDK
- PHP SDK
- C++ SDK
- C# SDK
- Node JS SDK
- Lua SDK
- Golang SDK
- SDK FAQ
- identify与alias的区别
- 爬虫数据如何识别?
- 页面停留如何获取时间?
- 如果获取SDK及更新日志
- 代码埋点和无埋点有什么区别
- Web页面中发现丢失某一个事件
- 自研 SDK 注意事项
- 页面时长统计功能
- 飞书小程序 SDK
- 飞书小程序标准版
- 飞书小程序通用框架版
- Unreal Engine SDK
- 数据验证
- 客户端埋点验证
- Debug 数据验证
- 数据入库验证
- 数据导入
- 接口导入
- JAVA工具包
- 标准json文件导入
- csv格式导入
- 数据导入FAQ
- 数据导出
- JAVA工具包
- 事件数据导出
- 用户数据导出
- 直接从Kafka中消费数据
- 使用程序访问数据库
- 脚本工具
- API
- 分析API
- 事件分析
- 留存分析
- 自定义查询
- 转化漏斗
- 属性分析
- Session分析
- 渠道分析
- 分布分析
- 用户API
- 分群查询
- 用户档案
- 分群管理
- 管理API
- 权限管理
- 元数据管理
- 埋点方案管理
- 维度表管理
- 运营API
- 广告跟踪
- APP推广监测
- 平台管理API
- 项目管理
- 成员管理
- 第三方登录
- OAuth2.0登录
- LDAP登录
- GDPR 合规
- Part III 常见问题
- License 许可
- 产品试用及采购
- 参与贡献