【问题标题】:BI multi-dimensional modeling: How to turn measures into dimensions?BI多维建模:如何将度量转化为维度?
【发布时间】:2014-08-07 17:27:02
【问题描述】:

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

Date, SalesRep, Product, Region, Units, Amount

现在,很简单,我可以对金额求和,然后对区域进行汇总,如下所示:

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

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

我们欢迎任何朝着正确方向的努力。

【问题讨论】:

    标签: data-modeling data-warehouse business-intelligence dimensional-modeling


    【解决方案1】:

    动态值带:

    http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-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 $
    

    【讨论】:

    • 非常感谢马雷克。我选择的示例很差,实际上我不想将 aggregated 值分配给那些带状维度,而是 row level 事实。所以,为了坚持这个例子,我想将单个金额分配给交错范围。
    • @Prefect73 我不确定我是否跟随。是否要将每个事实行(包含收入值)分配给在分段维度中定义的范围之一?您可以使用上述方法做到这一点,但是一旦您按区域对行进行分组并汇总多行,分类就会停止有效,例如添加两个 >10,000 行可以产生一个属于相同范围的行 (11,000 $ + 12,000 $) 或 >25,000 一个 (15,000 $ + 16,000 $) - 您需要计算总和并动态分配范围。如果我在正确的轨道上,请告诉我。
    • 但由于这是对错误问题的正确答案,我当然会标记它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2014-06-03
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多