Jon*_*han 2 database postgresql business-intelligence
我\xe2\x80\x99m 不确定使用 Postgres 将数据排列在星型模式结构中的最佳方式是什么。
\n\n这是我的表格:
\n\n1)页面- 保存所有页面访问的数据(访问者在访问网站期间点击的每个页面)\n 2)会话 - 保存会话数据(例如访问者每次访问网站时)\n 3)国家/地区-县列表 \n 4) session_users - 用户和属性列表 \n 5)基于上表的每日聚合表
\n\n谢谢
\n\n页数\nuser_id\nsession_id\nvisitor_id\nsession_country_id\npage\nwebsite_type\nvisitor_type\nseniority\npage_number\nend_date
\n\n会话\nuser_id\nsession_id\nvisitor_id\nvisit_country_id\noperating_system_id\ndays_since_first_session\nsession_start_date\nsession_end_date\nis_returning
\n\n会话用户\n用户 ID\n注册日期\n帐户用户 ID\n购买日期
\n\n国家\n国家 ID\n国家名称
\n\n会话用户\n用户 ID\n注册日期\n帐户用户 ID\n购买日期
\n\n每日聚合表\n日期\n访客数\n用户数\会话数\导航页数\n高级\n定价
\n最好的方法取决于许多我们不知道的事情,但您希望知道(或应该找出!),包括数据量、更新频率、哪些系统或人员与数据库交互、您和您的用户如何将使用您的任何解决方案,最重要的是您想要通过数据仓库实现的目标。
这里有几个可以开始研究的地方:
https://en.wikipedia.org/wiki/Star_schema
简而言之,星型模式具有一个或多个包含大量记录的事实表,以及更多包含较少记录的维度表。事实表包含您正在测量或计数的内容,维度包含您要用来汇总数据的特征。每个维度表中的主键都与事实表中的一个键相关 - 事实表中维度键的每个组合都是唯一的。
那么,首先,您要衡量的事实是什么?收入?命中?或者是什么?那么,你的维度是什么?每个维度你有什么特征?获得答案的一个好方法是思考您正在解决的业务问题。一旦你得到了这些答案,表格设计就随之而来。非常值得阅读几本有关数据仓库设计的书籍,以获得一些有关建模日期和时间维度的提示。
就 Postgresql 而言,您的表创建查询可能如下所示:
create table dimension1 (
dimension1_key serial primary key,
attribute1 text not null default 'unknown',
attribute2 text not null default 'unknown');
create table dimension2 (
dimension2_key serial primary key,
attribute1 text not null default 'unknown',
attribute2 text not null default 'unknown');
create table fact1 (
dimension1_key integer references dimension1,
dimension2_key integer references dimension2,
fact integer,
constraint pk primary key (dimension1_key,dimension2_key)
)
Run Code Online (Sandbox Code Playgroud)
您通常会在要汇总的列上放置索引:
create index dimension2_attribute1 on dimension2(attribute1);
Run Code Online (Sandbox Code Playgroud)
我认为不可能甚至不需要给您比这更完整的答案。我认为您自己了解仓库设计很重要,为此您必须阅读一些书。
| 归档时间: |
|
| 查看次数: |
6591 次 |
| 最近记录: |