代码之家  ›  专栏  ›  技术社区  ›  Shibu

如何使用Talend只处理过去一个小时的文件?

  •  0
  • Shibu  · 技术社区  · 7 年前

    我每隔5分钟就会有连续的传感器数据以文件的形式出现。我只想挑选过去一个小时的文件,并进行必要的处理。 例如:talend作业在12:01pm运行,它仅从上午11:00到下午12:00拾取所有文件。

    谁能建议我应该采取什么方法在泰伦德实现这一点。是否有任何内置组件可以拾取前一个小时的文件?

    这是流程。 enter image description here

    enter image description here

    enter image description here

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  2
  •   PreetyK    7 年前

    使用tFileProperties,您将在其中获得名为mstring\u name的内置模式。通过使用此列,您将获得文件的最后修改时间,在tJava或tJavaRow中,您可以使用talendDate函数检查此时间是否在过去一个小时之间

    enter image description here

    迭代所有文件,并在tJavaRow中编写以下代码:

    Date lastModifiedDate = TalendDate.parseDate("EEE MMM dd HH:mm:ss zzz yyyy", input_row.mtime_string);
    
    Date current_date = TalendDate.getCurrentDate();
    
    
    if(TalendDate.diffDate(current_date, lastModifiedDate,"HH") <= 1) {
    
    output_row.abs_path = input_row.abs_path;
    }
    

    这样你就可以得到过去一个小时内的所有文件。

    t文件列表--->(迭代)-->tFileProperties--->(第1行主)-->tJavaRow--->如果--->tFileInputDelimited--->主要------>tMap--->主要------>tFileOutput文件输出

    要设置tJavaRow的上下文,请在if条件下检查其可空性:

    上下文getProperty(“文件”)!=空(&A)&!context.getProperty(“文件”).isEmpty()

        2
  •  0
  •   noah-sd    7 年前

    但是,您可以通过使用tFileList-->tFileProperties。将tFileList配置为按上次修改日期排序,然后tFileProperties将提供修改日期。从那里,您可以根据日期值进行过滤-如果超过一小时,请停止,否则请处理。