页面树结构
转至元数据结尾
转至元数据起始

通常我们可以通过检查一个查询的字段值来判断ETL是否完成。

例如,有如下查询, etldate字段代表ETL的日期。

 

这时我们可以通过如下任务来进行判断。下载导入资源 migrate (检查字段任务).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是否成功的查询要设置为不使用缓存。

  • 无标签