• kettle-如何在作业job中使用JavaScript脚本


    描述(Description)

    使用JavaScript作业条目来计算布尔表达式。结果可用于确定下一步将要执行的步骤。Javascript作业条目会评估并返回true或false。

    评估(Evaluation)

    JavaScript作业条目的结果为true或false。换句话说,它需要以布尔表达式结尾。

    下面是一些可能的评估,以结束您的脚本:

    lines_input > 100  或    true  或者  parent_job.getVariable("INPUT_DIRECTORY").equals("/tmp");

    以下变量可用于表达式:

    变量(Variables)

    这是评估变量字符串内容的方法:

    parent_job.getVariable("NR_OF_ROWS") == 1000000 

    由于我们可以访问parent_job对象,因此我们也可以通过以下方式在父作业中设置变量:

    parent_job.setVariable("NR_OF_ROWS", "1000000");

    例如,您可以执行以下操作来操作此作业条目中的变量:

    useDate = parent_job.getVariable("use_date").equals("1");
    if (useDate == 0) { //We get to use native java classes as this is using Rhino mocks???
        date = new java.util.Date();
        date.setDate(date.getDate()-1); //Go back 1 full day
        dateFormat = new java.text.SimpleDateFormat("yyyyMMdd");
        newDateStr = dateFormat.format(date);
        parent_job.setVariable("start_date", newDateStr);
    }
    true;

    上一步骤的结果(Previous result)

    作业条目完成后,执行结果将是一个Result对象,向JavaScript引擎公开为“ previous_result”:

    表达式替代数据类型含义
    previous_result.getResult()   boolean 如果先前的作业条目已成功执行,则为true;如果存在某些错误,则为false。
    previous_result.getExitStatus() exit_status int 前一个Shell脚本作业条目的退出状态
    previous_result.getEntryNr() nr int 每次执行作业条目时,条目号都会增加。
    previous_result.getNrErrors() errors long 错误数,也可以作为变量“错误”使用
    previous_result.getNrLinesInput() lines_input long 从文件或数据库读取的行数
    previous_result.getNrLinesOutput() lines_output long 写入文件或数据库的行数
    previous_result.getNrLinesRead() lines_read long 从上一步读取的行数
    previous_result.getNrLinesUpdated() lines_updated long 文件或数据库中更新的行数
    previous_result.getNrLinesWritten() lines_writer long 写入下一步的行数
    previous_result.getNrLinesDeleted() lines_deleted long 删除的行数
    previous_result.getNrLinesRejected() lines_rejected long 通过错误处理拒绝并传递到另一步骤的行数
    previous_result.getRows()   List 结果行,另请参见下文。
    previous_result.isStopped()   boolean 标记以指示上一个先前的作业条目是否停止。
    previous_result.getResultFilesList()   List 上一个作业条目中使用的所有文件的列表
    previous_result.getNrFilesRetrieved() files_retrieved int 从FTP,SFTP等检索到的文件数。
    previous_result.getLogText()   String 上一个作业条目及其子执行的日志文本。
    previous_result.getLogChannelId()   String 上一个作业条目的日志通道的ID。您可以使用它在日志通道日志表中查找有关执行沿袭的信息。
      is_windows Boolean 如果作业在Windows变体上运行,则为true,否则为false。

    平台(Platform)

    我们还公开了一个名为“ is_windows”的变量,以帮助您做出特定于平台的选择

    行数(rows)

    我们向JavaScript公开的“rows”变量可帮助您使用“将行复制到结果”步骤评估传递到下一个作业条目的结果行。
    这是有关如何使用此数组的示例脚本:

    var firstRow = rows[0];
     
    firstRow.getString("name", "").equals("Foo")

    js的使用:

     

    var prevRow=previous_result.getRows();
    parent_job.setVariable("prevRow",prevRow);
    parent_job.setVariable("size",prevRow.size());
    parent_job.setVariable("size1",prevRow.get(0).size());
    parent_job.setVariable("prevRow.get(0)", String(prevRow.get(0)).replace("],[",",").replace("[","").replace("]","").split(",")[0]);
    true;

    实例:kettle循环抽取数据

    Kettle的循环遍历

  • 相关阅读:
    链表的逆置(无聊而写)
    C
    大型分布式站点的技术需求
    leetcode第一刷_Best Time to Buy and Sell Stock
    微商行业面临洗礼,微盟萌店是否能完毕“神补刀”?
    oracle函数 CONCAT(c1,c2)
    oracle函数 CHR(n1)
    oracle函数 ASCII(x1)
    oracle函数 INTERVAL c1 set1
    oracle函数 SESSIONTIMEZONE
  • 原文地址:https://www.cnblogs.com/zouhong/p/13555306.html
Copyright © 2020-2023  润新知