Как я могу получать динамический файл с 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()
может быть использован. Также между ними добавляется некоторая статическая строка, так как она всегда будет фиксироваться для каждого читаемого файла.