Запуск wso2sp-editor в docker с помощью следующей команды с переключателем громкости, позволяющим читать локальный файл данных:
docker run -it -p 9390:9390 -v /Users/A/Desktop/wso2sp-editor-docker-data:/home/wso2carbon/wso2sp-4.4.0/data/ --name editor wso2/wso2sp-editor:4.4.0
Наконец код приложения:
@App:name('CsvParseDateTime')
@ Приложение: описание ('разбор строки метки времени из CSV-файла') --abrakadabra @source (type = 'file', mode = "line", tailing = "false", file.uri = "file: // home / wso2carbon / wso2sp-4.4.0 / data / DAT_ASCII_GBPUSD_T_201708.csv ", -" файл: /Users/A/Desktop/siddhi/wso2sp-4.4.0/data/DAT_ASCII_GBPUSD_T_201708.csv ", action.after.process =" НЕТ ", @map (type = 'csv', header = "false", delimiter = ",", @attributes (dateTime = "0", ask = "2", ignore = "3", bid = "1"))) определить поток csvGBPUSDstream (строка dateTime, двойной ставки, двойной спрос, игнорировать int);
@ сток (type = 'log', priority = "info") определить поток fiveSecRangeStream (timestamp long, fiveSecRange double);
- строка для анализа строки dateTime по времени в миллисекундах, которая может использоваться как индекс для времени windows --time: timestampInMilliseconds (date.value, date.format) гггг -MM-dd ЧЧ: мм: ss.SSS @info (name = 'Parse Timestamp') из csvGBPUSDstream выбрать время: timestampInMilliseconds (dateTime, 'yyyyMMdd HHmmssSSS') как отметку времени, ставку, запросить вставку в индексированный GBPUSDstream;
- время внешнего окна (временная метка в потоке событий) из indexedGBPUSDstream # window.externalTime (временная метка, 5 Se c) выбрать временную метку, max (bid) -min (bid) для вставки fiveSecRange в fiveSecRangeStream; - для всех событий;