You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

物业数据仓库中服务工单关联多物业的事实表建模方案

解决方案:针对多物业关联工单的建模方式

根据你的需求,核心是要同时满足两个统计目标:一是实际总工单数的准确性(单个工单不管关联多少物业都只算1次),二是按物业维度统计关联工单的覆盖数(每个关联物业对应1次工单计数)。以下是两种可行的建模方案:

方案1:拆分双事实表

(1)核心工单事实表 ServiceTicket_Core_FACT

  • 每条记录对应1个唯一工单(ServiceTicketID 为主键)
  • 存储工单的核心属性:创建时间、工单类型、状态、创建人等
  • 度量值:TotalTicketCount = 1(用于统计实际总工单数)
  • 仅关联单值维度(如工单类型、时间维度),不直接关联Property维度
  • 每条记录对应1个「工单-物业」关联对,即单个工单关联N个物业就生成N条记录(比如ServiceTicketID=1对应3条记录,分别关联PropertyID=1/2/3)
  • 存储关联的核心标识:ServiceTicketID、PropertyID
  • 度量值:AssignedTicketCount = 1(用于按物业维度统计关联工单数量)
  • 关联Property维度和ServiceTicket_Core_FACT(通过ServiceTicketID)

报表使用方式:

  • 要统计每个物业的关联工单数量:查询ServiceTicket_Property_Link_FACT,按PropertyID分组,对AssignedTicketCount求和,得到每个物业各1张的结果
  • 要统计实际总工单数:查询ServiceTicket_Core_FACT,对TotalTicketCount求和即可

方案2:单事实表+多行存储关联关系

如果不想拆分表,可以直接在ServiceTicket_FACT中存储「工单-物业」的多行关联:

  • 单个工单关联N个物业时,生成N条记录,每条记录的ServiceTicketID相同,但PropertyID不同
  • 新增两个度量值:
    • UniqueTicketCount:仅在工单的第一条记录中设为1,其余关联记录设为0(用于统计实际总工单数)
    • PropertyAssignedCount:每条记录都设为1(用于按物业统计关联次数)
  • 关联所有需要的维度(包括Property维度)

报表使用方式:

  • 按物业统计关联工单数量:按PropertyID分组,对PropertyAssignedCount求和
  • 统计实际总工单数:对UniqueTicketCount求和,或者对ServiceTicketID做COUNT(DISTINCT)

关键说明

  • 你提到的桥接表方案本身没问题,但之前的问题是用错了统计方式:如果用桥接表关联单条工单的事实表,统计时应该统计「关联对的数量」而非「工单数量」,而上述方案直接把关联对作为事实记录,更直观满足报表需求
  • 分配系数方案不适用你的场景,因为你需要的是整数计数而非比例分摊,所以直接存储关联对的事实记录是最贴合需求的方式

内容的提问来源于stack exchange,提问作者Joe S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:43:25