SQL etl的数据指纹


「今天这资料一定要处理好,不管你几点下班」主任的声音,隔了三个门,就可以把它打破。

看到小C从总监办出来,一脸羞愧的样子,当然也没少挨骂。真奇怪主任怎么会发那么大火。空调机还没有打开,但是全办公室就只有三个电风扇,已经有两个在办公室啊。

L凑近办公室,“一份统计数据,做了5次没对上,还不能火,都是老员工了”,主任还是没有停止抱怨。

对于这个SQL数据的事情,若不是因为统计口径,还是很难找到逻辑错误的。在数据这个行业,没有遇到一点数据一致性问题,那是不可能的。即使是老司机,也有熄火时。何况小C,就只有3,5年的经验,哪能了解这么多。

就在小C附近,”数据又对不上?”

“哎呀,真是没有办法。在跑SQL ETL的时候,谁愿意一直觉得数据掉下来。

“掉数据?

你们说算法不对,是SQL ETL里的数据丢失了?”

“我用Kettle写的东西,从生产仓库和仓库中提取数据,但是就是跟主管说的对不对。

“数据指纹,你怎么弄的?”

”“什么,数据指纹,是什么意思?还有一种新观念?”

看到小C眼中有精神,L也不马虎:“SQL ETL只是抽数据的工具,配套还是思想。”

思维我有啊,我做了一个大表格,把所有的维度整合起来,保证不漏掉。

“这是技术上的想法,你还是要有工程学的想法。

“有什么不同吗?”

「设计是要结束的,你的ETL结束得并不完美」

“为什么不完美?

”“您将单个系统数据抽取到数据仓库,那么源系统数据就是输入,而数据仓库的数据就是结存。输入量和结存是比较的吗?比方说,你借给别人100,000美元,别人每次还你1,2千,你如果不记帐,是自己也不知道别人还了多少,最后还欠你多少?

「十万,我一定记得啊」

这在ETL里,你也要记住每个批次啊。不仅仅是这样,每一批的数据都要加上数据指纹。把这个手印拿来,到和源系统查一下,好啊!

那个数据指纹怎么算了,主键ID又不能在各个系统平均分配,肯定有重合啊!

”他说:“当然不是自增列。例如,15厂来的芯片,您可以选择厂号+日期+批作为主键,给这个主键加上指纹,全集团公司就只有这一份指纹,那就是全公司的数据仓库,不会有任何问题。若将工厂某一天所有批次的数据指纹集中在一起,生成一个总指纹,这样就能监控每一批数据的一致性啊!

“那么如何产生数据指纹啊,L快说什么,急死我了。已经四点半了。

”简单点用checksum这一自带功能。不过checksum的参数必须要选择一个唯一标识键,就像工厂号+日期+批一样,当然您还可以再细化下粒度。将一个checksum产生的数值添加到您的源数据和数据仓库宽表中,然后再加上一列checksum的数值,看看ETL是否漏掉了啊

害怕自己没有说清楚,L当场就写了一个小例子:

sql etl,数据指纹,主键