在上一篇文章上,我们了解了Celonis与SAP的通信管道是如何建立起来的。
当用户在Celonis中使用data job抽取数据时,请求会被发往队列。抽取器读取到队列后,会根据表名,字段等调用SAP中的RFC FM。RFC FM会将数据生成到SAP文件系统中,抽取器发现文件后,会读取并通过data push API推送到Celonis云平台,然后将文件在文件系统中删除。
那实时抽取机制是怎么做到主动将delta数据实时发送到Celonis平台中的呢?
在实际环境中,这个并不是那么容易实现的。因为如何识别出哪些数据被更新了就是一个问题,抽取只应发生在这些数据对象上。当目标表有timestemps的时候,问题很好办,对比下日期就知道哪些没有抽过了。 但问题是一些大型表并没有时间戳!
为了克服这个限制,Celonis找到一个新办法。这些目标表被实时监控,一旦发生数据改动,会被记录到日志表中。
当抽取器工作时,会将这些相关表与实际表关联起来进行抽取,以达到实时抽取的目标。
原理运行图如下:

原理我们知道了,那剩下来的就是,如何实时监控数据变动,与如何建立日志表了(change log table)。
Celonis提供了T-code:/CELONIS/CLMAN_UI 去建立trigger实时监控,和日志表去记录哪些数据被修改了。 下图是笔者系统中的真实截图。

需要注意的是触发器可以直接在任意client安装,但是log table需要跟着TR一步步从开发机,测试机直至生产机。
