1

所以这就是我打算做的事情:假设我们有一个典型的销售事实表,其中包含典型的列,例如:

Date, SalesRep, Product, Region, Units, Amount

现在,很简单,我可以总结 Amount 并将其汇总到 Region 中,如下所示:

Region      Sum of Revenue
------      --------------
North       56,234 $
South       48,788 $
East        38,787 $
West        15,334 $

但是,如果我想以另一种方式使用它怎么办,如下所示:

Revenue range    Region
-------------    ------
>50,000          North
>25,000          South
                 East
>10,000          West

这意味着将定量事实视为一个维度,反之亦然,对吗?但是如何将度量转换为维度?

任何朝着正确方向的推动都将受到欢迎。

4

1 回答 1

1

动态值带:

http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/Dimension-modeling-techniques/dynamic-value-banding/

动态值带报告被组织为一系列报告行标题,这些标题定义了目标数字事实的一组不同大小的渐进式范围。例如,银行中的常见价值分段报告有许多行,其中包含“余额从 0 美元到 10 美元”、“余额从 10.01 美元到 25 美元”等标签。

这种报告是动态的,因为特定的行标题是在查询时定义的,而不是在 ETL 处理期间定义的。行定义可以在通过大于/小于连接连接到事实表的小值带状维度表中实现,或者定义只能存在于 SQL CASE 语句中。

值带维度方法可能性能更高,尤其是在列式数据库中,因为 CASE 语句方法涉及对事实表的几乎无约束的关系扫描。

绑扎尺寸表:

ID | RANGE_SET    | RANGE_NAME | RANGE_MIN    | RANGE_MAX
---|--------------|------------|--------------|---------------
1  | THREE_RANGES | >50,000    |  50,000.01 $ | 9,999,999.00 $
2  | THREE_RANGES | >25,000    |  25,000.01 $ |    50,000.00 $
3  | THREE_RANGES | >10,000    |  10,000.01 $ |    25,000.00 $
10 | BIG_SMALL    | Small      |       0.00 $ |   100,000.00 $
11 | BIG_SMALL    | Big        | 100.000.01 $ | 9,999,999.00 $

该列RANGE_SET允许在同一个维度表中存储几组范围,并用于对定义的范围进行分组。

汇总事实表:

如果您正在处理大型事实表并且动态方法过于占用资源,您可以将数据加载到聚合事实表中并使用收入总和来获取适当的绑定键。

REGION | BANDING_ID | SUM_OF_REVENUE
-------|------------|---------------
North  | 1          |       56,234 $
South  | 2          |       48,788 $
East   | 2          |       38,787 $
West   | 3          |       15,334 $
于 2014-06-17T18:49:45.060 回答