一、脚本核心加工目标
基于畜牧繁育场景的繁育管理、初检、复检三类原始明细数据,关联牲畜主档核心数据,以耳标为唯一核心维度,筛选每头牲畜分娩/流产后最新的 n 条繁育、n 条初检、n 条复检记录,通过列转行加工生成一站式繁育分析宽表,整合牲畜基础属性、繁育时序数据、核心业务衍生指标,为养殖业务的繁育行为分析、繁育及时性监控、繁育流程追溯等场景提供标准化数据支撑。
二、数仓分层加工逻辑(核心)
脚本严格遵循数仓经典的DWD(数据明细层)-DWS(数据汇总层)-ADS(数据应用层) 分层设计,各层职责清晰、数据流转链路明确,表名按「层级_核心维度_业务主题_规则」命名,字段均为中文释义,加工逻辑贴合农牧行业业务特性。

(一)DWD 层:基础明细数据层
作为整个加工流程的源数据层,数据直接同步自畜牧养殖业务系统,保留繁育全流程的原始操作记录,字段粒度最细、数据最完整,无冗余聚合与过滤,仅做基础的业务关联性校验。
核心涉及 3 张明细表:
dwd_繁育管理主表:存储牲畜繁育操作原始记录,含繁育日期、繁育方式、种公牛信息、操作人等全量业务字段;dwd_繁育初检明细表:存储繁育前的体检原始记录,含初检日期、产道/卵巢/子宫状态、初检结果、孕检人员等字段;dwd_繁育复检明细表:存储繁育后的复检原始记录,含复检日期、复检结果、是否重新繁育、复检人员等字段。
(二)DWS 层:数据汇总层(临时表加工)
作为承上启下的加工层,基于 DWD 层明细数据,按耳标维度做数据清洗、去重、筛选,生成标准化汇总临时表,为 ADS 层列转行加工做数据准备,核心加工逻辑对繁育、初检、复检三类数据完全复用,仅替换业务核心字段。
核心涉及 3 张汇总临时表:dws_耳标_繁育_8 最新_临时表、dws_耳标_初检_8 最新_临时表、dws_耳标_复检_8 最新_临时表,以繁育临时表为例,核心加工步骤为 4 层过滤/排序:
- 业务时序关联:通过耳标关联
dws_耳标_主档_最新表,通过isnull(分娩日期,流产日期)<繁育日期保证繁育记录均在分娩/流产后,符合畜牧养殖业务时序逻辑; - 同日期去重:通过开窗函数
row_number() over (partition by 耳标,繁育日期 order by 修改时间 desc),对同一耳标、同一繁育日期的多条重复记录,保留最新修改的 1 条,避免数据冗余; - 筛选最新 8 条:通过开窗函数
row_number() over (partition by 耳标 order by 繁育日期 desc),按耳标分组,筛选出繁育日期最新的 8 条有效记录; - 正序排序标记:通过开窗函数
row_number() over (partition by 耳标 order by 繁育日期) as 序号,对筛选后的 8 条记录按时间正序标记,为 ADS 层列转行做索引支撑。
(三)ADS 层:数据应用层(分析宽表产出)
作为脚本的最终产出层,以dws_耳标_主档_最新表为主表,通过多次左连接 DWS 层 3 张汇总临时表,实现多记录列转行加工,生成面向业务分析的宽表ads_耳标_繁育_最新分析宽表,直接对接 BI 报表、数据大屏、业务查询系统。
核心加工亮点:
- :按 DWS 层的「序号」,将每个耳标的 8 条繁育、8 条初检、8 条复检记录的日期字段,分别转换为、、,单条耳标对应单条宽表记录,贴合业务人员分析习惯;


