ETL Hooks(钩子)
Hooks(钩子)指的是在schema的etl执行过程中,可以在执行过程之前和之后插入一些代码,达到按照顺序执行一些其他工作的任务。
目前支持beforeETL和afterETL的hook。放在schema专家模式的etl结构中。可通过进入schema的专家模式 -> 右上角使用js编辑 -> 编辑etl.beforeETL或者etl.afterETL进入。
etl.beforeETL和etl.afterETL都是一个js异步函数。 标准模板如下:
async ({ SemanticDB, moment, sleep, syncData, config, logFunc }) => {
}
可以在函数体中执行任意js程序。其中,SemanticDB, moment, sleep, syncData都是一些帮助函数。 config, logFunc是上下文配置信息。
链式ETL调用
如果想在跑完此schemna的ETL后,再跑另外一个schema的etl的话(达成链式ETL),那么可以这么调用:
async ({ SemanticDB, moment, sleep, syncData, config, logFunc }) => {
await syncData({
...config,
include_schemas: ['xxxx'], // 要跑的schema的id
append: true, // 增量模式
}, false, logFunc); // 这2个参数需要固定,不能修改。
}
如果想跑SQL的话,那么可以这么调用:
async ({ SemanticDB, moment, sleep, syncData, config, logFunc }) => {
await SemanticDB.DBConnector.runSQL('INSERT INTO xxxx');
}