Как я могу получать динамический файл с FTP-сервера, который создается каждый день?

CSV-файлы с транзакционным входом поступают ежедневно на FTP-сервер. Мне нужно читать эти входные файлы и обрабатывать их при ежедневном пакетном выполнении. Имена файлов остаются неизменными каждый день, но дата добавляется в конце имен файлов каждый день,
например:

Day1
    General_Ledger1_2020-07-01,
    General_Ledger2_2020-07-01,
    General_Ledger3_2020-07-01,
    General_Ledger4_2020-07-01,
    General_Ledger5_2020-07-01
    Day2
    General_Ledger1_2020-07-02,
    General_Ledger2_2020-07-02,
    General_Ledger3_2020-07-02,
    General_Ledger4_2020-07-02,
    General_Ledger5_2020-07-02

Как я могу добавлять эту информацию о дате к имени входного файла при каждом запуске задания?

1 ответ

Решение

Раньше я сталкивался с подобной проблемой, и ее можно решить, используя вычисляемый параметр в пути к файлу. Здесь вы можете создавать выражения, которые будут получать файл динамически.

Пример,

 CONCAT( UPPER(lit('$(Prefix)')), ADD_DAYS( TODATE(lit('$(currentTime)'), 'yyyy-mm-dd'), 'yyyy-mm-dd' ,-1),'.csv')

Нарушение выражения:

  • $(currentTime): этот системный параметр получит текущую дату (она также будет включать метку времени).

  • (TODATE(lit('$(currentTime)'), 'yyyy-mm-dd'): TODATE получит только дату из всей метки времени в формате как ‘yyyy-mm-dd’.

  • ADD_DAYS(TODATE(lit('$(currentTime)'), 'yyyy-mm-dd'), 'yyyy-mm-dd' ,-1): ADD_DAYS здесь добавлю -1 до даты, полученной из. TODATE(). Следовательно(2020-04-24) + (-1) даст нам 2020-04-23

  • $(Prefix): $(Prefix) будет определяемым пользователем входным параметром типа String, который пользователь будет предоставлять во время выполнения - поскольку префикс всегда будет динамическим.

  • CONCAT(): Наконец, чтобы объединить все результаты и сформировать точный путь к файлу CONCAT()может быть использован. Также между ними добавляется некоторая статическая строка, так как она всегда будет фиксироваться для каждого читаемого файла.

Другие вопросы по тегам