阅读材料: 第17部分. 支付与风险信号展示

模块「第17部分. 支付与风险信号展示」中第 1 / 5 节课
您正在未登录状态下查看课程。 请登录,以保存进度并参加测试。

第17部分. 支付与风险信号数据集市

支付数据的危险之处在于,技术上简单的聚合操作可能看起来像是风险决策。在教科书 mart_payment_risk_signals 中——这不是评分引擎。这是一个观察数据集市:哪些交易被标记了风险标志,哪些金额/渠道需要关注。

粒度

对于交易级风险数据集市,粒度为:

每行对应一个 `transaction_id`

如果数据集市按客户或日期进行聚合,那么这是另一个数据产品。即使 SQL 变得更短,也不能悄无声息地将交易级 mart 改为客户级 mart。

需要检查的内容

  • transaction_id 不为空且唯一;
  • 金额不为 null
  • 风险标志被视为源系统的教学信号;
  • 不出现直接的 PII;
  • 没有风险标志的交易不会在没有规范的情况下从上游层删除;
  • 审查者能够看到阈值在哪里——这是教学规则。

不好的做法

where risk_flag = true

这种过滤对于特定的 mart 可能是允许的,但前提是规范明确规定:"数据集市仅包含风险事件"。如果消费者期望看到所有带有风险标志的交易,那么这种过滤器会破坏完整性。

Qwen 查询

读取 stg_card_transactions、mart_payment_risk_signals 和 specs。
确定粒度、包含哪些交易、排除哪些交易,以及风险数据集市需要哪些检查事实。
不要修改文件。

最小输出

编写风险数据集市的注释:

数据集市:
粒度:
风险标志来源:
包含的行:
排除的行:
检查事实:
审查者的手工问题:

给读者的解析

风险信号数据集市看起来很简单:取出带有 risk_flag 的交易,加上大额金额,然后给出列表。但正是在这里,代理最常开始凭空捏造业务逻辑。它可能会决定风险仅仅是源系统的标志。或者风险是超过阈值的金额。或者需要按客户聚合,因为这样更便于报表。这些决策都是可能的,但任何一项都不应在没有规范的情况下出现。

在教学项目中 mart_payment_risk_signals 不是评分模型。这是原则性的区别。评分需要方法论、可解释性、质量控制、法律和风险程序。而这里的数据集市是为了 SDD 教学:展示如何将信号源与决策分离,将交易级粒度与客户级聚合分离,将观察与结论分离。

大额阈值同样是一个教学规则,而不是银行事实。如果阈值仅写在 SQL 中,审查者将无法理解它是临时简化、产品需求还是代理的猜测。因此,阈值应出现在规范、检查备注和审查者报告中。这样,未来的作者可以将其替换为其他方法论,而不会出现潜在的偏差。

本章教授一个重要问题:"数据集市代表哪一行?" 如果行是交易,那么 transaction_id 是键,客户可能会重复。如果行是客户,则需要不同的字段、不同的测试和不同的规范。不能仅仅因为这两种方式都能用于讨论风险,就认为它们可以互换。

实践

描述风险数据集市的两种变体:交易级和客户级。对每种变体,指出其粒度、消费者,以及为什么不能悄无声息地用一种变体的 SQL 替换另一种。

常见错误

将教学用的 risk_flag 转化为真实的决策。在银行领域,这样的决策需要单独的模型、可解释性、管理程序和法律审查。在本卷中,风险标志是 SDD 流程的信号,而不是评分产品。

检查问题

  1. 为什么交易级和客户级风险数据集市不能混合?
  2. 什么时候过滤器 risk_flag = true 是破坏性的更改?
  3. 审查者应该检查什么手工事实?
我的笔记
0 / 10000

笔记保存在当前浏览器中。在其他设备上将不会显示。

课程菜单

课程

SDD Data. 使用 Qwen Code 和 dbt 构建银行数据平台
进度 0 / 110