解决方法
考虑您要分析的流程或事件.
假设您正在构建Lougle Analytics,并希望分析您网站的访问次数(而不是单页请求).访问网站是一个过程.
事实表表示您要分析的流程或事件,在这种情况下,它是一个站点访问列表.您可以拥有任意数量的事实表,每个进程或事件一个.
在分析网站访问时,哪些内容可能对您有用?
>有关网络浏览器的信息(品牌,屏幕分辨率……)
>有关用户的信息(国家,州,城市,ISP,基于其IP地址)
>有关访问何时开始的信息(年,季,月,周,日)
>访问的持续时间
>引用页面,登录页面和退出页面(标题,网址路径)
>访问期间访问过的页数
从技术上讲,你可以将这一切都放在一个表格中 – 就像在Excel中一样,但这样可以快速实现真正的大,所以我们将进行一级规范化.维度设计通常只是“将您需要的所有内容放在一个大表中”,然后将一个级别标准化.
所以你的事实表看起来像这样:
web_browser_key bigint ip_address_key bigint start_date_key int referring_page_key bigint landing_page_key bigint exit_page_key bigint duration_seconds int number_of_pages_visited int
它有一堆键值,引用其他表†中的值和两个非键.非键是数值,称为Measures.你能拿出网络浏览器品牌名称的平均值吗?不,所以这是一个维度.你能看一下访问持续时间的平均值吗?是的,所以这是一个衡量标准.
其他表称为Dimension表,ip_address维度表可能如下所示:
ip_address_key bigserial primary key,/* use meaningless surrogate keys */ ip_address inet unique,country text,division text,locality text,latitude numeric(8,6),longitude numeric(9,6)
请注意,它没有标准化:国家/地区可以从城市(地区)派生.但是在数据仓库中,我们首先关心的是促进分析.请注意,维度表中的某些数据是分层的:country>分裂>局部性.您的OLAP服务器(希望)了解层次结构以支持向下钻取操作.
逻辑多维数据集只是您正在使用的维度和度量的集合.与魔方不同,它可以有超过3个维度.只需将维度视为数据集中的列.
OLAP是一组可以对数据集执行的操作,例如旋转,切片,切割,钻取.想想Excel数据透视表. OLAP服务器有助于OLAP操作.
†通常没有外键