由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 问一个初级的问题关于数据仓库的维度
相关主题
多对多relation?2 new openings, SQL server DBA, DB developer
DBA们说说现在你管理的系统,啥东西你觉得最困难?每天苦着脸的DBA把我郁闷到了
求大量数据每天更新的解决方案数据仓库update 大表
如何学好database theory?公司有一个SSAS Cube是MOLAP。速度满,一直崩溃
fact table 和 dimension table 的区别到底是什么?ETL tool or Shellscript&Sql
A question about normalization什么软件用来对matrix的row 和column 进行normalization?
请问那个normal form在production最popular?要面试了 怎么准备
怎样建立这个Data Model (军队序列)有什么优化query的常用方法
相关话题的讨论汇总
话题: key话题: 维度话题: model话题: table话题: 宽表
进入Database版参与讨论
1 (共1页)
k*z
发帖数: 4704
1
如果我的OLTP表是一个宽表。里面有时间,地点,产品,产品属性,产品厂商,运营数
据等等。
现在数据是每天同步到ODS一个Staging数据库里。
如果我想把这个宽表拆成 多个维度,和最后的事实表-运营数据。
我怎么让两个表里的key同意呢?如果增加了一个维度的值的话,怎么处理呢?
说的有点笼统,但是请尽量回答。谢谢。
一般来说生产库的表不会是宽表,但是我们这个数据库本身就是给前台用的优化过的逻
辑表。所以基本我们需要的东西都有了。
s**********o
发帖数: 14359
2
OLTP不是NORMALIZE了,怎么有成宽表拆多维度了,既然现在是个半拉子TABLE,
那就重新NORMALIZE,PRODUCT, ORDER, INVENTORY一维是一维,什么叫
KEY MATCH啊,你原来的宽表不都有KEY的吗。我觉得如果你现在用的TABLE就是
个DENORMALIZED的大锅饭,那这个KEY就直接到FACT TABLE里做KEY好了,没看
到你的TABLE,只能瞎猜一下
k*z
发帖数: 4704
3
比如
我现在的表是
国家,省,城市,店名,年,月,日,时间,收入,费用,毛利,纯利,收银员,提成
比,提成
这个表本身是逻辑表,也就是个view, 是给前台经理通过一个User Form看的,应该是从
OLTP系统join多个表得来的,但是因为种种愿因吧。反正我没办法去拿到最原始的各个
table了。
我现在就把这个表当作我的原始数据了。 我自己来重新构建这个数据仓库,理论上来
说,我要把这个表拆成多个维度的表和一张事实表-业务表。例如:
地理纬度:geokey 国家,省,城市
店面维度:geokey, storekey, 店名
时间维度: timekey, 年,月,日
雇员维度:employeekey, titlekey, 雇员名,性别,年龄,etc
职位维度: titlekey, 职位,提成比
事实表(业务表): geokey, timekey, employeekey, 收入,收入,费用,毛利,纯利
我的问题是如何生成这些Key,然后如何维护这些Key。
生成的时候怎么保持唯一,维护的时候怎么保持唯一还有怎么增量添加。
s**********o
发帖数: 14359
4
懂了,你看不到人OLTP的MODEL,只是看到人用的VIEW,所以你根本不知道别人的DATA
MODEL是什么,你等于要重新NORMALIZE到自己的MODEL里,重新清理数据FITIN你的
NORMALIZED MODEL里,
数据清理干净后,再重新建DW,当然这些KEY是你自己建的,跟原来的MODEL没关系

【在 k*z 的大作中提到】
: 比如
: 我现在的表是
: 国家,省,城市,店名,年,月,日,时间,收入,费用,毛利,纯利,收银员,提成
: 比,提成
: 这个表本身是逻辑表,也就是个view, 是给前台经理通过一个User Form看的,应该是从
: OLTP系统join多个表得来的,但是因为种种愿因吧。反正我没办法去拿到最原始的各个
: table了。
: 我现在就把这个表当作我的原始数据了。 我自己来重新构建这个数据仓库,理论上来
: 说,我要把这个表拆成多个维度的表和一张事实表-业务表。例如:
: 地理纬度:geokey 国家,省,城市

k*z
发帖数: 4704
5
yes,有什么教程么?怎么建这个Key?这个diagram我也能画出来,但是这个key一般都
是怎么建啊?说白了就是怎么生成?应该建什么Key我也大概知道,
理论上说:
应该是增加一个城市,geokey在地区维度上就要自增一,同理加一个雇员就要在雇员表
里自增1,但是我这个数据是从宽表里面来的,每次有新数据进来,我岂不是要都要每
一行的每个维度都要lookup一下么?
s**********o
发帖数: 14359
6
你等于重新给人建NORMALIZED DATA MODEL啊,怎么建你自己说了算,
不是城市一个TABLE,雇员一个TABLE吗。是的,进来一个数据你就要
LOOKUP一下,没有的再去添加。你看不到人的MODEL本来就是在COPY别人,
看不到的东西,只能自己管理了。如果VIEW里能看到EMPLOYEE_ID和CITY_ID
的话你可以直接用他们的,CITY_ID的可能很小

【在 k*z 的大作中提到】
: yes,有什么教程么?怎么建这个Key?这个diagram我也能画出来,但是这个key一般都
: 是怎么建啊?说白了就是怎么生成?应该建什么Key我也大概知道,
: 理论上说:
: 应该是增加一个城市,geokey在地区维度上就要自增一,同理加一个雇员就要在雇员表
: 里自增1,但是我这个数据是从宽表里面来的,每次有新数据进来,我岂不是要都要每
: 一行的每个维度都要lookup一下么?

k*z
发帖数: 4704
7
如果我不建了,是不是用起来做report的效率就很低》还是也很快?

【在 s**********o 的大作中提到】
: 你等于重新给人建NORMALIZED DATA MODEL啊,怎么建你自己说了算,
: 不是城市一个TABLE,雇员一个TABLE吗。是的,进来一个数据你就要
: LOOKUP一下,没有的再去添加。你看不到人的MODEL本来就是在COPY别人,
: 看不到的东西,只能自己管理了。如果VIEW里能看到EMPLOYEE_ID和CITY_ID
: 的话你可以直接用他们的,CITY_ID的可能很小

s**********o
发帖数: 14359
8
搞不清楚别人的MODEL,你连是一对一还是一对多都不知道,很容易搞错,
而且有些数据你的VIEW不一定有的,比如PRODUCT到底有哪些洲不能卖啊,
你只看到卖到哪里去了,不能卖到哪里不知道的。比如有的EMPLOYEE一个
也没卖出去,你也不知道这个EMPLOYEE的存在,如果有REPORT让你统计,看男的卖了
多少女的卖了多少,你的VIEW里估计没有EMPLOYEE的性别,根本就做不了。
基本是瞎子摸象。

【在 k*z 的大作中提到】
: 如果我不建了,是不是用起来做report的效率就很低》还是也很快?
k*z
发帖数: 4704
9
en, 看来必须想办法把IT搞定,把原始数据搞来。
1 (共1页)
进入Database版参与讨论
相关主题
有什么优化query的常用方法fact table 和 dimension table 的区别到底是什么?
哪位同学推荐本数据库设计方面的好书??A question about normalization
有很多fields但是稀疏的数据库会占很多内存么?请问那个normal form在production最popular?
大家看下这样的project有参与的价值吗? 谢谢!怎样建立这个Data Model (军队序列)
多对多relation?2 new openings, SQL server DBA, DB developer
DBA们说说现在你管理的系统,啥东西你觉得最困难?每天苦着脸的DBA把我郁闷到了
求大量数据每天更新的解决方案数据仓库update 大表
如何学好database theory?公司有一个SSAS Cube是MOLAP。速度满,一直崩溃
相关话题的讨论汇总
话题: key话题: 维度话题: model话题: table话题: 宽表