WebAPI приложение для работы с timeseries данными на .NET, EF Core и PostgreSQL.
API сервис для загрузки, обработки и анализа timeseries данных из CSV файлов. Основные функции:
- Загрузка и валидация CSV файлов с данными
- Автоматический расчет интегральных показателей
- Перезапись данных при повторной загрузке файла
- Гибкая фильтрация результатов
- Получение последних значений для конкретного файла
- .NET 8+ SDK
- PostgreSQL
Клонировать репозиторий
git clone https://github.com/JIBarbashin/JBTimescale.git
cd JBTimescale
Настроить подключение к базе данных Измените строку подключения в appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=jb_timescaleapi;Username=admin;Password=your_password"
}
}
Установить зависимости
dotnet restore
dotnet ef migrations add InitialCreate
dotnet ef database update
Запустить приложение
dotnet run
Открыть Swagger документацию
https://localhost:5000/swagger/index.html
Загружает и обрабатывает CSV файл с данными.
POST /api/data/upload
Content-Type: multipart/form-data
curl -X POST https://localhost:5001/api/data/upload -F "file=@data.csv"
{
"message": "Данные успешно загружены и обработаны",
"filename": "data.csv"
}
{
"error": "Строка 5: Дата вне допустимого диапазона"
}
Возвращает список обработанных результатов с фильтрацией.
GET /api/data/results?filename=example&minDate=2024-01-01&maxDate=2024-12-31
| Параметр | Тип | Описание |
|---|---|---|
| filename | string | Имя файла (частичное совпадение) |
| minDate | datetime | Минимальная дата запуска |
| maxDate | datetime | Максимальная дата запуска |
| minAverageValue | double | Минимальное среднее значение |
| maxAverageValue | double | Максимальное среднее значение |
| minAverageExecutionTime | double | Минимальное среднее время выполнения |
| maxAverageExecutionTime | double | Максимальное среднее время выполнения |
[
{
"id": 1,
"filename": "data.csv",
"deltaTimeSeconds": 3600.5,
"minDate": "2024-01-01T10:00:00Z",
"executionTime": 15.75,
"averageValue": 42.5,
"medianValue": 43.2,
"maxValue": 100.0,
"minValue": 10.5
}
]
Возвращает последние 10 значений для указанного файла.
GET /api/data/last-values?fileName=data.csv
| Параметр | Тип | Описание |
|---|---|---|
| filename | string | Имя файла |
[
{
"id": 100,
"filename": "data.csv",
"date": "2024-01-01T10:00:00Z",
"executionTime": 15.75,
"valueData": 42.5
}
]
Файл должен иметь формат CSV с разделителем ;:
Date;ExecutionTime;Value
2024-01-01T10-00-00.0000Z;15.5;42.3
2024-01-01T10-00-01.0000Z;12.8;38.7
2024-01-01T10-00-02.0000Z;16.2;45.1
- Date: ГГГГ-ММ-ДДTчч-мм-сс.ммммZ
- ExecutionTime: число с плавающей запятой (секунды)
- Value: число с плавающей запятой
(c) 2026, Jegor I. Barbashin