反馈已提交

网络繁忙

您正在浏览的是 FineBI7.X 帮助文档,点击跳转至: FineBI6.X帮助文档

事实数据表

  • 文档创建者:April陶
  • 历史版本:5
  • 最近更新:April陶 于 2025-09-09
  • 1. 概述

    在维度模型中,事实数据表存储与事件关联的数据列。 它可以存储销售订单、库存余货、汇率、温度读数等。

    事实数据表包括若干数值列,例如「数量」。 在 FineBI 可分析查询在维度和分组中汇总指标值,如销售订单数量(通过使用总和、计数、平均值和其他函数)。

    事实数据表还包括维度键,它们用于确定事实的维度。 维度键值用于确定事实的粒度,即定义事实的原子级别。 例如,销售事实数据表中的订单日期维度键设置日期级别的事实粒度,而销售目标事实数据表中的目标日期维度键则可以在季度级别设置粒度。

    若要轻松识别事实数据表,通常要为其名称加上前缀 f_ 或 Fact_。

    2. 事实数据表结构

    1.png

    主键

    示例事实数据表没有主键。 这是因为它通常没有什么有用的目的,并且会不必要地增加表存储大小。 主键通常由一组维度键和属性表示。

    维度键

    示例事实数据表具有各种维度键,用于确定事实数据表的维度。 维度键是对相关维度中的代理键(或更高级别属性)的引用。

    注:示例是一个不寻常的事实数据表,至少不包含一个日期维度键。

    一个事实数据表可以多次引用某个维度。 在这种情况下,它被称为角色扮演纬度。 在此示例中,事实数据表具有 OrderDate_Date_FK 和 ShipDate_Date_FK 维度键。 每个维度键表示不同的角色,但只有一个实际日期维度。

    最好将每个维度键都设置为 NOT NULL。 

    属性

    属性

    示例事实数据表有一个属性。 属性提供其他信息并设置事实数据的粒度,但它们既不是维度键,也不是维度属性,也不是数值列。 在此示例中,属性列将存储销售订单信息。 其他示例可能包括跟踪号码或票证号码。 出于分析目的一个属性可能会形成一个退化纬度

    数值列

    示例事实数据表还具有数值列,常见的为累加列(这意味着可以使用其他聚合对列求和与汇总)。

    审核属性

    示例事实数据表还具有各种审核属性。 审核属性是可选的。 它们使你能够跟踪创建或修改事实记录的时间和方式,并且可以包括提取、转换和加载 (ETL) 进程中产生的诊断或故障排除信息。 例如,你将要跟踪谁(或哪些进程)更新了行,以及何时进行的更新。 审核属性还可以帮助诊断具有挑战性的问题,例如 ETL 进程何时意外停止。

    3. 事实设计概念

    有三种类型的事实数据表:

    • 交易事实数据表

    • 定期快照事实数据表

    • 累计快照事实数据表

    交易事实数据表

    交易事实数据表存储业务事件或交易。 每行均以维度键和数值列以及可选的其他属性存储事实。 所有数据在插入时都是完全已知的,并且永远不会更改(除非更正错误)。

    通常,交易事实数据表以尽可能低的粒度级别存储事实,并包含在所有维度上累加的数值列。 例如存储每个销售订单行的销售事实数据表是交易事实数据表。

    定期快照事实数据表

    定期快照事实数据表以预定义的时间或特定时间间隔存储数值列。 它汇总了一段时间内的关键指标或性能指标,因此它对于趋势分析和监视随时间的变化非常有用。 数值列始终是半累加性的。

    清单事实数据表是定期快照表的一个很好的示例。 它每天加载每种产品的日末库存余货。

    当记录大量交易的成本很高,并且不支持任何有用的分析要求时,可以使用定时快照表来代替交易事实数据表。 例如,一天内可能有数百万种库存变动(这可以存储在交易事实数据表中),但分析只关注日末库存水平的趋势。

    累计快照事实数据表

    累计快照事实数据表存储跨明确定义的时间段或工作流累计的数值列。 它通常记录不同阶段或里程碑的业务流程状态,这可能需要数天、数周甚至数月才能完成。

    事实数据行在流程中的第一个事件之后很快加载,然后在每次发生里程碑事件时,该行都会按可预测的顺序进行更新。 更新会继续到此流程完成时。

    累计快照事实数据表具有多个日期维度键,每个键表示里程碑事件。数值列通常会记录持续时间。 

    数值列类型

    数值列通常以数值表示,常见为加法。 但是,某些数值列并不总是可以添加的。 这些数值列分为半累加性或非累加性。

    累加性数值列

    可跨任何维度对累加性数值列进行求和。 例如,订单数量和销售收入是累加性数值列(前提是收入以单一货币记录)。

    半累加性数值列

    只能跨特定维度对半累加性数值列进行求和。

    下面是半累加性数值列的一些示例。

    • 不能跨其他时间段对定期快照事实数据表中的任何数值列进行求和。 例如,不应对夜间采样的库存物料的年限进行求和,但可以每晚计算货架上所有库存物料的年限。

    • 不能跨其他产品对清单事实数据表中的库存余货数值列进行求和。

    • 不能跨货币对具有货币维度键的销售事实数据表中的销售收入进行求和。

    非累加性数值列

    不能跨任何维度对非累加性数值列进行求和。 一个例子是温度读数,从本质上讲,将其添加到其他读数是没有意义的。

    其他示例包括费率,比如单价和比率。 更好的做法是存储用于计算比率的值,这样可以在需要时计算比率。 例如,销售事实的折扣百分比可以存储为折扣金额数值列(除以销售收入数值列)。 或者,不应随时间推移对货架上库存物料的年限进行求和,但你可能会观察到库存物料的平均年限趋势。

    虽然有些数值列不能求和,但它们仍然是有效。 可以使用计数、非重复计数、最小值、最大值、平均值等来合并它们。 非累加性数值列在计算中使用时也可能会变为可累加。 例如,单位价格乘以订单数量产生销售收入,这是累加性的。

    无事实事实数据表

    当事实数据表不包含任何数值列时,称为无事实事实数据表。 无事实事实数据表通常记录事件或发生情况,如学生上课情况。 从分析的角度看,可以通过统计事实数据行来实现对维度的度量。

    4. 合并事实数据表

    合并事实数据表表示将基本事实数据表汇总到更低的维度和/或更高的粒度。 其目的是加速常见查询维度的查询性能。


    附件列表


    主题: 指标中心
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持