在文档 非结构化数仓建模和Schema-Less OLAP构建(零) 我们讲述了如何基于bitmap来作为非结构化建模的底层数据结构,本节我们具体讨论为了构建table schema-less的olap,我们该使用什么样的表结构来存储数据。当然这里只讨论数据的组织方式,不关心具体的OLAP引擎。
在讲解具体的模型结构之前,先解释下什么是“无表结构约束”(schema-less)是一个什么概念,以及实现的常用手段。
时间:事件发生的时间,往往最后会聚合成分钟、小时、天,当然时间也是一种维度。
实体:分析的实体对象,可以是人、设备、视频、文章、作者等。
维度:事件携带的变量,可以是城市、浏览器、用户属性、事件特有的属性等,由“维度标识”+“维度值”组成。
指标:事件携带的分析指标,可以是事件本身的次数,页面浏览量、停留时长、购买事件的金额等,由“指标标识”+“指标量”组成。
然后将这种模型应用于通用的事件分析工具(多维分析)中,用来解决各种灵活场景的分析,比如:“过去7天”在“城市”维度下,“操作系统: Mac”的人数是多少?
为了解决示例的场景,我们可能需要在hive或者clickhouse中创建如下的表结构: