s****e 发帖数: 1180 | 1 fact table 和 dimension table 的区别到底是什么?
看了这个解释,还是不明白:
http://stackoverflow.com/questions/20036905/difference-between-
谁能用汉语和英语简练,清晰的概括描述这两种表的区别。多谢!:) | d****n 发帖数: 12461 | 2 star schema大概要求fact和dimension分开存放。dimension,就是例如员工姓名,部
门名称,商品描述之类的,属于那种不怎么变动,但是变动了就得大动的内容。fact,
例如员工工资,所属部门,商品价格,交易时间,属于即使变动也只是一个个动的内容
。fact和dimension之间通常用primary key或者surrogate key联系起来,例如用你的
工号,部门的编号,商品的SKU等等。
同样的内容,既可以做fact,也可以做dimension。例如员工地址,可能是fact。但是
公司不同部门的地址,可能就是dimensison。 | s**********o 发帖数: 14359 | 3 FACT TABLE就是一堆KEY和你的MEASURES了,就是要分析的对象了
比如产量,销售量,销售额等等
DIMENSION TABLE就是DENORMALIZED的数据了,
比如ACCOUNT, PRODUCT,CUSTOMER每一个都是一个DIMENSION | d***e 发帖数: 793 | 4 DIMENSION是描述性的,说的是你这个东西是什么;Fact是度量性说,说的是你这个东
西有多少。 | y*****g 发帖数: 677 | 5 都说得对,还是举例子好:
FACT table:
SALES (day_key, salerep_key, product_key, order_amount);
dimension tables:
DAY,
SALEREP,
PRODUCT
PRODUCT
|
|
\ /
DAY --> SALES <--SALEREP | s****e 发帖数: 1180 | 6 我有一个问题,有一组tables,
products has productID, productName, price
customer has cumstomerID, customerName,
sale has productID, customerID
面试人问这三个tables哪个是dimension tables, 哪个是fact tables,
我说, products 是fact table, customer 和sale 是dimension tables,那人说不对,
三个tables都是dimension tables.
我看了dynkin的说明就觉得很糊涂.
你们觉得呢?
多谢!:)
【在 d****n 的大作中提到】 : star schema大概要求fact和dimension分开存放。dimension,就是例如员工姓名,部 : 门名称,商品描述之类的,属于那种不怎么变动,但是变动了就得大动的内容。fact, : 例如员工工资,所属部门,商品价格,交易时间,属于即使变动也只是一个个动的内容 : 。fact和dimension之间通常用primary key或者surrogate key联系起来,例如用你的 : 工号,部门的编号,商品的SKU等等。 : 同样的内容,既可以做fact,也可以做dimension。例如员工地址,可能是fact。但是 : 公司不同部门的地址,可能就是dimensison。
| s****e 发帖数: 1180 | 7 还有,把这三个表join起来的sql 该怎么写?多谢!:)
【在 s****e 的大作中提到】 : 我有一个问题,有一组tables, : products has productID, productName, price : customer has cumstomerID, customerName, : sale has productID, customerID : 面试人问这三个tables哪个是dimension tables, 哪个是fact tables, : 我说, products 是fact table, customer 和sale 是dimension tables,那人说不对, : 三个tables都是dimension tables. : 我看了dynkin的说明就觉得很糊涂. : 你们觉得呢? : 多谢!:)
| s****e 发帖数: 1180 | 8 fact table 和 dimension table 的区别到底是什么?
看了这个解释,还是不明白:
http://stackoverflow.com/questions/20036905/difference-between-
谁能用汉语和英语简练,清晰的概括描述这两种表的区别。多谢!:) | d****n 发帖数: 12461 | 9 star schema大概要求fact和dimension分开存放。dimension,就是例如员工姓名,部
门名称,商品描述之类的,属于那种不怎么变动,但是变动了就得大动的内容。fact,
例如员工工资,所属部门,商品价格,交易时间,属于即使变动也只是一个个动的内容
。fact和dimension之间通常用primary key或者surrogate key联系起来,例如用你的
工号,部门的编号,商品的SKU等等。
同样的内容,既可以做fact,也可以做dimension。例如员工地址,可能是fact。但是
公司不同部门的地址,可能就是dimensison。 | s**********o 发帖数: 14359 | 10 FACT TABLE就是一堆KEY和你的MEASURES了,就是要分析的对象了
比如产量,销售量,销售额等等
DIMENSION TABLE就是DENORMALIZED的数据了,
比如ACCOUNT, PRODUCT,CUSTOMER每一个都是一个DIMENSION | | | d***e 发帖数: 793 | 11 DIMENSION是描述性的,说的是你这个东西是什么;Fact是度量性说,说的是你这个东
西有多少。 | y*****g 发帖数: 677 | 12 都说得对,还是举例子好:
FACT table:
SALES (day_key, salerep_key, product_key, order_amount);
dimension tables:
DAY,
SALEREP,
PRODUCT
PRODUCT
|
|
\ /
DAY --> SALES <--SALEREP | s****e 发帖数: 1180 | 13 我有一个问题,有一组tables,
products has productID, productName, price
customer has cumstomerID, customerName,
sale has productID, customerID
面试人问这三个tables哪个是dimension tables, 哪个是fact tables,
我说, products 是fact table, customer 和sale 是dimension tables,那人说不对,
三个tables都是dimension tables.
我看了dynkin的说明就觉得很糊涂.
你们觉得呢?
多谢!:)
【在 d****n 的大作中提到】 : star schema大概要求fact和dimension分开存放。dimension,就是例如员工姓名,部 : 门名称,商品描述之类的,属于那种不怎么变动,但是变动了就得大动的内容。fact, : 例如员工工资,所属部门,商品价格,交易时间,属于即使变动也只是一个个动的内容 : 。fact和dimension之间通常用primary key或者surrogate key联系起来,例如用你的 : 工号,部门的编号,商品的SKU等等。 : 同样的内容,既可以做fact,也可以做dimension。例如员工地址,可能是fact。但是 : 公司不同部门的地址,可能就是dimensison。
| s****e 发帖数: 1180 | 14 还有,把这三个表join起来的sql 该怎么写?多谢!:)
【在 s****e 的大作中提到】 : 我有一个问题,有一组tables, : products has productID, productName, price : customer has cumstomerID, customerName, : sale has productID, customerID : 面试人问这三个tables哪个是dimension tables, 哪个是fact tables, : 我说, products 是fact table, customer 和sale 是dimension tables,那人说不对, : 三个tables都是dimension tables. : 我看了dynkin的说明就觉得很糊涂. : 你们觉得呢? : 多谢!:)
| s**********o 发帖数: 14359 | 15 三个都是DIMENSION TABLES,你的回答表明你没真正懂得DW
建好的微软的CUBE当然是用MDX来QUERY
【在 s****e 的大作中提到】 : 还有,把这三个表join起来的sql 该怎么写?多谢!:)
| M*********e 发帖数: 190 | 16 题目问的有问题吧。
product 和 customer是dimension table。
sale应该是fact table吧。可是题目只给了两个dimension的key,没有给其他的column。
不make sense。
【在 s**********o 的大作中提到】 : 三个都是DIMENSION TABLES,你的回答表明你没真正懂得DW : 建好的微软的CUBE当然是用MDX来QUERY
| s**********o 发帖数: 14359 | 17 SALE是有FACT的嫌疑,但是没有那么多KEY了怎么可能是FACT TABLE
FACT至少要有CUSTOMID,PRODUCTID了
其实SALE就是ORDER,就是个DIMENSION,这位问问题的人也是
随口说说,没仔细准备
column。
【在 M*********e 的大作中提到】 : 题目问的有问题吧。 : product 和 customer是dimension table。 : sale应该是fact table吧。可是题目只给了两个dimension的key,没有给其他的column。 : 不make sense。
| d*******n 发帖数: 109 | 18 这三个table从一般的理解就是sales是fact table, 其他两个是dimension table.
从本身三个table的特性是这么理解,而且,
从sales table的两个column都是refe到其他两个table的也可以看出这一点。
所以不太理解为什么说三个都是dimension table.
当然实际上fact table都是有一堆fk的。
关于理解multidimensional database, 有时间的话可以看看下面的系列视频
http://www.youtube.com/watch?v=cwpL-3rkRYQ&list=PLrbIyvYCdg0iAU | w*r 发帖数: 2421 | 19 很久以前我就说过在商业数据库应用上有两个极端,一个normalize, 一个denormalize
.
normalize是关系数据库的应用,3rd normal form解决了大部分OLTP的应用,其理念就
是处理insert/update/delete的时候如何尽量减少IO cost.
denormlize解决的是reporting的问题,在关系数据库出现之前,大家把数据做成
spreadsheet, mainframe cobol基本上处理的就是这样的文本文件,一个copybook 定
义每个field是什么,然后读写操作,
从dennormalize到normalize之间使用关系数据库解决report问题就是这个怪胎:
dimension model.
你仔细想想这两个极端,很容易发现dimension model就是一个compromise.
至于FACt-Dimesnsion这样的定义没有必要纠结去严格区分,
简单来说FACT就是dimension key + measurement.
Dimesion就是你要group by的东西,
举例说明:
3rd normal form:
ORDER : ORDER ID, ORDER_DATE, CUSTOMER_ID, SHIPPING_ID, ORDER_STATUS...
ORDER DETAIL : ORDER_ID , ORDER_DETAIL_ITEM_SEQ, PRODUCT_ID, PRICE,QTY
PRODUCT : PRODUCT_ID, PRODUCT_CATEGORY_ID, VENDOR_ID....
CUSTOMER: CUSTOMER_ID, ZIP, STATE, CITY, PHONE ....
dimension
ORDER FACT:
ORDER_ID, PRODUCT_ID, CUSTOMER_ID, ORDER_DATE, QTY,PRICE
DIMESION
PRODUCT,
CUSTOMER,
GENERAL_DATE_DIM (date, year, quarter, week,... )
用fact, 你可以回答下列问题:
BY CUSTOMER SHIPPING STATE, BY QUARTER, HOW MUCH SALE WAS GENERATED BY EACH
PRODUCT.
Top 5 best setting product by each state in last 1 month.
Compare product A's sales month by month for the past 12 months. |
|