通常我们可以通过检查一个查询的字段值来判断ETL是否完成。
例如,有如下查询, etldate字段代表ETL的日期。
这时我们可以通过如下任务来进行判断。
下载导入资源 这时我们可以通过如下任务来进行判断。下载导入资源 检查字段值任务.xml
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
importClass(java.lang.System); importClass(java.lang.Exception); importClass(Packages.smartbi.sdk.service.businessview.ViewMetaData); importPackage(Packages.smartbi.usermanager); importPackage(Packages.smartbi.usermanager.local); importPackage(Packages.smartbi.state); importPackage(Packages.smartbi.sdk.service.businessview); var queryId = "I4028fe815110bd780149d5674101018f"; //查询ID var fieldAlias = "etldate" ; //获取的字段别名 var service = new BusinessViewService(connector); var metadata = service.openLoadDataView(queryId,"",100,false); var clientid = metadata.getClientId(); if (clientid) { var alldata = service.loadViewData(clientid,0); var fieldnames = metadata.getFieldNames(); var column = 0; //列位置 for (var i=0;i<fieldnames.size();i++) { if (fieldnames.get(i) == fieldAlias) { column = i; break; } } var fieldValue = alldata.get(0).get(column); //取第一行数据 //下列判断条件自行修改 if (fieldValue == "1998-03-26 00:00:00") { logger.debug("检查字段正常"); } else { throw new Exception("检查字段失败"); } } else { logger.debug("无法打开查询。"); } connector.close(); |
一般来说,我们可以把这个任务作为计划里面的第一个任务。
这样当ETL不成功时,就不会执行计划中的后续任务了。
有一点需要注意的是,用于判断ETL是否成功的查询要设置为不使用缓存。一般来说,我们可以把这个任务作为计划里面的第一个任务。这样当ETL不成功时,就不会执行计划中的后续任务了。有一点需要注意的是,用于判断ETL是否成功的查询要设置为不使用缓存。