同步更新:https://icemimosa.notion.site/Schema-Less-OLAP-TSL-6821d3b3bc384a7b8bf43bfbec9b7097

一、概述

在文档 非结构化数仓建模和Schema-Less OLAP构建(零) 我们讲述了如何基于bitmap来作为非结构化建模的底层数据结构,本节我们具体讨论为了构建table schema-less的olap,我们该使用什么样的表结构来存储数据。当然这里只讨论数据的组织方式,不关心具体的OLAP引擎。

二、事件分析模型(多维分析)

在讲解具体的模型结构之前,先解释下什么是「无表结构约束」(schema-less)是一个什么概念,以及实现的常用手段。

在最开始的文章中,我们知道在一条用户行为事件日志中,往往可以抽象拆解成「时间」、「实体」、「维度」、「指标」:

然后将这种模型应用于通用的事件分析工具(多维分析)中,用来解决各种灵活场景的分析,比如:「过去7天」在「城市」维度下,「操作系统: Mac」的人数是多少?

为了解决示例的场景,我们可能需要在hive或者clickhouse中创建如下的表结构:

create table tbl (
  date     string,
  city     string,
  os       string,
  user_num bigint,
  pv       bigint,
  ...
)

-- 或者为了支持用户量(去重类指标)需要创建cube表,或者用户粒度的表
create table tbl (
  date     string,
  user_id  string,
  city     string,
  os       string,
  pv       bigint,
  ...
)