文章
如何区分业务过程gpt思考
问题:我现在数据建模停滞于如何区分业务过程,我现在手里有所有的表,但是不接触业务。我们公司是服务企业申报高企的,帮助企业申报软著,专利,获客方法就按照指定规则给企业分类,业务人员给级别较好的分类公司联系方式打电话,进行电话营销,联系方式包含手机,固话,邮箱。另外企业和联系方式实时从这企查查导出来入库的。然后扩展了企业信息和联系人信息,帮我分析下如何区分业务过程。另外采集入库需要做成事实表吗,是不是作为维度比较合适,爬虫采集入库对业务人员不可见,他们只关心有没有这个企业,数据是不是最新。现在能确定的是有企业基本信息,联系人,联系方式维度表。业务人员龟打电话洽谈,🈶洽谈记录,同时对打不通的电话号码标注无效标签,如果对方是项目负责人会对还联系人标注项目负责人,如果不是本公司人员也会标注非本公司,简单来说业务人员通过洽谈来对联系人或者联系方式打标签,有专门的表存储联系人,联系方式标签的。还有一个补充信息,采集导入的数据还有从企查查等平台导入的,专利,软著,工商变更记录,商标,等信息,谢谢从第三方采集的且围绕企业的是不是也是维度表,他们入库得时候都会根据企业名称或者信用代码补充company id。补充下以上专利,软著,等采集入库维度都是单独存表,再补充一个信息以上维度表单独存表的时候company id也已经一并入库了,所以不需要再补充企业id。
gpt回复:
你现在卡住的点 不是表结构问题,而是“业务过程(Process)如何定义”。这也是很多做数据仓库、建模、数仓分层、指标体系的人,最容易卡住的地方。
你已经有业务实体(企业、联系人、联系方式、软著、专利、工商变化 etc.),但 业务过程行为还没拆清楚。
我带你一步一步推导👇
🧠 先回答最关键的问题:什么是业务过程(Business Process)?
业务过程 = 可量化、可累计、可统计、随时间发生的业务行为。
不是实体,不是静态信息,而是:
✔ 会重复发生
✔ 发生有时间戳
✔ 会产生衡量指标(如次数、成功/失败、时长、结果等)
比如:
| 类型 | 属于业务过程吗? | 理由 |
|---|---|---|
| 企业基本信息采集 | ❌ 否 | 静态数据,随时间更新,但不是行为 |
| 对联系人打电话 | ✔ 是 | 业务行为,有时间戳、成功率、标签结果 |
| 给企业分级评分 | ✔ 是 | 可统计、可比较、有执行动作 |
| 采集企查查软著、专利 | ⚠️ 视情况 | 若只是外部同步 → 维度 若采集行为计入运营周期 → 可视为过程 |
🎯 基于你描述的业务,核心业务过程明确如下:
| 业务过程(Fact) | 是否事实表 | 举例指标 | 是否已识别 |
|---|---|---|---|
| 企业分类/打分 | ✔ Yes(事实表) | 分类来源、模型版本、分值、分类等级 | ✔ |
| 外部数据采集(企查查等) | ❌ 倾向维度(不是行为) | 更新时间、来源渠道 | ✔ |
| 业务人员拨打电话(销售行为) | ✔ Yes(事实核心) | 是否接通、洽谈结果、通话时长、标签变更 | ✔ |
| 标签更新行为 | ⚠ 可独立事实 OR 写入事实属性 | 标签变化时间、操作来源 | 👍 推荐单独建 |
| 客户成交 / 上线项目(若有) | ✔ Yes | 成交金额、周期、责任人 | 🤔 未提及 |
📌 所以你真正需要的事实表有 3~4张:
| Fact Name | 描述 | 粒度 |
|---|---|---|
| Fact_Scoring | 企业被模型或规则分级的行为 | 一次计算一次记录 |
| Fact_Call_Record(最重要) | 打电话、沟通、跟进行为 | “一次拨打”级别 |
| Fact_Tag_Update(可选) | 标签变化历史记录 | 联系人 or 联系方式级别 |
| Fact_Deal(如果有成交) | 成交订单/转化行为 | 公司级 |
🧩 那采集数据(专利、软著、工商等)怎么建模?
你问得很好:
“采集入库需要做成事实表吗,是不是维度比较合适?”
✔ 这个属于 维度,不是事实。
因为它:
- 没有行为动作
- 没有参与业务流程
- 只是企业属性(且会更新)
- 不用于 KPI,但用于提高线索价值
因此应该建宽维度体系,例如:
| Dimension | 主键 | 示例字段 |
|---|---|---|
| Dim_Company | company_id | 企业名、信用代码、经营范围 |
| Dim_Patent | patent_id + company_id | 申请日期、类型、申请人、专利数量 |
| Dim_Software_Copyright | sw_id + company_id | 软件著作权数量、授权日期 |
| Dim_Trademark | trademark_id + company_id | 类型、有效期 |
| Dim_Business_Change | id + company_id | 变更时间、变更类型、变更内容 |
🚨 但这些维度不会写在主事实表里,而是通过 company_id 进行关联,用于画像、打分、线索优先级排序。
📌 联系方式无效判断、负责人标签属于哪一类?
这些属于:
🎯 业务行为对维度属性的强化(状态变化)
通常做到两件事:
1)写入宽维状态维度表(最新状态)
| 表名 | Dim_Contact_Status |
|---|---|
| 字段示例 | phone_status,is_valid,last_call_outcome,contact_role… |
2)写入历史记录事实表(追踪变化)
| Fact_Tag_Update |
|---|
| contact_id, phone_id, tag_id, action_time, operator |
🔧 推荐建模结构(你最终的⛔停滞点解决)
📍维度层(Dim)
| 类别 | 表 |
|---|---|
| 实体维度 | 企业、联系人、联系方式 |
| 业务属性维度 | 企业评分等级、联系状态、标签、来源渠道 |
| 第三方采集维度 | 专利、软著、工商变更、商标… |
📍事实层(Fact)
| Fact | 粒度 | 是否主事实 |
|---|---|---|
| Fact_Call_Record | 一通电话 | ⭐ 主事实 |
| Fact_Scoring | 一次评分任务 | ✔ |
| Fact_Tag_Update | 一次标签变更 | ✔ |
| Fact_Conversion / Order(若未来有) | 成交行为 | ✔ |
🔥 你未来能做的指标体系
| 指标 | 来源 |
|---|---|
| 呼叫接通率 | Fact_Call |
| 无效号码率 | Fact_Call + Dim_Contact_Status |
| 标注有效联系人转化率 | Fact_Tag_Update |
| 企业评分提升趋势 | Fact_Scoring |
| 企业价值预测(AI) | 全维数据 |
🏁 总结一句话
实体信息 → 维度表
行为动作 → 事实表
维度表可更新,事实表只追加不修改
你现在已经明确:
✔ 企业、联系人、联系方式、专利、软著 → 维度
✔ 分级、打电话、加标签、售前行为 → 业务过程 → 事实表
问题:分级、打电话、加标签、售前行为 → 业务过程 → 事实表 以上我有个疑问:分级是离线调度周期性做的工作。加标签不是说是维度增强么 也变成业务过程了?
gpt回复:
你的疑惑很典型,属于**“行为事实 vs 维度更新”**边界问题。很多成熟数仓团队一开始也会卡在这个点。
我给你拆开讲👇
🚦 先回答问题 1:分级(企业评分)算不算事实表?
结论:✔ 算业务过程(事实表),即使它是离线计算产生的。
为什么?
判断标准不是是否手工操作,而是:
- 它是随时间发生的行为
- 结果随模型、数据变化而变化
- 每次执行可以形成版本差异
- 是指标体系计算来源(优先级排序、评分变化趋势、ROI预测)
📌 所以分级 ≠ 维度,它属于周期性事实(Periodic Snapshot Fact)。
📌 示例结构:
| 字段 | 示例 | 含义 |
|---|---|---|
| company_id | 10001 | 企业标识 |
| score_value | 92.7 | 评分 |
| score_grade | A | 分类等级 |
| model_version | v1.3.5 | 算法或规则版本 |
| score_time | 2025-11-24 03:00 | 执行时间戳 |
类似金融行业的信用评分、风控评分、客户流失预测 → 全部是事实表。
🚦 再回答问题 2:加标签到底算维度增强还是事实?
答案:两者都有,关键看你要不要“记录历史”。
🅰️ 如果不关心历史,只保存最终状态:
→ 标签是维度增强字段
→ 放进 Dim_Contact 或 Dim_Phone 的扩展字段
→ 只存最后一次标签结论(不保留变化轨迹)
📌 这种适合CRM 或静态业务
📌 不适合分析趋势、行为转化效果
🅱️ 如果你需要分析:
- 标签来源(人工/自动规则)
- 标签变更频率
- 哪类企业从“无意向”变成“意向强烈”
- 多少通电话后会被标注为“项目负责人”
→ 必须作为 事实表(带历史行为记录)
📌 示例:
| 字段 | 示例 |
|---|---|
| contact_id | 30021 |
| tag_id | PROJECT_OWNER |
| action_type | add / update / remove |
| operator | user_233 or model_v1.2 |
| action_time | 2025-11-24 10:15 |
| source | manual / auto_rule / AI |
⚠️ 但维度表仍然保存当前最新状态,所以常见结构是:
Dim_Contact ←保存最终标签状态
Fact_TagHistory ←保存标签变化行为历史
这种模型名字叫:
缓慢变化维度 + 行为事实
(SCD + Fact)
🧱 总体结构对比总结表
| 类型 | 例子 | 性质 | 存储位置 |
|---|---|---|---|
| 静态信息 | 企业名称、手机号 | 不随行为变化 | 维度表 |
| 状态型信息(随时间更新) | 电话是否有效、标签当前值 | 只存最新状态 | 维度表(维度增强) |
| 历史行为信息(可分析趋势) | 创建标签、删除标签、评分生成、电话拨打 | 可统计、可分析 | 事实表 |
🎯 最核心的一句话
凡是“业务动作”,不管是自动执行还是人工执行,都属于事实表。
凡是“属性描述”,不管来源是采集还是人工维护,都属于维度表。
问题:标签是单独存储的表 里面存储了所有的标签,无效的标签会设置delete_flag='1' 即逻辑删除。
gpt回复:
OK,你补充这句话 非常关键,说明你现在的标签体系属于:
抽象标签字典 + 标签使用记录表 + 最新标签状态分层存储机制
基于你提供的信息,可以确定你们的标签行为 不是简单维度字段,而是完整标签体系,所以建模方式需要升级成业界成熟做法。
✅ 你说的标签体系结构含义解析
你现在有:
| 表 | 意义 |
|---|---|
| 标签定义表(Tag Dictionary) | 存放标签种类、含义、分类、是否启用 |
| 逻辑删除 delete_flag | 表示标签是否仍在使用,而不是使用记录是否删除 |
| 标签与实体关系表(打标签行为) | 联系人或联系方式被打了哪些标签 |
这个结构说明:
- 标签不是固定字段,而是动态扩展体系(Flexible Schema)
- 标签不是描述实体的静态属性,而是业务动作产生的业务状态
- delete_flag 变化表示标签生命周期,而不是用户行为
这意味着:
标签不是维度字段,而是一类实体(维度),标签应用动作是一类事实。
🚦 那么最终标签建模方式应该是:
### 📌 1)标签定义维度表(Dim_Tag)
存储标签的元信息:
| 字段 | 含义 |
|---|---|
| tag_id | 主键 |
| tag_name | 标签名称(如 "号码无效") |
| tag_type | 类别(如电话状态类) |
| is_deleted | delete_flag |
| create_time / update_time | 标签规则更新历史 |
这是 维度表,因为标签本身是业务语义,不是行为。
📌 2)标签应用事实表(Fact_Tag_Assignment)
用于存储:
- 谁(哪个操作人、哪个系统)
- 在什么时间
- 给哪个对象(企业、联系人、手机号)
- 贴了什么标签
- 是新增、修改、取消?
| 字段 | 示例 |
|---|---|
| id | 自增 |
| contact_id or phone_id | 关联对象 |
| tag_id | 关联标签维度 |
| action | add/update/remove |
| operator | user_233 or system_rule_v3 |
| action_time | 行为时间 |
这个表是 事实表(Fact),因为它属于行为、可统计、可分析。
📌 3)标签最新状态宽表(维度增强)
用于查询当前状态,不可作为历史数据来源:
| contact_id / phone_id | tag_list | last_update_time |
|---|
这个可以定期离线构建(DWD → DWS)。
🧠 为什么不能直接把标签当维度字段?
因为标签:
- 数量可变(未来新增业务标签不需要改模型)
- 状态随业务变化
- 需要统计趋势,如:多少电话从"未联系"→"有效"→"成交"
- 需要历史回溯,而不是只存当前状态
如果把标签当维度字段:
✔ 查询方便
❌ 但无法回答:
上周新增了多少“号码无效”标记?
一个号码从“未分类”变成“业务负责人”平均需要几次通话?
哪些标签是业务人员手动打的,哪些是系统规则生成的?
哪些标签已经废弃,之前是谁在使用?
这些都是公司后面做增长、精细化运营、AI训练数据需要的。
🎯 建模分类总结
| 数据类型 | 表名 | 类型 |
|---|---|---|
| 标签基础信息 | Dim_Tag | 维度表 |
| 某次加标签动作记录 | Fact_Tag_Assignment | 事实表(事件行为) |
| 当前最新标签状态 | Dim_Contact_Tag_Snapshot(可选) | 状态派生维度 |
🏁 最后一段话帮你彻底理解
标签本身是维度,贴标签行为是事实。
维度描述含义,事实描述发生。
事实表记录时间过程,维度表记录语义结构。
最终状态也可以归入维度,但不是事实替代品。