【问题标题】:How to model process and status history in a data warehouse?如何在数据仓库中建模过程和状态历史?
【发布时间】:2012-06-22 07:40:47
【问题描述】:

假设我们有D_PROCESSD_WORKERD_STATUS 作为维度,而F_EVENT 将流程(内容)与工作人员(负责人)和“当前”状态联系起来。

进程状态随时间而变化。我们应该在F_EVENT 中存储每个进程/状态/worker 一行,还是每个进程/worker 一行,以及“其他地方”为给定进程/worker 的每个状态更改一行?

我是 Datawarehouse 的新手,很难找到与数据建模相关的最佳实践/教程。

【问题讨论】:

    标签: ssas data-modeling data-warehouse dimension fact


    【解决方案1】:

    阅读 Ralph Kimball 撰写的 The Data Warehouse Toolkit,了解维度建模的精彩介绍。

    听起来您在 F_EVENT 中存储了一个流程更改事件。如果这个过程有一个定义的开始和结束,我会建立一个快照事实表,它可以让你随着时间的推移跟踪这个过程(只需在每次过程从一个步骤移动到另一个步骤时更新行)。

    编辑:

    我将尝试使用您的尺寸作为示例来制作一般情况。

    对于 D_PROCESS,建模“流程”通常不建模为维度,您称其为“什么”,因此我将其重命名为“D_ACCOUNT”。

    基本数据模型将用于“税务处理系统”,其中 WORKERS 正在处理 ACCOUNTS,并且每个 ACCOUNT/WORKER 组合都有几个可能的“状态”,说明该流程当前所处的位置。

    D_ACCOUNT
        ACCOUNT_NUMBER
        ACCOUNT_TYPE
    
    D_WORKER
        WORKER_ID
        FIRST_NAME
        LAST_NAME
        BADGE_NUMBER
        SHIFT
    
    D_STATUS
        STATUS_ID
        STATUS_NAME
    

    现在,如果我想报告由工作人员执行的帐户发生的所有“事件”,我可以构建一个事务级事实表 F_EVENT:

    F_EVENT
        ACCOUNT_ID
        WORKER_ID
        STATUS_ID
        EVENT_TIME_ID
        Metrics taken at time of the measurement (Cost, Worker time spent, etc)
    

    我们将标识行的唯一维度组合称为事实表的粒度粒度

    此表的粒度是 Account、Worker、Status 和 Time。它回答了诸如“我的 3 班工人在周三花了多少时间处理账户?”之类的问题。或“发生了多少事件将处理状态更改为“CLOSED”?

    我不确定这种类型的表格会有多大帮助。

    相反,假设您有兴趣跟踪流程本身,因为它在各种状态中移动。我将假设状态总是及时向前移动,从“未开始”到“处理中”再到“关闭”。

    我将构建 Kimball 所说的“累积快照事实表”。

    F_TAXPROCESSING
        ACCOUNT_ID
        WORKER_ID 
        CURRENT_STATUS_ID
        NOT_STARTED_DTTM
        NOT_STARTED_FLAG
        IN_PROCESS_DTTM
        IN_PROCESS_FLAG
        CLOSED_DTTM
        CLOSED_FLAG
    

    此表的粒度是 Account, Worker。此表通过更新状态更改的日期/时间以及达到该状态时的标志来跟踪“过程”。

    这使您可以随着时间的推移跟踪流程,让您查看有多少帐户对“处理中”状态做出了反应,到达那里花了多长时间等等。

    【讨论】:

    • 对不起,我的意思是过程而不是产品(事实上它完全不同,但我试图摆脱我们的业务条款)。您说“更新”该行,好吧,但是如果我想在给定日期在我的多维数据集中分析状态 C(例如从 A 到 D)的所有进程怎么办?
    • 数据仓库是关于业务术语的——不要试图“概括”太多。 DW 解决方案采用关系抽象模型,并尝试对它们进行建模,就像业务使用它们一样。我会尝试在编辑中回答您的问题。
    • 谢谢。但是如果尝试将我们的法语减税相关术语翻译成英文,你会很难看:)
    • 更新了答案。如果您有更多问题,我会在Data Warehouse chat 待会儿......
    • @n-we​​st 如果我必须跟踪很多有趣的中间状态,那么如何处理呢?
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多