我们的AI人工智能,自动发布了一篇假新闻……

今天这个故事,还得从一个事故开始说起。
前些日子,我们被XX公司投诉,说我们的资讯发布了关于他们公司授信额度的不实报道:
我们的AI人工智能,自动发布了一篇假新闻……_第1张图片
告诉我们这篇资讯与他们公司最新公开披露的数据不一致,相关内容并不属实,可能对广大网友们造成严重误导,并对他们公司造成了严重负面影响……balabala一堆指责,并要求我们3小时内删除全部相关信息。
然后,他们丢了2篇公告附件过来。
我们对照着仔细一看,还真是我们搞错了:
我们的AI人工智能,自动发布了一篇假新闻……_第2张图片
由于数据错误,“数据没有明显变化”被报道成了负面舆情“授信减少99.99%”,这可是严重失误,赶紧先把资讯给人家删了再说。
然而,删完资讯后,我们的数据复盘工作才刚刚开始。
毕竟,错,也要错的明明白白。

01 溯源

那么,这篇带有错误数据的资讯到底是谁发布的呢?
经了解,原来,竟然是我们公司的AI智能应用,直接根据底层数据自动生成了实时资讯,并不是人为发布。
那也就是说,底层数据做错了。
公告里写得清清楚楚、明明白白,数据为什么会错,还错的这么离谱?
凡事皆有因。
先来看看我们记录公司授信数据的业务表T:

SELECT * 
FROMT
WHERE company = 'XX公司'
ORDER BY T.reportdate DESC;  --按报告期倒序排序

找到这家公司最近2条数据,大概是这样的(已脱敏):

报告期 币种 授信金额(亿元) 来源公告代码
2024/9/30 人民币 0.1023 AAA
2024/6/30 人民币 1001 BBB

这……
数据整整差了约一万倍,很明显是单位亿元搞错成万元了嘛!
怎么搞的,这也能做错?
打开最新这条对应的来源公告看看是不是如我所想。
呵,看到公告内容,我笑了。
竟然和我们的底层数据一致,数据单位就是万元。

那投诉的附件公告又是怎么回事?
原来,是投诉的公司自己先发布了错误数据的公告,随后又发布了更正后的公告,将单位“万元”更新成了“亿元”,而我们虽然有上下期骤减的拦截程序,但仍然存在流程上的漏洞,导致数据未能及时更新。
再加上AI智能应用自动生成资讯的时效性又很高,在数据入库后第一时间就将错误资讯发布了出去。

嗯,总算搞清楚了原因。
流程方面的漏洞,有其他同事负责处理完善。
至于我,又要增加工作任务了。
需要好好排查下,业务表T还有没有同类错误 或者 其他明显错误。

02 取数断案

那么,从哪开始呢?
排查逻辑倒是有不少现成的,难道,全部来一遍?让我想想……
诶?等等。
好像有个捷径可以走。
我们手里刚好有某个competitor的同款数据表M,干脆来个全量对比。
两边一致的,多半数据就是对的,毕竟两家同时出错的概率极低;
至于两边不一致的,再来进一步确认下是否为错误数据。

长话短说,
此处省略至少三千字competitor与我方的数据结构的对比分析,以及基于各自不同数据规范的对比可行性分析。
总之,结论是,可比。

只是,我方表T只有合计数据,
而competitor的表M既有合计也有明细,混在一起:
当有的公司有多条明细时,会计算生成一条带有合计标记的记录;
而当有的公司只有一条明细时,不会生成带有合计标记的记录。
这对比起来可不太容易呢。
如果只取表M里带有合计标记的记录对比,后期进行不一致数据排查时势必会多出一些不必要的工作。
倒是也可以分别取出 表M里带有合计标记的记录、只有一条明细的公司记录,进行合并后,再与我方表T数据进行对比。
嗯,就是有点麻烦,再想想。

哈,有了~
那我把表M里 同一公司、同一报告期 金额数值最大的那条取出来,不就完整了吗?
说干就干。
另外,还需要注意的是,表M在数据写入后,若有数据更新、变动,一律只新增记录,而旧的记录会在<是否删除>字段中标记“是”。
因此,在取表M的数据时,需要把最新记录筛选出来:

 withM_DATA as
(SELECT * 
    FROM (SELECT DISTINCT M

你可能感兴趣的:(数据人的故事,人工智能,数据库,sql,oracle,数据分析)