想象你搬进一座新城市。这里的自来水系统安排得明明白白:水务管理局制定水质规范,自来水公司守护水源,巡检员每天采样检测,抢修队随时待命处理爆管,市民拧开水龙头就有放心水。你不需要懂得水厂内部的复杂工艺,但水厂必须把每个岗位、每道流程都设计得清清楚楚——这就是“治理”。 企业的数据世界也是一座城市,每天有亿万条数据流动、加工、存储、被模型消费。如果各部门各行其是,数据就会像无人维护的水管一样,漏的漏、脏的脏、断的断。“数据治理组织与流程设计”要做的事,就是给这座数据城市建一座自来水厂:搭好领导班子、分好岗位职责、设计工作闭环、画好供水管网图、装上水质监测、建起直饮水认证层,再配一套持续改进的运营机制。本文会用这座“数据水厂”的故事,带你零基础看懂数据治理的组织怎么搭、流程怎么转,以及它如何为AI模型送去“纯净的水源”。

岗位关联

掌握数据治理组织与流程设计,是AI从业者从“写代码”迈向“治理数据资产”的分水岭。它能帮你厘清角色责任、打通质量与血缘闭环,让模型上线后不再被数据问题反噬,是数据科学家与MLOps工程师进阶的必修课。

目录
  1. 可视化演示
  2. 治理组织架构:谁来管数据这座城
  3. 角色职责划分:各司其职的岗位说明书
  4. 治理流程体系:从标准到发布的闭环
  5. 数据血缘追踪:供水管网图
  6. 数据质量管控:四道水质指标
  7. 可信层建设:直饮水认证线
  8. MLOps协同:模型与数据的联动调度
  9. 持续运营机制:水厂的年度考核
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态演示策略模式算法切换、观察者模式事件广播、命令模式请求封装三种行为型模式的对象协作与消息传递机制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

策略模式 策略模式将算法族封装为独立策略类,客户端通过上下文动态切换算法实现 上下文持有策略引用,运行时通过委托调用当前策略的算法方法 Context → Strategy.execute()

治理组织架构:谁来管数据这座城

一座城市能喝上放心水,靠的不是某一位英雄,而是一套组织:水务管理局拍板水质标准,自来水公司对水源负责,巡检员每天在管网里穿梭,市民则按规矩用水并及时报漏。如果这些角色缺位或重叠,水质就会失控。数据治理的第一个问题,同样是“谁来管”。

数据治理委员会是数据世界的“水务管理局”,通常由业务、IT和数据部门的高管组成,负责拍板数据标准、制度和优先级。数据所有者(Data Owner)是“自来水公司”——一般是业务部门负责人,对自己域内的数据资产承担最终责任。数据管家(Data Steward)是“巡检员”,负责日常执行质量检查、元数据维护和问题跟进。数据用户(Data User)则是分析师、算法工程师,他们按权限取数、反馈问题。

把这套组织落到纸上,常用RACI责任矩阵:每个数据域都要标出谁负责执行(R)、谁最终问责(A)、谁参与咨询(C)、谁只需被告知(I)。衡量组织是否“武装到位”,可以看责任覆盖度:

水务局如果连辖区有多少根水管都数不清,治理就是空谈。同样,只有当责任覆盖度逼近100%,数据这座城才算真正有了“管事的班子”。

G=RdefinedRtotal×100%G = \frac{R_{\text{defined}}}{R_{\text{total}}} \times 100\%
这个公式衡量的是:全部数据资产中,有多少已经明确了责任人并写进了RACI矩阵。
  1. R_defined(已定责资产)指已经明确数据所有者、管家和审批流程的数据资产集合。好比每根供水管道都挂上了“责任牌”,出了问题能找到具体负责人。
    RdefinedR_{\text{defined}}
  2. R_total(资产总量)企业当前登记在册的全部数据资产,不论责任是否落实。
    RtotalR_{\text{total}}
  3. 比值与百分数两者相除得到比例,乘100%转成更直观的百分数,方便设定治理目标。
    ×100%\times 100\%

角色职责划分:各司其职的岗位说明书

自来水厂每个岗位都有一本厚厚的岗位说明书:水务局不亲自修水管,自来水公司不能自己定标准,巡检员不会去审批水质法规。角色边界清晰,协作才不会打架。

数据治理的四类角色各有清晰边界。治理委员会负责“定标准”:审批数据标准、命名规范、数据分级分类制度,类似于市长签发饮用水安全条例。数据所有者负责“管质量”和“供数据”:为数据资产制定业务口径、确认质量目标、在权限申请上做最终审批,类似于自来水公司承诺“出厂水质达标”。数据管家负责“做日常”:执行质量校验规则、维护元数据、跟踪问题工单、落地权限授权,类似于巡检员测余氯、查浊度、记台账。数据用户则要“守规范”:按申请到的权限使用数据、发现异常及时上报。

在RACI矩阵中,一个常见痛点是一个任务出现两个“A(问责人)”——就像一根水管有两个水务局长都说了算,结果出事时互相推诿。职责清晰度可以量化:

巡检员去修水管、局长去测水质,水厂就会乱套。数据治理也是同理:用RACI把每个岗位钉在正确的位置,质量才能有人真正负责。

C=1−NconflictNtaskC = 1 - \frac{N_{\text{conflict}}}{N_{\text{task}}}
意思是:全部治理任务中,减去职责冲突(多个问责人)的任务占比,剩下的就是“边界清晰”的程度。
  1. N_conflict(冲突任务数)RACI矩阵中同一任务被分配了两个或以上"A"的任务数量,是角色重叠的直接体现。
    NconflictN_{\text{conflict}}
  2. N_task(总任务数)治理流程中需要被执行和管理的全部任务总量。
    NtaskN_{\text{task}}
  3. 1减去冲突占比用1减去冲突比例,得到“清晰度”。比例越高,说明角色越清晰,协作越顺畅。
    1−NconflictNtask1 - \frac{N_{\text{conflict}}}{N_{\text{task}}}

治理流程体系:从标准到发布的闭环

光有岗位还不够,自来水厂最值钱的是“标准作业流程”:取水→沉淀→过滤→消毒→质检→并网,每一步都有章可循。数据治理同样需要一套闭环流程,而不是零散的“救火行动”。

治理流程的核心闭环包含四个环节。第一步是标准制定:明确业务口径、命名规范、数据分级分类规则,就像确定饮用水安全指标;第二步是质量检查:通过自动化规则(非空、唯一、值域、及时性SLA)对数据做例行校验,就像出厂前的抽样检测;第三步是问题上报:发现不合格数据立即创建工单,通知数据所有者并跟踪处置,就像水质异常时上报疾控中心;第四步是审批发布:修复后的数据经过评审、版本验证后才能重新发布给下游使用,就像水质复检合格后才允许并网供水。

这套闭环的效果可以用流程闭合率来衡量:

水厂的流程闭环保证了“每一滴水都经过检测”;数据治理的流程闭环则保证了“每一个数据问题都有始有终”。闭合率越高,数据这座城的供水就越稳定。

F=TclosedTtotalF = \frac{T_{\text{closed}}}{T_{\text{total}}}
  1. T_closed(已闭合工单)已经完成“上报→处理→复检→发布”全流程的问题工单数量。
    TclosedT_{\text{closed}}
  2. T_total(总工单)周期内产生的全部数据质量问题工单,无论是否处理完毕。
    TtotalT_{\text{total}}
  3. 两者相除得到闭合率,反映流程是否真的“转了起来”而不是停留在纸面上。
    F=TclosedTtotalF = \frac{T_{\text{closed}}}{T_{\text{total}}}

数据血缘追踪:供水管网图

当整座城市的水管爆裂时,抢修队必须先看管网图:这段水从哪个水库来,经过哪些加压站,供应给哪些小区。数据世界里,这张“管网图”就是数据血缘(Data Lineage)——它记录数据从源头到消费端的完整流转路径。

血缘追踪需要采集三类关系:表级血缘(哪张表生成了哪张表)、字段级血缘(哪个字段映射到了哪个字段)、作业级血缘(哪个调度任务执行了这次转换)。采集技术主要有三种:解析式(解析SQL和存储过程,从代码逻辑推导血缘)、样本式(通过数据特征和内容比对推断关联)、模式式(基于元数据和唯一键匹配)。实践中常以解析式为主,样本式为辅。

血缘的价值体现在两个方向:影响分析——上游表结构变更时,快速列出所有下游报表和模型;问题溯源——下游指标异常时,沿血缘回溯到根因。衡量血缘体系是否完备,可以看覆盖率:

有了完整的供水管网图,爆管时才能三分钟找到该关的闸门。数据血缘就是AI世界的管网图——它让每一次“爆管”都有迹可循,让每一个模型问题都能追溯到数据源头。

τ=∣Eobserved∣∣Eexpected∣\tau = \frac{|E_{\text{observed}}|}{|E_{\text{expected}}|}
血缘覆盖率:当前已采集到的血缘关系数量,占理论上应有关联关系数量的比例。
  1. |E_observed|(已观测血缘边数)数据目录中已经记录到的表与表、字段与字段之间的血缘边数量。
    ∣Eobserved∣|E_{\text{observed}}|
  2. |E_expected|(应有血缘边数)根据调度任务、SQL代码等推算出的完整血缘关系总数,是“理想管网图”的规模。
    ∣Eexpected∣|E_{\text{expected}}|
  3. 相除得到覆盖率,越接近1说明管网图越完整,抢修队越不会扑空。
    τ=∣Eobserved∣∣Eexpected∣\tau = \frac{|E_{\text{observed}}|}{|E_{\text{expected}}|}

数据质量管控:四道水质指标

居民对水质的要求,从来不是“看起来干净”,而是浑浊度、余氯、pH值、细菌总数等指标全部达标。数据质量的管控也有自己的“四项检测指标”。

四个核心维度是:完整性(Completeness)——关键字段不允许大面积缺失,就像水里不能缺消毒剂;准确性(Accuracy)——数据要真实反映业务事实,就像口感不能发苦发涩;一致性(Consistency)——不同系统对同一业务对象的统计口径要统一,就像水管两端的水压要一致;及时性(Timeliness)——数据要按时产出并可供消费,就像高峰时段不能断水。每个维度都可以配置自动化校验规则,例如非空率、唯一性、值域合法性、格式合规和产出延迟告警。

在评分模型中,质量总得分通常是四个维度的加权求和:

水质检测单决定了水能不能出厂;数据质量得分则决定了数据能不能进入可信层、能不能喂给模型。四个指标缺一不可,权重的取舍本身就是一种治理决策。

Q=waA+wcC+wiI+wtTQ = w_a A + w_c C + w_i I + w_t T
这是数据质量综合评分公式:四个维度各自打分后乘以权重再求和,权重由业务按需设定。
  1. A、C、I、T分别代表准确性(Accuracy)、完整性(Completeness)、一致性(Consistency)、及时性(Timeliness)四个维度的得分。
    A+C+I+TA + C + I + T
  2. w_a、w_c、w_i、w_t对应权重,总和通常为1。比如交易类数据更看重准确性和及时性,而分析类数据更看重完整性。
    wa+wc+wi+wt=1w_a + w_c + w_i + w_t = 1
  3. 加权求和把每个维度得分乘上权重再相加,得到0到1之间的综合质量分,作为质量门禁的判据。
    Q=waA+wcC+wiI+wtTQ = w_a A + w_c C + w_i I + w_t T

可信层建设:直饮水认证线

自来水厂的原水不能直接喝,必须经过沉淀、过滤、消毒,并拿到水质认证后才能进入千家万户。数据领域也需要这样一条“直饮水认证线”,这就是数据可信层(Trusted Data Layer)。

可信层位于原始数据湖与分析、模型消费之间,是“净水厂+认证中心”的结合体。建设要点包括:认证准入——数据源接入前必须完成资质校验和分级分类,相当于查验水源地环境;脱敏加密——对身份证、手机号等敏感字段做动态脱敏或加密存储,相当于去掉水中重金属;审计日志——每一次数据访问、复制、变更都留痕,相当于供水全程的监控录像;可信流转——只有通过质量门禁和认证的数据才能被下游使用,未达标数据一律拦截。

一个综合的可信度评估可以融合多个因素:

居民信任直饮水,因为每一道工序都透明可查;AI从业者信任数据,因为可信层保证了每一份数据都“出身干净、来路清晰、全程留痕”。

Trust=αQ+βτ+γL\text{Trust} = \alpha Q + \beta \tau + \gamma L
可信度 = α×质量分 + β×血缘覆盖率 + γ×审计合规率,三项加权,反映数据的“净度、来路和账本”。
  1. Q(质量分)上一节的综合质量得分,反映数据本身的“体检报告”。
    QQ
  2. τ(血缘覆盖率)血缘关系的完备程度,反映数据“从哪来、经过谁”是否清晰可查。
    τ\tau
  3. L(审计合规率)通过审计检查的操作次数占比,反映数据的使用过程是否留痕合规。
    LL
  4. 权重α、β、γ体现治理策略对不同维度的侧重,例如金融场景更看重审计合规。
    α+β+γ=1\alpha + \beta + \gamma = 1

MLOps协同:模型与数据的联动调度

当整座城市用上了智能水表和水压传感器,水务中心就能实时感知用水异常,自动调度抢修。MLOps时代的数据治理,也需要这种“传感器+调度中心”式的协同。

协同的关键是数据契约(Data Contract):训练数据与在线服务数据之间约定schema结构、统计分布和SLA,一旦某一侧违反契约就自动告警,如同水表读数与用水量对不上就报警。特征血缘让模型团队能看清每个特征列的上游来源,当线上特征分布漂移时,可以沿血缘快速判断是上游表变更还是源系统数据质量问题。模型监控持续追踪推理数据分布,计算训练与服务特征的偏差:

智能水表让水务中心提前发现泄漏,而不是等居民投诉;MLOps协同让模型团队在数据漂移刚抬头时就触发血缘溯源和治理流程,而不是等模型效果崩了才去查数据。

Dev=E[ ∣Dtrain−Dprod∣ ]\text{Dev} = \mathbb{E}\left[\, \left| D_{\text{train}} - D_{\text{prod}} \right| \,\right]
数据契约偏差:训练数据与生产服务数据的平均绝对差异。差异越大,模型越可能因为数据漂移而失效。
  1. D_train(训练数据分布)模型离线训练时使用的特征数据分布,是模型的“预期水位”。
    DtrainD_{\text{train}}
  2. D_prod(生产数据分布)模型上线后真实服务时接收到的特征数据分布,是“实际水位”。
    DprodD_{\text{prod}}
  3. 绝对差与期望在全体维度上取平均绝对差异,量化模型环境与实际环境的水位落差。
    E[ ∣Dtrain−Dprod∣ ]\mathbb{E}\left[\, \left| D_{\text{train}} - D_{\text{prod}} \right| \,\right]

持续运营机制:水厂的年度考核

一座水厂建好容易,难的是十年如一日保持水质稳定。这靠的不是一次工程,而是一套持续运营机制:年度考核、人员培训、工具升级、滚动改进。数据治理同样是“马拉松”而非“百米冲刺”。

持续运营包含四个抓手。度量指标:把质量分、血缘覆盖率、流程闭合率、问题平均修复时长(MTTR)定为北极星指标,用数据管理数据,如同水厂用指标考核班组。培训宣贯:让每个数据用户都理解标准、权限和上报路径,如同向市民普及节水与报漏常识。工具平台:沉淀数据资产目录、质量平台、血缘平台和安全审计平台,让流程自动化跑起来,如同水厂的自动化监控系统。优化迭代:用PDCA(计划-执行-检查-改进)循环定期复盘,持续调整标准与权重。整体成熟度可以评估为:

好水厂的荣誉不是建厂当天拿到的,而是年复一年考核出来的。数据治理的成熟度同样写在每一次质量考核、每一张问题工单、每一份审计日志里,日拱一卒,功不唐捐。

M=S1+S2+S3+S44M = \frac{S_1 + S_2 + S_3 + S_4}{4}
治理成熟度:对标准建设、质量管控、血缘能力和审计合规四个模块分别打分(0~1),取平均值作为组织成熟度。
  1. S1、S2、S3、S4分别代表标准建设成熟度、质量管控成熟度、血缘能力成熟度、审计合规成熟度。
    S1+S2+S3+S4S_1 + S_2 + S_3 + S_4
  2. 除以4取四个模块的平均分,得到整体成熟度,方便跨周期对比。
    S1+S2+S3+S44\frac{S_1 + S_2 + S_3 + S_4}{4}

AI 应用场景

金融风控模型的特征血缘追溯

阶段:模型上线与监控阶段

解决的问题:反欺诈模型线上效果突然下滑,传统做法是业务人员挨个排查几十张特征表,耗时数天;有了字段级血缘,可以在一小时内锁定是“客户收入特征表”某次口径变更导致分布偏移,问题定位时间从天级降到小时级。

具体案例:某支付风控团队为300+特征列建立血缘图谱,每当上游数仓任务变更,自动触发影响分析,生成“受影响模型清单”并推送给模型owner。一次特征表改名事故中,血缘系统提前识别出12个下游模型受影响,避免了线上事故。

实时数仓的质量门禁拦截

阶段:数据接入与预处理阶段

解决的问题:流式订单数据接入Kafka后,偶尔出现字段缺失或乱码,直接污染下游训练数据。传统方式靠事后抽检,发现时损失已造成;可信层质量门禁在数据写入前执行实时校验,不合格数据自动拦截并生成工单。

具体案例:某电商平台的实时特征管道配置了完整性+值域双重规则,某次促销大促中供应商回传数据缺省,门禁在30秒内拦截并通知数据管家,模型训练管道改用回退版本,避开了“脏数据训练”事故。

跨部门数据资产盘点与责任落地

阶段:治理组织建设与流程启动阶段

解决的问题:多个业务部门各自维护数据口径,同一“用户活跃”指标在三个部门有三种算法。通过RACI矩阵逐域落责、数据资产目录统一登记,最终收敛口径并定责到具体owner。

具体案例:某银行由CDO牵头,对300+核心数据资产完成责任挂牌,治理委员会每季度用“责任覆盖度G”评估进展,八个月后从62%提升到94%,跨部门数据争议工单下降58%。

Python 演示

python68 行
class DataNode:    def __init__(self, name, quality_scores=None):        self.name = name        self.quality = quality_scores if quality_scores else {}        self.parents = []        self.children = []  class LineageGraph:    def __init__(self):        self.nodes_map = {}     def add_node(self, node):        self.nodes_map[node.name] = node     def add_edge(self, parent_name, child_name):        parent_node = self.nodes_map[parent_name]        child_node = self.nodes_map[child_name]        child_node.parents.append(parent_node)        parent_node.children.append(child_node)     def upstream(self, name):        visited = set()        queue = [self.nodes_map[name]]        while queue:            node = queue.pop()            for p in node.parents:                if p.name not in visited:                    visited.add(p.name)                    queue.append(p)        return visited     def quality_score(self, name, weights):        node = self.nodes_map[name]        total = 0.0        for key, w in weights.items():            total += w * node.quality.get(key, 0.0)        return total     def lineage_coverage(self, name):        up_count = len(self.upstream(name))        expected = len(self.nodes_map) - 1        return up_count / expected if expected > 0 else 1.0  def main():    g = LineageGraph()    raw_orders = DataNode('raw_orders', {'completeness': 0.98, 'accuracy': 0.95})    clean_orders = DataNode('clean_orders', {'completeness': 0.99, 'accuracy': 0.99, 'timeliness': 0.97})    label_features = DataNode('label_features', {'accuracy': 0.96, 'consistency': 0.94})    train_dataset = DataNode('train_dataset', {'completeness': 1.0, 'accuracy': 0.98})     for node in [raw_orders, clean_orders, label_features, train_dataset]:        g.add_node(node)     g.add_edge('raw_orders', 'clean_orders')    g.add_edge('clean_orders', 'label_features')    g.add_edge('label_features', 'train_dataset')     weights = {'completeness': 0.3, 'accuracy': 0.4, 'consistency': 0.2, 'timeliness': 0.1}     print('train_dataset quality =', g.quality_score('train_dataset', weights))    print('upstream of train_dataset =', g.upstream('train_dataset'))    print('lineage coverage =', g.lineage_coverage('train_dataset'))  if __name__ == '__main__':    main()
目的:实现一个微型数据血缘图与质量评分器,模拟“从原始订单表到训练数据集”的血缘链路,计算目标数据集的上游覆盖范围和加权质量分。
  1. class DataNode:定义数据节点,每个节点携带质量得分、上游父节点和下游子节点列表,相当于管网图上的一个“水表节点”。
  2. class LineageGraph:定义血缘图容器,用字典管理全部节点,提供建边、溯源、评分和覆盖率计算能力。
  3. child_node.parents.append(parent_node)建立“父→子”血缘关系,让子节点记住自己的数据来源,就像每段水管登记上游水源。
  4. def upstream(self, name)用BFS宽度优先搜索沿parent链向上遍历,收集目标节点的全部上游祖先,模拟“沿管网图关闸门找水源”。
  5. total += w * node.quality.get(key, 0.0)按权重累加各维度质量分,实现本章的加权质量评分公式。

常见误区

误区很多初学者觉得数据治理就是排查数据质量、修修管道,那是IT和数仓工程师的活,业务部门只要把数据交上来就行。

正解数据治理的组织架构恰恰把业务部门放在核心位置——数据所有者必须是业务负责人,因为只有业务才懂口径和真实含义。就像自来水水质标准必须由水务局和卫生部门共同制定,不能只让修水管的工人说了算。IT负责“修水管”,业务负责“定标准、负责任”。

为何常见:因为治理工作最早由数仓团队发起,大家天然地把治理等同于“技术活”,忽略了业务口径才是治理的源头。

误区有人把所有质量维度权重调成一样,追求每个表都拿满分,认为质量分低就是治理失败。

正解质量治理需要“按需投入”。离线分析报表对及时性要求低,但交易风控特征对准确性和及时性要求极高。权重设计本身就是治理决策,就像饮用水和灌溉用水执行不同的标准。刻意追求100分往往浪费大量成本,边际收益趋近于零。

为何常见:初学者容易把“评分”理解为“考试”,认为高分等于优秀,忽略了数据质量的本质是“适配用途”。

误区认为上线时把血缘关系梳理清楚、画好图,后续就一劳永逸了,不用再管。

正解数据链路每天都在变——新任务上线、SQL重构、表结构变更,血缘图必须随调度任务和代码变更持续更新。覆盖率τ就是用来监测“血缘是否过期”的指标。自来水厂的管网图也会随城市扩建持续修订,老图会害死抢修队。

为何常见:血缘采集在项目初期是一次性的“建图”工作,容易让人误以为它和日常运维无关。

误区算法团队觉得质量门禁、审批发布太繁琐,宁可绕过流程直接拉数训练,认为治理是“效率杀手”。

正解短期看流程确实多花几小时,但长期看它避免了“脏数据训练三天、上线效果崩盘、回滚排查一周”的更大浪费。治理流程相当于水厂的出厂质检,多花一分钟检测,避免的是整座城市的健康危机。

为何常见:人们习惯用“本地最优”评价流程,而忽略了治理对冲的是全局风险和返工成本。

误区有初学者把Data Steward当成数据库管理员DBA,认为让DBA顺手兼管数据质量就行了。

正解DBA保障数据库的稳定运行(性能、备份、容量),数据管家保障数据资产的质量和合规(口径、校验、元数据、权限协调)。好比水厂里,机电工程师负责水泵运转,水质检验员负责水质达标——两者专业不同、职责互补,不能互相替代。

为何常见:两者都围着数据库转,名字里都带“管理员/管家”意味,导致职责边界被混淆。

面试题

Q1. 在数据治理组织架构中,对数据资产质量负最终责任的角色是?

单选题 · easy

  • A.数据管家,负责执行日常质量巡检
  • B.数据所有者,对资产质量负最终责任← 正确答案
  • C.数据用户,反馈使用过程中的异常
  • D.治理委员会,审批制度和数据标准

答案:B。数据所有者由业务负责人担任,对数据资产的质量和口径负最终责任,相当于自来水公司对出厂水质负责。数据管家执行日常巡检,用户负责反馈,委员会负责定制度,都不是最终责任人。

Q2. 数据血缘追踪最直接的价值是什么?

单选题 · easy

  • A.提升存储硬件的读写速度
  • B.快速定位数据链路影响范围← 正确答案
  • C.替代数据备份与容灾机制
  • D.自动生成前端可视化页面

答案:B。血缘记录数据从源头到消费端的流转路径,上游变更时可以快速评估下游影响,下游异常时可以回溯根因,犹如管网图帮助抢修队定位事故。血缘不负责加速存储、容灾备份或前端渲染。

Q3. 数据质量管控通常包含哪些维度?

多选题 · mid

  • A.完整性,保证所需字段不缺失← 正确答案
  • B.准确性,保证数据反映真实情况← 正确答案
  • C.一致性,保证多系统口径统一← 正确答案
  • D.美观性,保证报表界面友善

答案:ABC。完整性、准确性、一致性是数据质量的核心维度,及时性也常被纳入。“美观性”是报表设计问题,不属于数据质量的衡量维度。四个维度如同水质检测的浑浊度、余氯、pH和细菌指标。

Q4. RACI责任矩阵中,字母A代表的职责是什么?

单选题 · mid

  • A.实际动手执行分配的任务
  • B.对任务最终结果承担问责← 正确答案
  • C.提供专业意见供决策参考
  • D.接收决策结果并同步告知

答案:B。A代表Accountable,即“最终问责人”,对任务结果负总责。R是Responsible负责执行,C是Consulted提供咨询,I是Informed被告知。一个任务只能有一个A,否则就会职责重叠,像一根水管有两个局长。

Q5. 数据可信层建设通常包含哪些措施?

多选题 · mid

  • A.认证准入,校验数据源接入资质← 正确答案
  • B.脱敏加密,保护敏感字段安全← 正确答案
  • C.审计日志,记录访问全链路痕迹← 正确答案
  • D.无限复制,提高数据副本数量

答案:ABC。可信层是原始数据到消费之间的“净水厂+认证中心”,包括认证准入、脱敏加密、审计日志和质量门禁。“无限复制”既不安全也不合规,反而扩大数据暴露面,并非可信层措施。

Q6. 上游特征表发生Schema变更时,MLOps团队应优先做什么?

单选题 · mid

  • A.立即重新训练所有受影响的模型
  • B.通过血缘影响分析评估变更范围← 正确答案
  • C.删除上游变更表并回滚版本号
  • D.暂停全部下游数据管道运行

答案:B。正确的做法是先通过血缘影响分析,确认哪些下游特征、模型和数据管道受影响,再决定是否重训或调整。贸然重训、删表或全量暂停都是“不过脑子就关闸”,可能造成更大损失。

Q7. 在复杂SQL场景中,哪种情况最容易导致解析式血缘“断链”?

单选题 · extreme

  • A.查询中使用CTE递归展开层级数据
  • B.存储过程动态拼接表名与字段名← 正确答案
  • C.对分区表执行标准等值过滤操作
  • D.在SELECT语句中同时引用多张表

答案:B。解析式血缘依赖静态分析SQL文本,而存储过程动态拼接表名相当于把“水管走向”藏在运行时的变量里,静态解析看不到,自然断链。CTE递归等虽然复杂,但语法可解析;多表引用和分区过滤都不影响血缘识别。

Q8. 数据治理流程闭环通常包含哪些环节?

多选题 · hard

  • A.标准制定,明确业务口径与规范← 正确答案
  • B.质量检查,执行自动化规则校验← 正确答案
  • C.问题上报,创建工单跟踪处置← 正确答案
  • D.审批发布,修复后重新上线发布← 正确答案

答案:ABCD。治理流程是一个从标准制定、质量检查、问题上报到审批发布的完整闭环,四者缺一不可。只有检查没有上报,问题会被掩盖;只有上报没有发布,修复无法落地。这正如同水厂从制水标准到出厂复检的完整作业流程。

Q9. 关于数据管家与DBA的区别,下列说法正确的是?

单选题 · mid

  • A.DBA保障数据库运行,数据管家管资产质量← 正确答案
  • B.两者都由数据治理委员会直接任命管理
  • C.数据管家负责开发后端业务功能代码
  • D.DBA负责制定企业数据战略规划方案

答案:A。DBA聚焦数据库实例的稳定运行,如性能、备份、容量;数据管家聚焦数据资产的质量、口径和合规。委员会直接任命治理角色,但DBA通常归平台团队管理;后端开发和数据战略规划都不是两者的核心职责。

Q10. 数据治理持续运营中,PDCA循环的四步分别是什么?

单选题 · easy

  • A.计划、执行、检查、改进四步循环← 正确答案
  • B.预测、决策、评估、部署四步流程
  • C.采集、清洗、聚合、输出四步管道
  • D.定义、设计、编码、测试四步开发

答案:A。PDCA即Plan(计划)、Do(执行)、Check(检查)、Act(改进),是持续运营中最常用的滚动改进循环。预测-决策-评估-部署是MLOps流程,采集-清洗-聚合-输出是数仓管线,定义-设计-编码-测试是软件开发周期。