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搞定,把原始数据搞来。 |