主题: 第18部分. 信贷组合数据集市
难度等级: 中级
预计学习时间: 3-4小时
前置要求: SQL基础知识 (SELECT, GROUP BY, 聚合函数, NULL处理)
了解数据集市(data marts)概念和分层架构 (staging → mart)
熟悉数据质量、可重现性和数据验证的原则
对信贷报告和stage/principal/days_past_due术语有一般了解
学习目标: 解释教学数据集市mart_credit_portfolio_quality的目的及其最小契约
区分源事实(stage, principal, days_past_due)和规范中未规定的方法论解释
为聚合信贷数据集市应用验证不变量(NOT NULL, 非负金额, 行数匹配)
撰写正确的规范和审查备注,防止引入虚假的银行方法论
构建Qwen查询以分析数据集市而不修改源文件
概述: 第18部分专注于信贷组合数据集市mart_credit_portfolio_quality——一个展示SDD Data与聚合报告功能相结合的教学构件。这里中心风险从PII泄露转向虚假方法论风险:stage、principal、逾期和组合质量等词汇听起来像是严肃的银行模型(IFRS 9, PD, LGD, ECL)的要素,代理可能会试图通过引入外部知识来"改进"教学示例。本章教导分离源事实与解释,通过规范和审查备注固定数据集市边界,并收集确保报告可重现性和诚实性的验证不变量。
关键概念: 信贷组合质量数据集市: 一个教学型data mart,通过stage特征聚合合成信贷。最小契约:stage NOT NULL, principal以可重现方式聚合,聚合时不丢失逾期信息,stage来源明确描述,业务解释不由代理虚构。
Stage作为合成特征: 在真实银行中,stage与IFRS 9和风险方法论相关,但在教学示例中,stage仅仅是源字段。必须明确将其视为合成数据,否则代理将开始在不存在方法论的地方"补充"方法论。
事实与解释分离原则: 数据集市的每个字段都应分类为(a)源事实,(b)教学简化,或(c)需要单独的银行规范。没有这种分类,数据集市看起来令人信服,但可能意味着不同的事物。
数据集市最小契约: 一组义务:stage not null, principal金额非负(如果源规则规定),行数与唯一stage值的数量匹配,审查员确认stage在SQL中未被重新定义,影响契约的备注已记录。
规范vs.实现: 不好的规范:"计算信贷组合质量"。好的规范:"按源stage对合成信贷进行分组;显示loan_count和principal_rub;不推导IFRS的分期规则;将stage视为源字段"。实现必须严格遵循规范。
用于集市审查的Qwen查询: 标准化的提示词如:"比较stg_loans和mart_credit_portfolio_quality。展示SQL做出了哪些业务假设。分离源事实与推导规则。不要修改文件。"——允许在不修改源文件的情况下进行审计。
审查备注: 由六个块组成的固定结构:源stage、聚合、指标、假设、验证、需要确认。这是一个谦逊的角色:审查员不是信贷委员会,只是检查数据集市的边界。
典型错误:虚假方法论: 代理可能了解IFRS、PD、LGD、ECL等术语,并试图将其引入教学项目。在没有产品规范的情况下,这是一个错误:集市开始声称比其能够证明的更多的东西。
Days past due作为源事实: 逾期天数是系统数据,而不是关于组合质量的方法论决策。days_past_due如何影响stage的决策——这已经是需要规范的方法论。
Principal rub及其双重性: 可能表示债务余额或原始贷款金额。如果规范中未明确说明,聚合看起来正确,但解释含糊。规范应关闭问题或明确将其保留为开放。
重要日期: 2018年1月1日: IFRS 9生效日期——在真实银行中将stage与预期信贷损失(ECL)计算相关联的标准。在教学数据市中,这是外部上下文,仅为理解stage字段性质而提及。
日期未指定——教学上下文: 在课程中,stage被视为合成特征,不与真实方法论日期相关联。教学示例中的任何"ECL计算日期"都是代理虚构的,应删除。
练习题: 名称: 审计数据集市最小契约
问题: 给定形成mart_credit_portfolio_quality的SQL查询:
SELECT stage, COUNT(*) AS loan_count, SUM(principal_rub) AS total_principal FROM stg_loans GROUP BY stage;
对照教学数据集市的最小契约检查它。哪些不变量在数据层面验证,哪些在规范层面验证?
解决方案: 步骤1. NOT NULL检查:确保stage不包含NULL(例如SELECT COUNT(*) FROM stg_loans WHERE stage IS NULL)。步骤2. 非负性检查:每个组的SUM(principal_rub) >= 0,或明确记录源规则允许负值。步骤3. 行数检查:数据集中的行数等于stage的唯一值数量。步骤4. 确认stage在SQL中未被重新定义(没有CASE WHEN days_past_due > 90 THEN 3...之类的表达式——这将是方法论)。步骤5. 影响契约的备注记录方法论未更改。
难度: intermediate
名称: 撰写审查备注
问题: 使用本章中的模板填写信贷数据集市的审查备注。假设stg_loans包含1200笔具有三个stage值(1, 2, 3)的合成信贷,principal_rub范围为50,000–5,000,000,days_past_due为0到180。
解决方案: 源stage: stg_loans.stage字段,无IFRS 9关联的合成特征。聚合:GROUP BY stage,聚合loan_count (COUNT)和principal_rub_total (SUM)。指标:loan_count, principal_rub_total, 平均principal_rub(仅作为源的派生指标)。假设:stage被视为源字段;principal_rub是源值的总和,不考虑余额;days_past_due在数据集中不被解释。验证:stage NOT NULL — OK;金额>= 0 — OK;行数= 3 — OK;stage在SQL中未被重新定义 — OK。需要确认:方法论解释(例如哪个stage被视为"问题")不在教学数据集市的范围内。
难度: intermediate
名称: 在SQL中检测虚假方法论
问题: 同事编写了一个包含以下片段的数据集:
SELECT CASE WHEN days_past_due <= 30 THEN 1 WHEN days_past_due <= 90 THEN 2 ELSE 3 END AS stage, COUNT(*) AS loan_count, SUM(principal_rub) AS total_principal FROM stg_loans GROUP BY 1;
本章原则的违反在哪里?以正确的形式重写查询。
解决方案: 违反:stage基于days_past_due在SQL中被重新定义。这是方法论的引入(本质上——简化的IFRS 9分期),规范中没有。代理(或同事)用其自己的逻辑替换了源字段。正确的形式:
SELECT stage, COUNT(*) AS loan_count, SUM(principal_rub) AS total_principal FROM stg_loans GROUP BY stage;
Stage用作源字段,不进行重新定义。如果需要按days_past_due的细分——这是具有单独规范的单独数据集市。
难度: intermediate
名称: 数据集市字段分类
问题: 在mart_credit_portfolio_quality数据集中出现字段:stage, loan_count, principal_rub_total, avg_days_past_due, ecl_provision。按三类对每个字段进行分类:(a)源事实,(b)教学简化,(c)需要单独的银行规范。
解决方案: stage — 源事实(stg_loans.stage字段)。loan_count — 源事实(从行数派生,可重现)。principal_rub_total — 源事实(如果被视为源值的总和),但需要澄清:余额或原始金额。avg_days_past_due — 教学简化(无方法论解释的源事实聚合)。ecl_provision — 需要单独的银行规范,因为IFRS 9 ECL是计算预期损失的完整方法论;没有单独的技术规范,不能将其添加到教学数据集市。
难度: intermediate
名称: 为审查制定Qwen查询
问题: 制定Qwen查询以比较stg_loans和mart_credit_portfolio_quality。查询应:(1)不修改文件,(2)突出SQL的业务假设,(3)分离源事实与推导规则。
解决方案: 本章的参考查询:"比较stg_loans和mart_credit_portfolio_quality。展示SQL做出了哪些业务假设。分离源事实与推导规则。不要修改文件。"在保留三个不变量的前提下,允许替代措辞:"只读"模式、明确要求突出假设、明确要求分离源与解释。
难度: beginner
案例研究: 名称: 案例1:代理用银行方法论"改进"了教学数据集市
场景: 学生正在使用教学数据集市mart_credit_portfolio_quality。收到"计算信贷组合质量"的任务后,LLM代理生成了根据IFRS 9规则计算stage的SQL(stage 1的12个月ECL,基于days_past_due和PD/LGD指标的stage 2和stage 3的终身ECL)。数据集市看起来很专业,包含十个指标,包括ecl_provision_rub。
挑战: 数据集市声称了规范中未包含的方法论内容。由于源数据是合成的,学生无法验证PD/LGD逻辑的正确性。同时报告看起来"真实",可能被错误地视为银行分析。
解决方案: 学生返回规范,以明确形式重写:"按源stage对合成信贷进行分组;显示loan_count和principal_rub;不推导IFRS的分期规则;将stage视为源字段"。SQL根据该规范重写。代理使用更新的规范重新调用——所有ECL字段已删除。
结果: 数据集市缩减为三个字段(stage, loan_count, principal_rub_total),但变得诚实和可重现。审查备注记录了方法论不在范围内。学生学到了关键教训:实现遵循规范,而不是代理的"常识"。
经验教训: LLM代理可能了解IFRS 9 / PD / LGD / ECL术语,并在没有规范的情况下引入它们——这是教学项目的典型错误
规范必须明确并关闭方法论决策,否则代理将为学生做出这些决策
可重现性比虚假的完整性更重要:一个不撒谎的小数据集市比一个声称额外内容的大集市更有价值
相关概念: Stage作为合成特征
事实与解释分离原则
典型错误:虚假方法论
规范vs.实现
名称: 案例2:principal_rub的差异——余额或原始金额
场景: 分析师构建数据集市mart_credit_portfolio_quality并按原样从stg_loans中获取principal_rub字段。数据集市显示1200笔信贷的SUM(principal_rub) = 42亿卢布。在向管理层展示时,出现了一个问题:"这是当前余额还是发放金额?"。分析师无法立即回答。
挑战: 在规范中未澄清的情况下,相同的数字可能意味着根本不同的东西。如果是余额——组合健康;如果是未考虑还款的发放金额——情况不同。数据集市看起来可信,但解释含糊不清。
解决方案: 分析师求助于来源,确定principal_rub是发放时的原始贷款金额。规范通过明确说明补充:"principal_rub被视为贷款的原始金额(gross principal at origination),不考虑还款"。如果字段表示余额,则措辞将相应调整。
结果: 审查备注在"假设"块中获得澄清。现在数据集市的任何解释都是明确的。分析师制定了一条规则:"在信贷数据中,特别有用的是将源事实与解释分离"。
经验教训: principal_rub是一个含义模糊的字段:余额或原始金额。规范必须关闭这个问题
看起来令人信服的聚合可能意味着不同的事物——这是数据质量风险
规范应关闭问题或明确将其保留为开放——但不能保持沉默
相关概念: principal_rub及其双重性
事实与解释分离原则
数据集市最小契约
名称: 案例3:教学数据集市意外进入监管报告
场景: SDD Data的内部教学项目展示了具有真实数字的数据集市mart_credit_portfolio_quality。演示数据意外连接到用于每周组合审查的工作BI仪表板。一位信贷分析师将数字从数据集市复制到了内部备忘录。
挑战: 教学数据集市与真实组合无关,但其外观(stage, principal_rub, days_past_due)与实际报告无法区分。出现了将合成数据用于真实管理决策的风险。
解决方案: 团队在数据集中添加了明确的教学技术标记:DDL文件开头的注释,名称中的水印"EDUCATIONAL MART — NOT FOR REGULATORY REPORTING",单独的数据库架构。审查备注补充了关于应用边界的块。
结果: 意外使用停止。团队规定:教学数据集市必须在名称、架构和元数据中具有明确的教学标记,以便不会与实际报告混淆。
经验教训: 数据集市的外观(stage, principal, 逾期)不应掩盖其教学状态
技术标记(架构、前缀、水印)对教学构件是必需的
好的审查员报告不仅检查SQL,还检查数据集市的使用上下文
相关概念: Stage作为合成特征
审查备注
教学数据集市与真实方法论之间的边界
学习建议: 编写SQL之前,始终返回规范并检查您是否正在引入其中不存在的方法论
使用LLM代理工作时,使用明确的禁止:"不推导IFRS的分期规则"、"将stage视为源字段"、"不修改文件"
养成按六个块的模板填写审查备注的习惯——这可以训练纪律并防止"围绕未证明的方法论的自信文本"
在头脑中分离三个字段类别:源事实、教学简化、需要单独的银行规范——并将此分类应用于数据集市的每个字段
不要混淆可重现性和完整性:一个不撒谎的小数据集市总是比一个声称额外内容的大集市更好
分析days_past_due时请记住:数字是事实,而它如何影响组合质量的决策——已经是方法论
使用本章中的Qwen查询作为集市审查的标准提示词——它能很好地区分事实与解释
请记住审查员的谦逊角色:他不是信贷委员会,而是边界的检查者。这是对主要教学缺陷的预防
附加资源: Ifrs 9 — 金融工具(概述): https://www.ifrs.org/issued-standards/list-of-standards/ifrs-9-financial-instruments/ — 用于理解stage在真实银行中如何与ECL相关联。仅用作上下文,不用于引入教学SQL
数据集市文档(kimball): https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/ — 构建数据集市的经典原则
Dbt文档 — mart层: https://docs.getdbt.com/best-practices/how-we-structure/1-guide-overview — 现代ELT项目中mart层组织的示例
Dbt断言和not null测试: https://docs.getdbt.com/docs/build/tests — 用于自动化验证stage NOT NULL不变量
Great expectations — 数据验证: https://docs.greatexpectations.io/docs/ — 用于检查金额非负性和行数一致性的工具
SDD Data俄语课程: 教科书的第1-17部分 — 用于理解关于staging层和PII处理的一般原理的先前上下文
摘要: 第18部分教导如何处理聚合信贷报告,其中主要风险不是PII泄露,而是虚假方法论。数据集市mart_credit_portfolio_quality按stage字段聚合合成信贷,该字段仅被视为源字段,不在SQL中重新定义。最小契约要求:stage NOT NULL, principal的可重现聚合,stage来源的明确描述,没有虚构的业务解释。验证不变量包括NULL控制、金额非负、行数与唯一stage值的数量匹配,以及审查员确认方法论未更改。本章强化了三个关键技能:将源事实与解释分离,按固定模板撰写审查备注,以及制定用于无文件修改审计的Qwen查询。主要教训:教学数据集市应清楚地显示示例结束和真实银行方法论开始的地方——否则代理将在没有规范的情况下引入外部知识(IFRS, PD, LGD, ECL),报告将开始声称比其能够证明的更多的东西。