Compare commits

..

27 Commits

Author SHA1 Message Date
3f23d32c87 old some edit 2023-10-10 11:15:10 +04:00
d1b57b2f76 add Prometheus HTTP API 2023-04-07 22:25:54 +04:00
0cd1e535ad add getCompressionTimeSeriesWithFTransform() 2023-04-07 00:12:38 +04:00
1c24fb8055 edit some controllers 2023-04-07 00:10:37 +04:00
cb52a2cce6 add AnomalyCompressionScore 2023-04-07 00:09:49 +04:00
259ca3757e Merge remote-tracking branch 'origin/3-f-transform' into 3-f-transform
# Conflicts:
#	src/main/java/ru/ulstu/target/AnomalyDifferenceSmoothed.java
2023-04-04 11:45:41 +04:00
57e588f4a0 find anomalyPoints 2023-04-04 11:44:41 +04:00
f4b8089f29 add calculate diff 2023-04-04 11:44:37 +04:00
d236081a45 add CompressionMetricClasses 2023-04-04 11:44:32 +04:00
ab05f5a509 add AnomalyController 2023-04-04 11:44:29 +04:00
63791ecfa0 add Target implementation 2023-04-04 11:44:23 +04:00
7a9044c090 add class Target 2023-04-04 11:44:17 +04:00
2b21708d9d comment some code 2023-04-04 11:44:13 +04:00
a81149bf01 edit min and max 2023-04-04 11:44:07 +04:00
fae21d0f87 add min and max 2023-04-04 11:43:42 +04:00
55275e1716 #3 -- some fixes 2023-04-04 11:42:07 +04:00
e9adff9a87 #3 -- add fuzzy time series for forecasting 2023-04-04 11:42:07 +04:00
sam
0da256106e add CompressionMetricClasses 2023-04-03 22:51:59 +04:00
sam
a8b6cf7d29 add AnomalyController 2023-04-03 22:51:39 +04:00
sam
292e774d8e add Target implementation 2023-04-03 22:51:19 +04:00
sam
4cb14518db add class Target 2023-04-03 22:50:42 +04:00
sam
ffe303c7af comment some code 2023-04-03 22:49:23 +04:00
sam
682370f3da edit min and max 2023-04-03 22:47:12 +04:00
sam
c06688d744 add min and max 2023-04-03 22:45:22 +04:00
sam
78c02d7dad Merge branch 'master' into 3-f-transform 2023-03-02 10:26:38 +04:00
0a017f8667 #3 -- some fixes 2022-10-08 11:56:36 +04:00
371dfe5665 #3 -- add fuzzy time series for forecasting 2022-04-21 11:54:55 +04:00
89 changed files with 657 additions and 7126 deletions

View File

@ -34,10 +34,12 @@ dependencies {
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jetty' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jetty'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-test' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux'
implementation group: 'org.slf4j', name: 'slf4j-api', version: versionSLF4J implementation group: 'org.slf4j', name: 'slf4j-api', version: versionSLF4J
implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '3.0.0' implementation group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '3.0.0'
implementation group: 'org.javassist', name: 'javassist', version: '3.25.0-GA' implementation group: 'org.javassist', name: 'javassist', version: '3.25.0-GA'
implementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: versionJetty implementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: versionJetty
implementation group: 'org.json', name: 'json', version: '20220320'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind' implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations' implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations'

View File

@ -0,0 +1,14 @@
package ru.ulstu.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.*;
import org.springframework.web.reactive.function.client.WebClient;
@Configuration
public class WebClientConfiguration {
@Bean
public WebClient webClient(WebClient.Builder webClientBuilder) {
return webClientBuilder.build(); //contentType(MediaType.APPLICATION_FORM_URLENCODED)
}
}

View File

@ -0,0 +1,40 @@
package ru.ulstu.controller;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import ru.ulstu.configuration.ApiConfiguration;
import ru.ulstu.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.db.DbService;
import ru.ulstu.db.model.TimeSeriesSet;
import ru.ulstu.estimate.CompressionMetricService;
import ru.ulstu.service.UtilService;
import ru.ulstu.target.AnomalyDifferenceSmoothed;
import ru.ulstu.target.Target;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.ExecutionException;
@RestController
@RequestMapping(ApiConfiguration.API_1_0)
public class AnomalyController {
private final DbService dbService;
private final Target target;
public AnomalyController(CompressionMetricService compressionMetricService, DbService dbService, AnomalyDifferenceSmoothed anomalyDifferenceSmoothed) {
this.dbService = dbService;
this.target = anomalyDifferenceSmoothed;
}
@GetMapping ("getAnomalyAtDifferenceSmothed")
@Operation(description = "Получить аномальные значения")
public TimeSeries getAnomalyAtDifferenceSmothed(@RequestParam("setKey") String setKey, @RequestParam("timeSeriesKey") String timeSeriesKey) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, IOException {
var timeSeries = dbService.getTimeSeries(new TimeSeriesSet(setKey), timeSeriesKey);
var timeSeriesResult = target.calculate(timeSeries);
return timeSeriesResult;
}
}

View File

@ -0,0 +1,63 @@
package ru.ulstu.controller;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import ru.ulstu.configuration.ApiConfiguration;
import ru.ulstu.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.db.DbService;
import ru.ulstu.db.model.TimeSeriesSet;
import ru.ulstu.estimate.CompressionMetricService;
import ru.ulstu.service.PrometheusService;
import ru.ulstu.service.UtilService;
import ru.ulstu.target.AnomalyDifferenceSmoothed;
import ru.ulstu.target.Target;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.ExecutionException;
@RestController
@RequestMapping(ApiConfiguration.API_1_0)
public class CompressionMetricController {
private final UtilService utilService;
private final DbService dbService;
private final PrometheusService prometheusService;
private final CompressionMetricService compressionMetricService;
private final Target target;
public CompressionMetricController(UtilService utilService, DbService dbService, PrometheusService prometheusService, CompressionMetricService compressionMetricService, AnomalyDifferenceSmoothed anomalyDifferenceSmoothed) {
this.utilService = utilService;
this.dbService = dbService;
this.prometheusService = prometheusService;
this.compressionMetricService = compressionMetricService;
this.target = anomalyDifferenceSmoothed;
}
@GetMapping("getMetricAtAnomaly")
@Operation(description = "Получить метрику сжатия")
public ResponseEntity<TimeSeries> getMetricAtAnomaly(@RequestParam("setKey") String setKey, @RequestParam("timeSeriesKey") String timeSeriesKey) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, IOException {
var timeSeries = dbService.getTimeSeries(new TimeSeriesSet(setKey), timeSeriesKey);
var timeSeriesResult = compressionMetricService.getCompressionTimeSeries(timeSeries);
return new ResponseEntity<>(timeSeriesResult, HttpStatus.OK);
}
@GetMapping("getMetricAtAnomalyOfRandom")
@Operation(description = "Получить метрику сжатия")
public ResponseEntity<TimeSeries> getMetricAtAnomalyOfRandom(@RequestParam("lenght") int len) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
var timeSeries = utilService.getRandomTimeSeries(len);
var timeSeriesResult = compressionMetricService.getCompressionTimeSeries(timeSeries);
return new ResponseEntity<>(timeSeriesResult, HttpStatus.OK);
}
@GetMapping("getMetricAtAnomalyOfPrometheus")
@Operation(description = "Получить метрику сжатия")
public ResponseEntity<TimeSeries> getMetricAtAnomalyOfPrometheus(@RequestParam("query") String query) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
var timeSeries = prometheusService.executionQueryRange(query);
var timeSeriesResult = compressionMetricService.getCompressionTimeSeries(timeSeries);
return new ResponseEntity<>(timeSeriesResult, HttpStatus.OK);
}
}

View File

@ -54,60 +54,53 @@ public class IndexController {
if (chartForm.getTimeSeriesMeta() != null if (chartForm.getTimeSeriesMeta() != null
&& chartForm.getTimeSeriesMeta().getKey() != null && chartForm.getTimeSeriesMeta().getKey() != null
&& !chartForm.getTimeSeriesMeta().getKey().isEmpty()) { && !chartForm.getTimeSeriesMeta().getKey().isEmpty()) {
addChartToModel(dbService.getTimeSeries(chartForm.getSet(), chartForm.getTimeSeriesMeta().getKey()), addChartToModel(dbService.getTimeSeries(chartForm.getSet(), chartForm.getTimeSeriesMeta().getKey()), null, model);
null,
chartForm.isNeedForecast(),
model);
} }
return "index"; return "index";
} }
private void addChartToModel(TimeSeries timeSeries, String method, boolean needForecast, Model model) throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException { private void addChartToModel(TimeSeries timeSeries, String method, Model model) throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException {
if (needForecast) { int countForecastPoints = timeSeries.getLength() > 20 ? 10 : timeSeries.getLength() / 3;
int countForecastPoints = timeSeries.getLength() > 20 ? 10 : timeSeries.getLength() / 3; TimeSeries timeSeriesModel;
TimeSeries timeSeriesModel; ModelingResult modelingResult;
ModelingResult modelingResult; if (method == null) {
if (method == null) { timeSeriesModel = timeSeriesService.smoothTimeSeries(timeSeries).getTimeSeries();
timeSeriesModel = timeSeriesService.smoothTimeSeries(timeSeries).getTimeSeries(); modelingResult = timeSeriesService.getForecast(timeSeries, countForecastPoints);
modelingResult = timeSeriesService.getForecast(timeSeries, countForecastPoints);
} else {
timeSeriesModel = timeSeriesService.smoothTimeSeries(timeSeries, method).getTimeSeries();
modelingResult = timeSeriesService.getForecast(timeSeries, method, countForecastPoints);
}
TimeSeries forecast = modelingResult.getTimeSeries();
TimeSeries testForecast = modelingResult.getTestForecast();
// если временной ряд был сжат моделью, то для графика нужно вставить пустые значения
TimeSeries modelWithSkips = new TimeSeries(timeSeriesModel.getKey());
int j = 0;
for (int i = 0; i < timeSeries.getLength(); i++) {
if (timeSeries.getValue(i).getDate().equals(timeSeriesModel.getValue(j).getDate())) {
modelWithSkips.addValue(timeSeriesModel.getValue(j));
j++;
} else {
modelWithSkips.addValue(new TimeSeriesValue((Double) null));
}
}
model.addAttribute("model", modelWithSkips.getValues().stream().map(TimeSeriesValue::getValue).toArray());
timeSeries.getValues().remove(timeSeries.getValues().size() - 1);
List<Double> forecastValues = timeSeries.getValues().stream().map(v -> (Double) null).collect(Collectors.toList());
forecastValues.addAll(forecast.getValues().stream().map(TimeSeriesValue::getValue).collect(Collectors.toList()));
model.addAttribute("forecast", forecastValues.toArray());
List<Double> testForecastValues = timeSeries.getValues()
.stream()
.skip(countForecastPoints)
.map(v -> (Double) null)
.collect(Collectors.toList());
testForecastValues.addAll(testForecast.getValues().stream().map(TimeSeriesValue::getValue).collect(Collectors.toList()));
model.addAttribute("testForecast", testForecastValues.toArray());
model.addAttribute("forecastDescription", modelingResult);
model.addAttribute("statistic", statisticService.getStatistic(timeSeries));
model.addAttribute("dates", getDatesForChart(timeSeries, forecast));
} else { } else {
model.addAttribute("dates", getDatesForChart(timeSeries, new TimeSeries())); timeSeriesModel = timeSeriesService.smoothTimeSeries(timeSeries, method).getTimeSeries();
modelingResult = timeSeriesService.getForecast(timeSeries, method, countForecastPoints);
} }
TimeSeries forecast = modelingResult.getTimeSeries();
TimeSeries testForecast = modelingResult.getTestForecast();
model.addAttribute("dates", getDatesForChart(timeSeries, forecast));
model.addAttribute("timeSeries", timeSeries.getValues().stream().map(TimeSeriesValue::getValue).toArray()); model.addAttribute("timeSeries", timeSeries.getValues().stream().map(TimeSeriesValue::getValue).toArray());
// если временной ряд был сжат моделью, то для графика нужно вставить пустые значения
TimeSeries modelWithSkips = new TimeSeries(timeSeriesModel.getKey());
int j = 0;
for (int i = 0; i < timeSeries.getLength(); i++) {
if (timeSeries.getValue(i).getDate().equals(timeSeriesModel.getValue(j).getDate())) {
modelWithSkips.addValue(timeSeriesModel.getValue(j));
j++;
} else {
modelWithSkips.addValue(new TimeSeriesValue((Double) null));
}
}
model.addAttribute("model", modelWithSkips.getValues().stream().map(TimeSeriesValue::getValue).toArray());
timeSeries.getValues().remove(timeSeries.getValues().size() - 1);
List<Double> forecastValues = timeSeries.getValues().stream().map(v -> (Double) null).collect(Collectors.toList());
forecastValues.addAll(forecast.getValues().stream().map(TimeSeriesValue::getValue).collect(Collectors.toList()));
model.addAttribute("forecast", forecastValues.toArray());
List<Double> testForecastValues = timeSeries.getValues()
.stream()
.skip(countForecastPoints)
.map(v -> (Double) null)
.collect(Collectors.toList());
testForecastValues.addAll(testForecast.getValues().stream().map(TimeSeriesValue::getValue).collect(Collectors.toList()));
model.addAttribute("testForecast", testForecastValues.toArray());
model.addAttribute("forecastDescription", modelingResult);
model.addAttribute("statistic", statisticService.getStatistic(timeSeries));
} }
private List<String> getDatesForChart(TimeSeries timeSeries, TimeSeries forecast) { private List<String> getDatesForChart(TimeSeries timeSeries, TimeSeries forecast) {
@ -139,10 +132,7 @@ public class IndexController {
&& !chartForm.getTimeSeriesMeta().getKey().isEmpty() && !chartForm.getTimeSeriesMeta().getKey().isEmpty()
&& chartForm.getMethodClassName() != null && chartForm.getMethodClassName() != null
&& !chartForm.getMethodClassName().equals("")) { && !chartForm.getMethodClassName().equals("")) {
addChartToModel(dbService.getTimeSeries(chartForm.getSet(), chartForm.getTimeSeriesMeta().getKey()), addChartToModel(dbService.getTimeSeries(chartForm.getSet(), chartForm.getTimeSeriesMeta().getKey()), chartForm.getMethodClassName(), model);
chartForm.getMethodClassName(),
chartForm.isNeedForecast(),
model);
} }
return "method"; return "method";
} }

View File

@ -91,10 +91,4 @@ public class TimeSeriesController {
public ResponseEntity<List<TimeSeries>> getGroupedTendencies(@RequestBody List<TimeSeries> timeSeriesList) { public ResponseEntity<List<TimeSeries>> getGroupedTendencies(@RequestBody List<TimeSeries> timeSeriesList) {
return new ResponseEntity<>(timeSeriesService.getGroupedTendencies(timeSeriesList), HttpStatus.OK); return new ResponseEntity<>(timeSeriesService.getGroupedTendencies(timeSeriesList), HttpStatus.OK);
} }
@PostMapping("getMaxSmoothing")
@Operation(description = "Получить максимальное сглаживание временного ряда")
public ResponseEntity<ModelingResult> getMaxSmoothing(@RequestBody TimeSeries timeSeries) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
return new ResponseEntity<>(timeSeriesService.getMaxSmoothedTimeSeries(timeSeries), HttpStatus.OK);
}
} }

View File

@ -5,11 +5,9 @@ import ru.ulstu.db.model.TimeSeriesSet;
public class ChartForm { public class ChartForm {
private TimeSeriesSet set; private TimeSeriesSet set;
private TimeSeriesMeta timeSeriesMeta = null; private TimeSeriesMeta timeSeriesMeta;
private String methodClassName = null; private String methodClassName = null;
private boolean needForecast;
public TimeSeriesSet getSet() { public TimeSeriesSet getSet() {
return set; return set;
} }
@ -33,12 +31,4 @@ public class ChartForm {
public void setMethodClassName(String methodClassName) { public void setMethodClassName(String methodClassName) {
this.methodClassName = methodClassName; this.methodClassName = methodClassName;
} }
public boolean isNeedForecast() {
return needForecast;
}
public void setNeedForecast(boolean needForecast) {
this.needForecast = needForecast;
}
} }

View File

@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
public class TimeSeries { public class TimeSeries {
@ -88,6 +89,20 @@ public class TimeSeries {
throw new RuntimeException("Индекс выходит за границы временного ряда"); throw new RuntimeException("Индекс выходит за границы временного ряда");
} }
public TimeSeriesValue getMax() {
if ((values.size() > 0)) {
return values.stream().max(Comparator.comparing(TimeSeriesValue::getValue)).get();
}
throw new RuntimeException("Временной ряд пустой");
}
public TimeSeriesValue getMin() {
if ((values.size() > 0)) {
return values.stream().min(Comparator.comparing(TimeSeriesValue::getValue)).get();
}
throw new RuntimeException("Временной ряд пустой");
}
@Override @Override
public String toString() { public String toString() {
return "TimeSeries{" + return "TimeSeries{" +

View File

@ -0,0 +1,93 @@
package ru.ulstu.estimate;
import org.springframework.stereotype.Service;
import ru.ulstu.datamodel.Model;
import ru.ulstu.datamodel.ModelingResult;
import ru.ulstu.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.method.MethodParamValue;
import ru.ulstu.method.ftransform.FTransform;
import ru.ulstu.score.ScoreMethod;
import ru.ulstu.service.MethodParamBruteForce;
import ru.ulstu.service.TimeSeriesService;
import ru.ulstu.service.UtilService;
import ru.ulstu.target.AnomalyDifferenceSmoothed;
import java.lang.reflect.InvocationTargetException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@Service
public class CompressionMetricService {
private final int DEFAULT_THREAD_COUNT = 10;
private final TimeSeriesService timeSeriesService;
private final FTransform fTransform;
private final MethodParamBruteForce methodParamBruteForce;
private final UtilService utilService;
private final ScoreMethod scoreMethod;
private final AnomalyDifferenceSmoothed anomalyDifferenceSmoothed;
private final ExecutorService executors = Executors.newFixedThreadPool(DEFAULT_THREAD_COUNT);
public CompressionMetricService(TimeSeriesService timeSeriesService, FTransform fTransform, MethodParamBruteForce methodParamBruteForce, UtilService utilService, ScoreMethod scoreMethod, AnomalyDifferenceSmoothed anomalyDifferenceSmoothed) {
this.timeSeriesService = timeSeriesService;
this.fTransform = fTransform;
this.methodParamBruteForce = methodParamBruteForce;
this.utilService = utilService;
this.scoreMethod = scoreMethod;
this.anomalyDifferenceSmoothed = anomalyDifferenceSmoothed;
}
public TimeSeries getCompressionTimeSeries(TimeSeries ts) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
//ModelingResult modelingResult = timeSeriesService.smoothTimeSeries(ts, "FTransform");
ModelingResult modelingResult = getCompressionTimeSeriesWithFTransform(ts);
//var ts1 = fTransform.getForecast(ts, )
var timeSeriesAnomalyResult = anomalyDifferenceSmoothed.calculate(modelingResult.getTimeSeries());
var timeSeriesAnomaly = anomalyDifferenceSmoothed.calculate(ts);
System.out.println(ts.getLength()+"\t"
+timeSeriesAnomaly.getLength()+"\t"
+Math.abs(timeSeriesAnomaly.getLength() - timeSeriesAnomalyResult.getLength())+"\t"
+(double)modelingResult.getTimeSeries().getLength()/ts.getLength()+"\t"
+modelingResult.getScore().getDoubleValue());
System.out.println(timeSeriesAnomaly);
System.out.println(timeSeriesAnomalyResult);
System.out.println(utilService.getTimeSeriesToString(ts));
System.out.println(utilService.getTimeSeriesToString(modelingResult.getTimeSeries()));
return modelingResult.getTimeSeries();
}
protected ModelingResult getCompressionTimeSeriesWithFTransform(TimeSeries timeSeries) throws ExecutionException, InterruptedException {
List<Future<ModelingResult>> results = new ArrayList<>();
List<ModelingResult> results2 = new CopyOnWriteArrayList<>();
Map<LocalDateTime, Double> tsValues = timeSeries.getValues().stream()
.collect(Collectors.toMap(TimeSeriesValue::getDate, TimeSeriesValue::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new));
List<List<MethodParamValue>> availableParametersValues = methodParamBruteForce.getAvailableParametersValues(timeSeries, fTransform.getAvailableParameters());
for (List<MethodParamValue> parametersValues : availableParametersValues) {
results.add(executors.submit(() -> {
Model model = fTransform.getModel(timeSeries, parametersValues);
return new ModelingResult(model.getTimeSeriesModel(),
null,
parametersValues,
scoreMethod.getScore(tsValues, model.getTimeSeriesModel()), fTransform);
}));
}
for (Future<ModelingResult> futureModelingResult : results) {
results2.add(futureModelingResult.get());
}
return results2.stream()
.min(Comparator.comparing(modelingResult -> modelingResult.getScore().getDoubleValue()))
.orElse(null);
}
}

View File

@ -0,0 +1,11 @@
package ru.ulstu.http;
import org.springframework.stereotype.Service;
@Service
public class HttpClientService {
public void get(){
}
}

View File

@ -0,0 +1,66 @@
package ru.ulstu.http;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient;
import java.time.Duration;
import java.util.Optional;
@Service
public class WebClientService {
private final Logger log = LoggerFactory.getLogger(WebClientService.class);
private final WebClient client;
public WebClientService(WebClient client) {
this.client = client;
}
public JSONObject post(String url, JSONObject postData) {
log.debug("Service call: {}", url);
JSONObject response = null;
try {
response = new JSONObject(Optional.ofNullable(client
.post()
.uri(url)
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(postData.toString()))
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(String.class)
.toFuture().get()).orElse("{response:\"empty\"}"));
} catch (Exception e) {
return new JSONObject("{response:\"empty\"}");
}
log.debug("Service response: {}", response);
return response;
}
public JSONArray get(String url) {
log.debug("Service call: {}", url);
try {
String response = client
.get()
.uri(url)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(String.class)
.timeout(Duration.ofMinutes(1))
.toFuture().get();
if (response.startsWith("[")) {
return new JSONArray(response);
} else {
JSONArray jsonArray = new JSONArray();
jsonArray.put(0, new JSONObject(response));
return jsonArray;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

View File

@ -1,21 +1,21 @@
package ru.ulstu.method.ftransform; package ru.ulstu.method.ftransform;
/** /**
* Треугольная функция принадлежности * Базисная функция
*/ */
public class AComponent { public class AComponent {
private int start; // левая граница треугольника private double start; // левая граница треугольника
private int end; // правая граница треугольника private double end; // правая граница треугольника
private int top; // вершина треугольника private double top; // вершина треугольника
public int getStart() { public double getStart() {
return start; return start;
} }
public AComponent() { public AComponent() {
} }
public AComponent(int start, int top, int end) { public AComponent(double start, double top, double end) {
this.start = start; this.start = start;
this.top = top; this.top = top;
this.end = end; this.end = end;
@ -26,19 +26,23 @@ public class AComponent {
} }
public int getEnd() { public double getEnd() {
return end; return end;
} }
public void setEnd(int end) { public void setEnd(double end) {
this.end = end; this.end = end;
} }
public int getTop() { public double getTop() {
return top; return top;
} }
public void setTop(int top) { public int getTopInt() {
return (int) Math.round(top);
}
public void setTop(double top) {
this.top = top; this.top = top;
} }
@ -54,4 +58,9 @@ public class AComponent {
} }
return 0; return 0;
} }
@Override
public String toString() {
return "start=" + start;
}
} }

View File

@ -3,14 +3,19 @@ package ru.ulstu.method.ftransform;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.ulstu.datamodel.Model; import ru.ulstu.datamodel.Model;
import ru.ulstu.datamodel.ts.TimeSeries; import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.method.Method; import ru.ulstu.method.Method;
import ru.ulstu.method.MethodParamValue; import ru.ulstu.method.MethodParamValue;
import ru.ulstu.method.MethodParameter; import ru.ulstu.method.MethodParameter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Component @Component
public class FTransform extends Method { public class FTransform extends Method {
private final static int NUMBER_OF_FUZZY_VALUES = 3;
@Override @Override
protected FTransformModel getModelOfValidTimeSeries(TimeSeries ts, protected FTransformModel getModelOfValidTimeSeries(TimeSeries ts,
@ -29,8 +34,8 @@ public class FTransform extends Method {
sum1 += membership * ts.getNumericValue(j); sum1 += membership * ts.getNumericValue(j);
sum2 += membership; sum2 += membership;
} }
piecewiseLinearTrend.addValue(ts.getValue(aComponent.getTop()), sum1 / sum2); piecewiseLinearTrend.addValue(ts.getValue(aComponent.getTopInt()), sum1 / sum2);
tsModel.addValue(ts.getValue(aComponent.getTop()), sum1 / sum2); tsModel.addValue(ts.getValue(aComponent.getTopInt()), sum1 / sum2);
} }
return model; return model;
} }
@ -41,27 +46,27 @@ public class FTransform extends Method {
while (currentPoint < ts.getLength()) { while (currentPoint < ts.getLength()) {
int startPoint = (currentPoint == 0) int startPoint = (currentPoint == 0)
? 0 ? 0
: piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getTop(); : piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getTopInt();
AComponent bf = new AComponent(startPoint, currentPoint, (int) (currentPoint + Math.round(numberOfCoveredPoints / 2.0))); AComponent aComponent = new AComponent(startPoint, currentPoint, (int) (currentPoint + Math.round(numberOfCoveredPoints / 2.0)));
if (bf.getStart() < 0) { if (aComponent.getStart() < 0) {
bf.setStart(0); aComponent.setStart(0);
} }
if (bf.getEnd() > ts.getLength() - 1) { if (aComponent.getEnd() > ts.getLength() - 1) {
bf.setEnd(ts.getLength() - 1); aComponent.setEnd(ts.getLength() - 1);
} }
if (bf.getTop() > ts.getLength() - 1) { if (aComponent.getTop() > ts.getLength() - 1) {
bf.setTop(ts.getLength() - 1); aComponent.setTop(ts.getLength() - 1);
} }
piecewiseLinearTrend.add(bf); piecewiseLinearTrend.add(aComponent);
currentPoint += deltaForTriangle; currentPoint += deltaForTriangle;
} }
if (piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getEnd() != piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getTop()) { if (piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getEnd() != piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getTop()) {
AComponent bf = new AComponent(piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getTop(), AComponent aComponent = new AComponent(piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getTop(),
piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getEnd(), piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getEnd(),
piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getEnd()); piecewiseLinearTrend.get(piecewiseLinearTrend.size() - 1).getEnd());
piecewiseLinearTrend.add(bf); piecewiseLinearTrend.add(aComponent);
} }
return piecewiseLinearTrend; return piecewiseLinearTrend;
} }
@ -69,6 +74,25 @@ public class FTransform extends Method {
@Override @Override
protected TimeSeries getForecastWithValidParams(Model model, TimeSeries forecast) { protected TimeSeries getForecastWithValidParams(Model model, TimeSeries forecast) {
FTransformModel fTransformModel = (FTransformModel) model; FTransformModel fTransformModel = (FTransformModel) model;
double minValue = fTransformModel.getPiecewiseLinearTrend().getValues().stream().map(TimeSeriesValue::getValue).min(Double::compareTo).orElse(0.0);
double maxValue = fTransformModel.getPiecewiseLinearTrend().getValues().stream().map(TimeSeriesValue::getValue).max(Double::compareTo).orElse(0.0);
List<AComponent> fuzzyValues = new ArrayList<>();
double diff = (maxValue - minValue) / NUMBER_OF_FUZZY_VALUES;
for (int i = 0; i < NUMBER_OF_FUZZY_VALUES; i++) {
fuzzyValues.add(new AComponent(minValue + i * diff, minValue + i * diff + diff / 2, minValue + i * diff + diff));
}
List<AComponent> fuzzyTimeSeries = new ArrayList<>();
for (int i = 0; i < model.getTimeSeriesModel().getLength(); i++) {
for (AComponent fuzzyValue : fuzzyValues) {
if (model.getTimeSeriesModel().getValue(i).getValue() >= fuzzyValue.getStart()
&& model.getTimeSeriesModel().getValue(i).getValue() <= fuzzyValue.getEnd()) {
fuzzyTimeSeries.add(fuzzyValue);
}
}
}
for (int t = 1; t < forecast.getLength(); t++) { for (int t = 1; t < forecast.getLength(); t++) {
forecast.getValues().get(t).setValue(fTransformModel.getPiecewiseLinearTrend().getLastValue().getValue()); forecast.getValues().get(t).setValue(fTransformModel.getPiecewiseLinearTrend().getLastValue().getValue());
} }
@ -80,6 +104,16 @@ public class FTransform extends Method {
return FTransformModel.getAvailableParameters(); return FTransformModel.getAvailableParameters();
} }
// private AComponent findFuzzyValueByPrevious(List<AComponent> fuzzyTimeSeries, AComponent currentFuzzyValue) {
// Map<AComponent, Integer> mostFrequentValues = new HashMap<>();
// for (int i = 0; i < fuzzyTimeSeries.size() - 1; i++) {
// if (fuzzyTimeSeries.get(i).equals(currentFuzzyValue)) {
// mostFrequentValues.put(fuzzyTimeSeries.get(i + 1), mostFrequentValues.getOrDefault(fuzzyTimeSeries.get(i + 1), 0) + 1);
// }
// }
// mostFrequentValues.entrySet().stream()
// }
@Override @Override
public String getName() { public String getName() {
return "F - преобразование"; return "F - преобразование";

View File

@ -0,0 +1,32 @@
package ru.ulstu.score;
import org.springframework.stereotype.Component;
import ru.ulstu.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.target.AnomalyDifferenceSmoothed;
import java.lang.reflect.InvocationTargetException;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import static java.lang.Math.abs;
@Component
public class AnomalyCompressionScore extends ScoreMethod {
private final AnomalyDifferenceSmoothed anomalyDifferenceSmoothed;
public AnomalyCompressionScore(AnomalyDifferenceSmoothed anomalyDifferenceSmoothed) {
super("Smape, %");
this.anomalyDifferenceSmoothed = anomalyDifferenceSmoothed;
}
@Override
public Number evaluate(Map<LocalDateTime, Double> tsValues, TimeSeries model) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
var timeSeriesAnomalyResult = anomalyDifferenceSmoothed.calculate(model);
var timeSeriesAnomaly = anomalyDifferenceSmoothed.calculate(tsValues);
// туду: добавить сравнение аномальных точек
return (double)model.getLength()/tsValues.size() + Math.abs(timeSeriesAnomaly.getLength() - timeSeriesAnomalyResult.getLength());
}
}

View File

@ -5,9 +5,11 @@ import ru.ulstu.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries; import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue; import ru.ulstu.datamodel.ts.TimeSeriesValue;
import java.lang.reflect.InvocationTargetException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ExecutionException;
public abstract class ScoreMethod { public abstract class ScoreMethod {
private final String name; private final String name;
@ -16,11 +18,11 @@ public abstract class ScoreMethod {
this.name = name; this.name = name;
} }
public Score getScore(Map<LocalDateTime, Double> tsValues, TimeSeries model) throws ModelingException { public Score getScore(Map<LocalDateTime, Double> tsValues, TimeSeries model) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
return new Score(this, evaluate(tsValues, model)); return new Score(this, evaluate(tsValues, model));
} }
public abstract Number evaluate(Map<LocalDateTime, Double> tsValues, TimeSeries model) throws ModelingException; public abstract Number evaluate(Map<LocalDateTime, Double> tsValues, TimeSeries model) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException;
public String getName() { public String getName() {
return name; return name;

View File

@ -9,7 +9,6 @@ import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.method.Method; import ru.ulstu.method.Method;
import ru.ulstu.method.MethodParamValue; import ru.ulstu.method.MethodParamValue;
import ru.ulstu.method.MethodParameter; import ru.ulstu.method.MethodParameter;
import ru.ulstu.method.ftransform.FTransform;
import ru.ulstu.score.ScoreMethod; import ru.ulstu.score.ScoreMethod;
import ru.ulstu.score.Smape; import ru.ulstu.score.Smape;
@ -29,12 +28,11 @@ import java.util.concurrent.Future;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
class MethodParamBruteForce { public class MethodParamBruteForce {
private final int DEFAULT_THREAD_COUNT = 50; private final int DEFAULT_THREAD_COUNT = 50;
private final List<Method> methods; private final List<Method> methods;
private final ScoreMethod scoreMethod = new Smape(); private final ScoreMethod scoreMethod = new Smape();
private final ExecutorService executors = Executors.newCachedThreadPool(); private final ExecutorService executors = Executors.newFixedThreadPool(DEFAULT_THREAD_COUNT);
;
public MethodParamBruteForce(List<Method> methods) { public MethodParamBruteForce(List<Method> methods) {
this.methods = methods; this.methods = methods;
@ -75,7 +73,7 @@ class MethodParamBruteForce {
for (Future<ModelingResult> futureModelingResult : futureModelingResults) { for (Future<ModelingResult> futureModelingResult : futureModelingResults) {
modelingResults.add(futureModelingResult.get()); modelingResults.add(futureModelingResult.get());
} }
System.gc();
return getBestResultForecast(modelingResults, timeSeries, countPoints); return getBestResultForecast(modelingResults, timeSeries, countPoints);
} }
@ -160,38 +158,6 @@ class MethodParamBruteForce {
for (Future<ModelingResult> futureModelingResult : results) { for (Future<ModelingResult> futureModelingResult : results) {
results2.add(futureModelingResult.get()); results2.add(futureModelingResult.get());
} }
System.gc();
return results2.stream()
.min(Comparator.comparing(modelingResult -> modelingResult.getScore().getDoubleValue()))
.orElse(null);
}
public ModelingResult getMaxSmoothedTimeSeries(TimeSeries timeSeries) throws ExecutionException, InterruptedException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
List<Future<ModelingResult>> results = new ArrayList<>();
List<ModelingResult> results2 = new CopyOnWriteArrayList<>();
Map<LocalDateTime, Double> tsValues = timeSeries.getValues().stream()
.collect(Collectors.toMap(TimeSeriesValue::getDate, TimeSeriesValue::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new));
Method method = new FTransform();
List<List<MethodParamValue>> availableParameterValues = getAvailableParametersValues(timeSeries, method.getAvailableParameters());
List<MethodParamValue> parametersValue = availableParameterValues.get(availableParameterValues.size() - 1);
Method methodInstance = method.getClass().getDeclaredConstructor().newInstance();
if (methodInstance.canMakeModel(timeSeries, parametersValue)) {
results.add(executors.submit(() -> {
Model model = methodInstance.getModel(timeSeries, parametersValue);
return new ModelingResult(model.getTimeSeriesModel(),
null,
parametersValue,
scoreMethod.getScore(tsValues, model.getTimeSeriesModel()),
methodInstance);
}));
}
for (Future<ModelingResult> futureModelingResult : results) {
results2.add(futureModelingResult.get());
}
System.gc();
return results2.stream() return results2.stream()
.min(Comparator.comparing(modelingResult -> modelingResult.getScore().getDoubleValue())) .min(Comparator.comparing(modelingResult -> modelingResult.getScore().getDoubleValue()))
.orElse(null); .orElse(null);
@ -209,7 +175,7 @@ class MethodParamBruteForce {
return getSmoothedTimeSeries(timeSeries, methods); return getSmoothedTimeSeries(timeSeries, methods);
} }
private List<List<MethodParamValue>> getAvailableParametersValues(TimeSeries timeSeries, List<MethodParameter> availableParameters) { public List<List<MethodParamValue>> getAvailableParametersValues(TimeSeries timeSeries, List<MethodParameter> availableParameters) {
List<List<MethodParamValue>> result = new ArrayList<>(); List<List<MethodParamValue>> result = new ArrayList<>();
Map<MethodParameter, Integer> parameterOffset = new TreeMap<>(); Map<MethodParameter, Integer> parameterOffset = new TreeMap<>();
Map<MethodParameter, List<Number>> parameterValues = new TreeMap<>(); Map<MethodParameter, List<Number>> parameterValues = new TreeMap<>();

View File

@ -0,0 +1,87 @@
package ru.ulstu.service;
import org.json.JSONObject;
import org.springframework.stereotype.Service;
import org.springframework.web.util.UriComponentsBuilder;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.http.WebClientService;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
@Service
public class PrometheusService {
private static final String PROMETHEUS_API_URL = "http://prometheus.athene.tech/api/v1/";
private final WebClientService httpService;
public PrometheusService(WebClientService httpService) {
this.httpService = httpService;
}
public TimeSeries executionQuery(String query){ // example: pve_cpu_usage_ratio{id="lxc/111"}[5h]
var timeSeries = new TimeSeries();
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(PROMETHEUS_API_URL + "query")
.queryParam("query",
"pve_cpu_usage_ratio{id='lxc/111'}[1h]");
var response = httpService.get(PROMETHEUS_API_URL + "query?query=" + query);
if (response.getJSONObject(0).getString("status").equals("success")){
}
return timeSeries;
}
public TimeSeries executionQueryPost(String query){ // example: pve_cpu_usage_ratio{id="lxc/111"}[5h]
var timeSeries = new TimeSeries();
var postData = new JSONObject();
postData.put("query", query);
var response = httpService.post(PROMETHEUS_API_URL + "query", postData);
// if (response.getJSONObject(0).getString("status").equals("success")){
//
// }
return timeSeries;
}
public TimeSeries executionQueryRange(String query){
int numberTimeSeries = 14;
var nowDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
var timeSeries = new TimeSeries();
var response = httpService.get(PROMETHEUS_API_URL + "query_range?query=" + query +
"&start=" + nowDateTime.minusHours(10).minusMinutes(100).toString()+".004Z" +
"&end=" + nowDateTime.minusHours(10).toString()+".004Z" +
"&step=15s");
var array = response.getJSONObject(0).getJSONObject("data").getJSONArray("result").getJSONObject(numberTimeSeries).getJSONArray("values").toList();
for (int i = 0; i < array.size(); i++) {
BigDecimal seconds = (BigDecimal)(((ArrayList) array.get(i)).get(0));
Double value = Double.parseDouble((String)(((ArrayList) array.get(i)).get(1)));
LocalDateTime dateTime =
LocalDateTime.ofInstant(Instant.ofEpochSecond(seconds.longValue()), ZoneId.systemDefault());
timeSeries.addValue(new TimeSeriesValue(dateTime, value));
}
return timeSeries;
}
public TimeSeries executionQueryRangePost(String query){
var timeSeries = new TimeSeries();
var postData = new JSONObject();
postData.put("query", query);
postData.put("start", "2023-04-06T00:00:00.004Z");
postData.put("end", "2023-04-07T00:00:00.004Z");
postData.put("step", "15s");
var response = httpService.post(PROMETHEUS_API_URL + "query_range", postData);
// response.getJSONObject();
// if (response.getJSONObject(0).getString("status").equals("success")){
// var array = response.getJSONObject(0).getJSONObject("data").getJSONArray("result");
// int a = 5;
// }
return timeSeries;
}
}

View File

@ -40,10 +40,6 @@ public class TimeSeriesService {
return methodParamBruteForce.getSmoothedTimeSeries(timeSeries, methodClassName); return methodParamBruteForce.getSmoothedTimeSeries(timeSeries, methodClassName);
} }
public ModelingResult getMaxSmoothedTimeSeries(TimeSeries timeSeries) throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException {
return methodParamBruteForce.getMaxSmoothedTimeSeries(timeSeries);
}
public List<Method> getAvailableMethods() { public List<Method> getAvailableMethods() {
return methodParamBruteForce.getAvailableMethods(); return methodParamBruteForce.getAvailableMethods();
} }
@ -58,7 +54,7 @@ public class TimeSeriesService {
public TimeSeries getGroupedTendencies(TimeSeries timeSeries) { public TimeSeries getGroupedTendencies(TimeSeries timeSeries) {
try { try {
timeSeries = getMaxSmoothedTimeSeries(timeSeries).getTimeSeries(); timeSeries = smoothTimeSeries(timeSeries, "FTransform").getTimeSeries();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -81,7 +77,7 @@ public class TimeSeriesService {
private boolean tsTendencyNotChanged(double diff, double prevDiff) { private boolean tsTendencyNotChanged(double diff, double prevDiff) {
return (diff > 0 && prevDiff > 0) return (diff > 0 && prevDiff > 0)
|| (diff < 0 && prevDiff < 0) || ((diff < 0 && prevDiff < 0)
|| (diff == 0 && prevDiff == 0); || ((diff == 0 && prevDiff == 0)));
} }
} }

View File

@ -0,0 +1,17 @@
package ru.ulstu.target;
import org.springframework.stereotype.Service;
import ru.ulstu.datamodel.ts.TimeSeries;
@Service
public class AnomalyDecompose extends Target {
public AnomalyDecompose() {
super("Разложение");
}
@Override
public TimeSeries calculate(TimeSeries model) {
return null;
}
}

View File

@ -0,0 +1,46 @@
package ru.ulstu.target;
import org.springframework.stereotype.Service;
import ru.ulstu.datamodel.ModelingResult;
import ru.ulstu.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import ru.ulstu.service.TimeSeriesService;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.ExecutionException;
@Service
public class AnomalyDifferenceSmoothed extends Target {
private final TimeSeriesService timeSeriesService;
public AnomalyDifferenceSmoothed(TimeSeriesService timeSeriesService) {
super("Модель сравнения со сглаженным ВР");
this.timeSeriesService = timeSeriesService;
}
@Override
public TimeSeries calculate(TimeSeries timeSeries) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
TimeSeries residual = new TimeSeries();
TimeSeries anomalyPoints = new TimeSeries();
TimeSeries timeSeriesSmooth = timeSeriesService.smoothTimeSeries(timeSeries, "AddTrendAddSeason").getTimeSeries();
for (int i = 0; i < timeSeries.getLength(); i++) {
residual.addValue(new TimeSeriesValue(timeSeries.getValue(i).getDate(),
Math.abs(timeSeries.getNumericValue(i) - timeSeriesSmooth.getNumericValue(i))));
}
double diff = timeSeries.getMax().getValue()-timeSeries.getMin().getValue();
for (int i = 0; i < residual.getLength(); i++) {
if (residual.getNumericValue(i)/diff > 0.05) {
anomalyPoints.addValue(new TimeSeriesValue(residual.getValue(i).getDate(),
timeSeries.getNumericValue(i)));
}
}
return anomalyPoints;
}
}

View File

@ -0,0 +1,14 @@
package ru.ulstu.target;
import ru.ulstu.datamodel.ts.TimeSeries;
public class AnomalyPredictive extends Target {
public AnomalyPredictive() {
super("Прогнозная модель, %");
}
@Override
public TimeSeries calculate(TimeSeries model) {
return null;
}
}

View File

@ -0,0 +1,32 @@
package ru.ulstu.target;
import ru.ulstu.datamodel.exception.ModelingException;
import ru.ulstu.datamodel.ts.TimeSeries;
import ru.ulstu.datamodel.ts.TimeSeriesValue;
import java.lang.reflect.InvocationTargetException;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.concurrent.ExecutionException;
public abstract class Target {
private final String name;
public Target(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract TimeSeries calculate(TimeSeries model) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException;
public TimeSeries calculate(Map<LocalDateTime, Double> values) throws ModelingException, ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
TimeSeries model = new TimeSeries();
for (var entry : values.entrySet()) {
model.addValue(new TimeSeriesValue(entry.getKey(), entry.getValue()));
}
return calculate(model);
}
}

View File

@ -2,6 +2,7 @@ spring.main.banner-mode=off
logging.level.tech.athene=DEBUG logging.level.tech.athene=DEBUG
server.port=8080 server.port=8080
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
spring.codec.max-in-memory-size=50MB
joinfaces.primefaces.theme=afterwork joinfaces.primefaces.theme=afterwork
joinfaces.primefaces.font-awesome=true joinfaces.primefaces.font-awesome=true
time-series.db-path=time-series-db time-series.db-path=time-series-db

View File

@ -123,11 +123,7 @@
$('#select-ts').val([[*{timeSeriesMeta.key}]]); $('#select-ts').val([[*{timeSeriesMeta.key}]]);
$('#select-ts').selectpicker('refresh'); $('#select-ts').selectpicker('refresh');
</script> </script>
<input id="need-forecast" type="hidden" th:field="*{needForecast}">
<button th:if="*{timeSeriesMeta != null && !#strings.isEmpty(timeSeriesMeta.key)}" type="button"
class="btn btn-primary" onclick="$('#need-forecast').val(true); form.submit();">
Построить прогноз
</button>
<h5 th:if="${forecastDescription != null && forecastDescription.timeSeriesMethod != null}"> <h5 th:if="${forecastDescription != null && forecastDescription.timeSeriesMethod != null}">
Результаты моделирования: Результаты моделирования:
</h5> </h5>

View File

@ -120,7 +120,7 @@
<select id="select-ts" class="selectpicker form-group" data-live-search="true" <select id="select-ts" class="selectpicker form-group" data-live-search="true"
th:field="*{timeSeriesMeta}" th:field="*{timeSeriesMeta}"
data-width="90%" onchange="$('#need-forecast').val(false); form.submit();"> data-width="90%" onchange="form.submit();">
<option value="">Временной ряд</option> <option value="">Временной ряд</option>
<option th:each="ts : ${listTimeSeries}" <option th:each="ts : ${listTimeSeries}"
th:value="${ts.key}" th:value="${ts.key}"
@ -135,7 +135,7 @@
<select id="select-method" class="selectpicker form-group" data-live-search="true" <select id="select-method" class="selectpicker form-group" data-live-search="true"
th:field="*{methodClassName}" th:field="*{methodClassName}"
data-width="90%" onchange="$('#need-forecast').val(false); form.submit();"> data-width="90%" onchange="form.submit();">
<option value="">Метод прогнозирования</option> <option value="">Метод прогнозирования</option>
<option th:each="method : ${methods}" <option th:each="method : ${methods}"
th:value="${method.key}" th:value="${method.key}"
@ -145,13 +145,10 @@
<script th:inline="javascript" th:if="*{methodClassName != null && methodClassName != ''}"> <script th:inline="javascript" th:if="*{methodClassName != null && methodClassName != ''}">
$('#select-method').val([[*{methodClassName}]]); $('#select-method').val([[*{methodClassName}]]);
$('#select-method').selectpicker('refresh'); $('#select-method').selectpicker('refresh');
</script> </script>
<input id="need-forecast" type="hidden" th:field="*{needForecast}">
<button th:if="*{methodClassName != null && methodClassName != ''}" type="button"
class="btn btn-primary" onclick="$('#need-forecast').val(true); form.submit();">
Построить прогноз
</button>
<div th:if="${forecastDescription != null && forecastDescription.timeSeriesMethod != null}"> <div th:if="${forecastDescription != null && forecastDescription.timeSeriesMethod != null}">
<p> Метод прогнозирования: <span th:text="${forecastDescription.timeSeriesMethod}"> </span> <p> Метод прогнозирования: <span th:text="${forecastDescription.timeSeriesMethod}"> </span>
<p> Оценка: <span th:text="${forecastDescription.score.value}"> </span> <p> Оценка: <span th:text="${forecastDescription.score.value}"> </span>

View File

@ -1,7 +0,0 @@
2003-04-29T09:32:57.120554;0.00157
2003-10-30T09:32:57.120554;0.00119
2004-04-30T09:32:57.120554;0.000505021970694462
2004-10-27T09:32:57.120554;0.00122503783903256
2005-04-05T09:32:57.120554;0.00108379668432313
2005-09-30T09:32:57.120554;0.00186974773746743
2005-12-31T09:32:57.120554;0.00160839737199463
1 2003-04-29T09:32:57.120554 0.00157
2 2003-10-30T09:32:57.120554 0.00119
3 2004-04-30T09:32:57.120554 0.000505021970694462
4 2004-10-27T09:32:57.120554 0.00122503783903256
5 2005-04-05T09:32:57.120554 0.00108379668432313
6 2005-09-30T09:32:57.120554 0.00186974773746743
7 2005-12-31T09:32:57.120554 0.00160839737199463

View File

@ -1 +0,0 @@
{"key":"Коэффициент привлечения (соотношения собственных и заемных средств)","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0.389759183
2003-04-29T09:32:57.120554;0.403001187
2003-07-30T09:32:57.120554;0.491382493
2003-10-30T09:32:57.120554;0.43540681
2004-01-01T09:32:57.120554;0.584191706
2004-04-30T09:32:57.120554;0.635624474
2004-07-29T09:32:57.120554;0.34954503
2004-10-27T09:32:57.120554;0.496670762
2005-01-01T09:32:57.120554;0.865462608
2005-04-29T09:32:57.120554;2.015631486
2005-06-30T09:32:57.120554;0.765889497
2005-09-30T09:32:57.120554;0.603866019
2005-12-31T09:32:57.120554;0.663070988
1 2003-01-01T09:32:57.120554 0.389759183
2 2003-04-29T09:32:57.120554 0.403001187
3 2003-07-30T09:32:57.120554 0.491382493
4 2003-10-30T09:32:57.120554 0.43540681
5 2004-01-01T09:32:57.120554 0.584191706
6 2004-04-30T09:32:57.120554 0.635624474
7 2004-07-29T09:32:57.120554 0.34954503
8 2004-10-27T09:32:57.120554 0.496670762
9 2005-01-01T09:32:57.120554 0.865462608
10 2005-04-29T09:32:57.120554 2.015631486
11 2005-06-30T09:32:57.120554 0.765889497
12 2005-09-30T09:32:57.120554 0.603866019
13 2005-12-31T09:32:57.120554 0.663070988

View File

@ -1 +0,0 @@
{"key":"Коэффициент быстрой ликвидности","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;1.866521416
2003-04-29T09:32:57.120554;1.312521108
2003-07-30T09:32:57.120554;1.285475189
2003-10-30T09:32:57.120554;1.130654615
2004-01-01T09:32:57.120554;1.369348118
2004-04-30T09:32:57.120554;1.634045786
2004-07-29T09:32:57.120554;1.456659692
2004-10-27T09:32:57.120554;1.694173821
2005-01-01T09:32:57.120554;2.70768445
2005-04-29T09:32:57.120554;7.100717469
2005-06-30T09:32:57.120554;3.395716655
2005-09-30T09:32:57.120554;1.613323605
2005-12-31T09:32:57.120554;1.611867075
1 2003-01-01T09:32:57.120554 1.866521416
2 2003-04-29T09:32:57.120554 1.312521108
3 2003-07-30T09:32:57.120554 1.285475189
4 2003-10-30T09:32:57.120554 1.130654615
5 2004-01-01T09:32:57.120554 1.369348118
6 2004-04-30T09:32:57.120554 1.634045786
7 2004-07-29T09:32:57.120554 1.456659692
8 2004-10-27T09:32:57.120554 1.694173821
9 2005-01-01T09:32:57.120554 2.70768445
10 2005-04-29T09:32:57.120554 7.100717469
11 2005-06-30T09:32:57.120554 3.395716655
12 2005-09-30T09:32:57.120554 1.613323605
13 2005-12-31T09:32:57.120554 1.611867075

View File

@ -1 +0,0 @@
{"key":"Коэффициент текущей ликвидности (общий коэффициент покрытия)","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0.586771111175797
2003-04-29T09:32:57.120554;0.343606035205365
2003-07-30T09:32:57.120554;0.359502703447326
2003-10-30T09:32:57.120554;0.187929277660206
2004-01-01T09:32:57.120554;0.472922641735106
2004-04-30T09:32:57.120554;0.635048328717729
2004-07-29T09:32:57.120554;0.412477322619393
2004-10-27T09:32:57.120554;-0.181247674929825
2005-01-01T09:32:57.120554;0.926970037468583
2005-04-29T09:32:57.120554;1.19972749523911
2005-06-30T09:32:57.120554;0.910978749042943
2005-09-30T09:32:57.120554;0.607577389445363
2005-12-31T09:32:57.120554;0.644891997049848
1 2003-01-01T09:32:57.120554 0.586771111175797
2 2003-04-29T09:32:57.120554 0.343606035205365
3 2003-07-30T09:32:57.120554 0.359502703447326
4 2003-10-30T09:32:57.120554 0.187929277660206
5 2004-01-01T09:32:57.120554 0.472922641735106
6 2004-04-30T09:32:57.120554 0.635048328717729
7 2004-07-29T09:32:57.120554 0.412477322619393
8 2004-10-27T09:32:57.120554 -0.181247674929825
9 2005-01-01T09:32:57.120554 0.926970037468583
10 2005-04-29T09:32:57.120554 1.19972749523911
11 2005-06-30T09:32:57.120554 0.910978749042943
12 2005-09-30T09:32:57.120554 0.607577389445363
13 2005-12-31T09:32:57.120554 0.644891997049848

View File

@ -1 +0,0 @@
{"key":"Коэффициент финансовой независимости в части запасов","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0.464244025721368
2003-04-29T09:32:57.120554;0.238104006194206
2003-07-30T09:32:57.120554;0.22208010974147
2003-10-30T09:32:57.120554;0.115559089408091
2004-01-01T09:32:57.120554;0.271164241921994
2004-04-30T09:32:57.120554;0.388022043930572
2004-07-29T09:32:57.120554;0.313497856925371
2004-10-27T09:32:57.120554;-0.128112382837432
2005-01-01T09:32:57.120554;0.630680746445687
2005-04-29T09:32:57.120554;0.859169160805333
2005-06-30T09:32:57.120554;0.705511353980947
2005-09-30T09:32:57.120554;0.380161551500197
2005-12-31T09:32:57.120554;0.379603884562761
1 2003-01-01T09:32:57.120554 0.464244025721368
2 2003-04-29T09:32:57.120554 0.238104006194206
3 2003-07-30T09:32:57.120554 0.22208010974147
4 2003-10-30T09:32:57.120554 0.115559089408091
5 2004-01-01T09:32:57.120554 0.271164241921994
6 2004-04-30T09:32:57.120554 0.388022043930572
7 2004-07-29T09:32:57.120554 0.313497856925371
8 2004-10-27T09:32:57.120554 -0.128112382837432
9 2005-01-01T09:32:57.120554 0.630680746445687
10 2005-04-29T09:32:57.120554 0.859169160805333
11 2005-06-30T09:32:57.120554 0.705511353980947
12 2005-09-30T09:32:57.120554 0.380161551500197
13 2005-12-31T09:32:57.120554 0.379603884562761

View File

@ -1 +0,0 @@
{"key":"Коэффициент финансовой независимости в части оборотных средств","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0.565999794
2003-04-29T09:32:57.120554;0.285731545
2003-07-30T09:32:57.120554;0.281643961
2003-10-30T09:32:57.120554;0.240160533
2004-01-01T09:32:57.120554;0.309208419
2004-04-30T09:32:57.120554;0.431034912
2004-07-29T09:32:57.120554;0.430499733
2004-10-27T09:32:57.120554;0.049138358
2005-01-01T09:32:57.120554;0.865752552
2005-04-29T09:32:57.120554;1.178519969
2005-06-30T09:32:57.120554;0.964092382
2005-09-30T09:32:57.120554;0.574686633
2005-12-31T09:32:57.120554;0.519997576
1 2003-01-01T09:32:57.120554 0.565999794
2 2003-04-29T09:32:57.120554 0.285731545
3 2003-07-30T09:32:57.120554 0.281643961
4 2003-10-30T09:32:57.120554 0.240160533
5 2004-01-01T09:32:57.120554 0.309208419
6 2004-04-30T09:32:57.120554 0.431034912
7 2004-07-29T09:32:57.120554 0.430499733
8 2004-10-27T09:32:57.120554 0.049138358
9 2005-01-01T09:32:57.120554 0.865752552
10 2005-04-29T09:32:57.120554 1.178519969
11 2005-06-30T09:32:57.120554 0.964092382
12 2005-09-30T09:32:57.120554 0.574686633
13 2005-12-31T09:32:57.120554 0.519997576

View File

@ -1 +0,0 @@
{"key":"Коэффициент финансовой независимости","size":1,"hasDateTime":true}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
{"key":"Gitea-cpuload-1080","size":1080,"hasDateTime":true}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
{"key":"Gitea-mem-1080","size":1080,"hasDateTime":true}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
{"key":"Jenkins-cpuload-1080","size":1080,"hasDateTime":true}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
{"key":"Jenkins-mem-1080","size":1080,"hasDateTime":true}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
{"key":"Onlyoffice-cpuload-1080","size":1080,"hasDateTime":true}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
{"key":"Onlyoffice-mem-1080","size":1080,"hasDateTime":true}

View File

@ -1,11 +0,0 @@
2003-03-30T09:32:57.120554;4328.993
2003-04-29T09:32:57.120554;1803.609
2003-07-30T09:32:57.120554;2490.247
2003-10-30T09:32:57.120554;4083.334
2004-03-29T09:32:57.120554;3090.535
2004-04-29T09:32:57.120554;3726.734
2004-10-27T09:32:57.120554;3939.825
2005-04-30T09:32:57.120554;2550.127
2005-06-30T09:32:57.120554;3090.535
2005-09-30T09:32:57.120554;5174.083
2005-12-31T09:32:57.120554;7018.805
1 2003-03-30T09:32:57.120554 4328.993
2 2003-04-29T09:32:57.120554 1803.609
3 2003-07-30T09:32:57.120554 2490.247
4 2003-10-30T09:32:57.120554 4083.334
5 2004-03-29T09:32:57.120554 3090.535
6 2004-04-29T09:32:57.120554 3726.734
7 2004-10-27T09:32:57.120554 3939.825
8 2005-04-30T09:32:57.120554 2550.127
9 2005-06-30T09:32:57.120554 3090.535
10 2005-09-30T09:32:57.120554 5174.083
11 2005-12-31T09:32:57.120554 7018.805

View File

@ -1 +0,0 @@
{"key":"Баланс. разделы I-II","size":1,"hasDateTime":true}

View File

@ -1,12 +0,0 @@
2003-03-30T09:32:57.120554;4328.993
2003-04-29T09:32:57.120554;1803.605
2003-07-30T09:32:57.120554;2490.247
2003-10-30T09:32:57.120554;4083.339
2004-04-30T09:32:57.120554;3726.734
2004-07-29T09:32:57.120554;4435.276
2004-10-27T09:32:57.120554;3939.825
2005-03-29T09:32:57.120554;3090.535
2005-04-29T09:32:57.120554;2550.127
2005-06-30T09:32:57.120554;3118.025
2005-10-28T09:32:57.120554;5174.083
2005-12-31T09:32:57.120554;7018.8
1 2003-03-30T09:32:57.120554 4328.993
2 2003-04-29T09:32:57.120554 1803.605
3 2003-07-30T09:32:57.120554 2490.247
4 2003-10-30T09:32:57.120554 4083.339
5 2004-04-30T09:32:57.120554 3726.734
6 2004-07-29T09:32:57.120554 4435.276
7 2004-10-27T09:32:57.120554 3939.825
8 2005-03-29T09:32:57.120554 3090.535
9 2005-04-29T09:32:57.120554 2550.127
10 2005-06-30T09:32:57.120554 3118.025
11 2005-10-28T09:32:57.120554 5174.083
12 2005-12-31T09:32:57.120554 7018.8

View File

@ -1 +0,0 @@
{"key":"Баланс. разделы III-V","size":1,"hasDateTime":true}

View File

@ -1,12 +0,0 @@
2003-04-29T09:32:57.120554;1420.22
2003-04-30T09:32:57.120554;2182.179
2003-10-30T09:32:57.120554;2726.25
2004-03-30T09:32:57.120554;4287.209
2004-04-30T09:32:57.120554;515.966
2004-07-29T09:32:57.120554;2114.85
2004-10-27T09:32:57.120554;4091.256
2005-03-29T09:32:57.120554;7521.68
2005-04-05T09:32:57.120554;515.96
2005-06-30T09:32:57.120554;3238.057
2005-09-30T09:32:57.120554;4873.047
2005-12-31T09:32:57.120554;6966.77
1 2003-04-29T09:32:57.120554 1420.22
2 2003-04-30T09:32:57.120554 2182.179
3 2003-10-30T09:32:57.120554 2726.25
4 2004-03-30T09:32:57.120554 4287.209
5 2004-04-30T09:32:57.120554 515.966
6 2004-07-29T09:32:57.120554 2114.85
7 2004-10-27T09:32:57.120554 4091.256
8 2005-03-29T09:32:57.120554 7521.68
9 2005-04-05T09:32:57.120554 515.96
10 2005-06-30T09:32:57.120554 3238.057
11 2005-09-30T09:32:57.120554 4873.047
12 2005-12-31T09:32:57.120554 6966.77

View File

@ -1 +0,0 @@
{"key":"Выручка(нетто) от продажи товаров, продукций, работ, услуг(за минусом НДС, акцизов и аналог-х обяз-х платежей)","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;77933
2003-04-29T09:32:57.120554;491613
2003-07-30T09:32:57.120554;394316
2003-10-30T09:32:57.120554;938137
2004-01-01T09:32:57.120554;1458523
2004-04-30T09:32:57.120554;1009647
2004-07-29T09:32:57.120554;642479
2004-10-27T09:32:57.120554;441118
2005-01-01T09:32:57.120554;520837
2005-04-29T09:32:57.120554;247312
2005-06-30T09:32:57.120554;354420
2005-09-30T09:32:57.120554;1201533
2005-12-31T09:32:57.120554;974712
1 2003-01-01T09:32:57.120554 77933
2 2003-04-29T09:32:57.120554 491613
3 2003-07-30T09:32:57.120554 394316
4 2003-10-30T09:32:57.120554 938137
5 2004-01-01T09:32:57.120554 1458523
6 2004-04-30T09:32:57.120554 1009647
7 2004-07-29T09:32:57.120554 642479
8 2004-10-27T09:32:57.120554 441118
9 2005-01-01T09:32:57.120554 520837
10 2005-04-29T09:32:57.120554 247312
11 2005-06-30T09:32:57.120554 354420
12 2005-09-30T09:32:57.120554 1201533
13 2005-12-31T09:32:57.120554 974712

View File

@ -1 +0,0 @@
{"key":"Денежные средства","size":1,"hasDateTime":true}

View File

@ -1,42 +0,0 @@
2006-01-31T09:32:57.120554;4813053
2006-02-28T09:32:57.120554;9375274
2006-03-31T09:32:57.120554;14264264
2006-04-30T09:32:57.120554;4934206
2006-05-31T09:32:57.120554;17230472
2006-06-30T09:32:57.120554;11530903
2006-07-31T09:32:57.120554;10117797
2006-08-31T09:32:57.120554;9083848
2006-09-30T09:32:57.120554;10018250
2006-10-31T09:32:57.120554;7012682
2006-11-30T09:32:57.120554;14591705
2006-12-31T09:32:57.120554;11647228
2007-01-31T09:32:57.120554;9228128
2007-02-28T09:32:57.120554;5422348
2007-03-31T09:32:57.120554;17747624
2007-04-30T09:32:57.120554;12456484
2007-05-31T09:32:57.120554;11043513
2007-06-30T09:32:57.120554;8860235
2007-07-31T09:32:57.120554;18113900
2007-08-31T09:32:57.120554;8387753
2007-09-30T09:32:57.120554;8915849
2007-10-31T09:32:57.120554;15151157
2007-11-30T09:32:57.120554;19618219
2007-12-31T09:32:57.120554;20088549
2008-01-31T09:32:57.120554;13072047
2008-02-29T09:32:57.120554;14996141
2008-03-31T09:32:57.120554;9674807
2008-04-30T09:32:57.120554;27603244
2008-05-31T09:32:57.120554;12069702
2008-06-30T09:32:57.120554;23414948
2008-07-31T09:32:57.120554;22675623
2008-08-31T09:32:57.120554;13309220
2008-09-30T09:32:57.120554;20702022
2008-10-31T09:32:57.120554;35102946
2008-11-30T09:32:57.120554;15960368
2008-12-31T09:32:57.120554;23592993
2009-01-31T09:32:57.120554;6752505
2009-02-28T09:32:57.120554;14470005
2009-03-31T09:32:57.120554;15305325
2009-04-30T09:32:57.120554;25371516
2009-05-31T09:32:57.120554;9497732
2009-06-30T09:32:57.120554;28460356
1 2006-01-31T09:32:57.120554 4813053
2 2006-02-28T09:32:57.120554 9375274
3 2006-03-31T09:32:57.120554 14264264
4 2006-04-30T09:32:57.120554 4934206
5 2006-05-31T09:32:57.120554 17230472
6 2006-06-30T09:32:57.120554 11530903
7 2006-07-31T09:32:57.120554 10117797
8 2006-08-31T09:32:57.120554 9083848
9 2006-09-30T09:32:57.120554 10018250
10 2006-10-31T09:32:57.120554 7012682
11 2006-11-30T09:32:57.120554 14591705
12 2006-12-31T09:32:57.120554 11647228
13 2007-01-31T09:32:57.120554 9228128
14 2007-02-28T09:32:57.120554 5422348
15 2007-03-31T09:32:57.120554 17747624
16 2007-04-30T09:32:57.120554 12456484
17 2007-05-31T09:32:57.120554 11043513
18 2007-06-30T09:32:57.120554 8860235
19 2007-07-31T09:32:57.120554 18113900
20 2007-08-31T09:32:57.120554 8387753
21 2007-09-30T09:32:57.120554 8915849
22 2007-10-31T09:32:57.120554 15151157
23 2007-11-30T09:32:57.120554 19618219
24 2007-12-31T09:32:57.120554 20088549
25 2008-01-31T09:32:57.120554 13072047
26 2008-02-29T09:32:57.120554 14996141
27 2008-03-31T09:32:57.120554 9674807
28 2008-04-30T09:32:57.120554 27603244
29 2008-05-31T09:32:57.120554 12069702
30 2008-06-30T09:32:57.120554 23414948
31 2008-07-31T09:32:57.120554 22675623
32 2008-08-31T09:32:57.120554 13309220
33 2008-09-30T09:32:57.120554 20702022
34 2008-10-31T09:32:57.120554 35102946
35 2008-11-30T09:32:57.120554 15960368
36 2008-12-31T09:32:57.120554 23592993
37 2009-01-31T09:32:57.120554 6752505
38 2009-02-28T09:32:57.120554 14470005
39 2009-03-31T09:32:57.120554 15305325
40 2009-04-30T09:32:57.120554 25371516
41 2009-05-31T09:32:57.120554 9497732
42 2009-06-30T09:32:57.120554 28460356

View File

@ -1 +0,0 @@
{"key":"Запасы (сырье, материалы)","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;652723
2003-04-29T09:32:57.120554;1193000
2003-07-30T09:32:57.120554;1451850
2003-10-30T09:32:57.120554;2232675
2004-01-01T09:32:57.120554;2391186
2004-04-30T09:32:57.120554;2183174
2004-07-29T09:32:57.120554;3017875
2004-10-27T09:32:57.120554;2365520
2005-01-01T09:32:57.120554;1702493
2005-04-29T09:32:57.120554;1384196
2005-06-30T09:32:57.120554;1918643
2005-09-30T09:32:57.120554;2710221
2005-12-31T09:32:57.120554;3622864
1 2003-01-01T09:32:57.120554 652723
2 2003-04-29T09:32:57.120554 1193000
3 2003-07-30T09:32:57.120554 1451850
4 2003-10-30T09:32:57.120554 2232675
5 2004-01-01T09:32:57.120554 2391186
6 2004-04-30T09:32:57.120554 2183174
7 2004-07-29T09:32:57.120554 3017875
8 2004-10-27T09:32:57.120554 2365520
9 2005-01-01T09:32:57.120554 1702493
10 2005-04-29T09:32:57.120554 1384196
11 2005-06-30T09:32:57.120554 1918643
12 2005-09-30T09:32:57.120554 2710221
13 2005-12-31T09:32:57.120554 3622864

View File

@ -1 +0,0 @@
{"key":"Запасы","size":1,"hasDateTime":true}

View File

@ -1,42 +0,0 @@
2006-01-31T09:32:57.120554;481.3053
2006-02-28T09:32:57.120554;937.5274
2006-03-31T09:32:57.120554;1426.4264
2006-04-30T09:32:57.120554;493.4206
2006-05-31T09:32:57.120554;1723.0472
2006-06-30T09:32:57.120554;1153.0903
2006-07-31T09:32:57.120554;1011.7797
2006-08-31T09:32:57.120554;908.3848
2006-09-30T09:32:57.120554;1001.825
2006-10-31T09:32:57.120554;701.2682
2006-11-30T09:32:57.120554;1459.1705
2006-12-31T09:32:57.120554;1164.7228
2007-01-31T09:32:57.120554;922.8128
2007-02-28T09:32:57.120554;542.2348
2007-03-31T09:32:57.120554;1774.7624
2007-04-30T09:32:57.120554;1245.6484
2007-05-31T09:32:57.120554;1104.3513
2007-06-30T09:32:57.120554;886.0235
2007-07-31T09:32:57.120554;1811.39
2007-08-31T09:32:57.120554;838.7753
2007-09-30T09:32:57.120554;891.5849
2007-10-31T09:32:57.120554;1515.1157
2007-11-30T09:32:57.120554;1961.8219
2007-12-31T09:32:57.120554;2008.8549
2008-01-31T09:32:57.120554;1307.2047
2008-02-29T09:32:57.120554;1499.6141
2008-03-31T09:32:57.120554;967.4807
2008-04-30T09:32:57.120554;2760.3244
2008-05-31T09:32:57.120554;1206.9702
2008-06-30T09:32:57.120554;2341.4948
2008-07-31T09:32:57.120554;2267.5623
2008-08-31T09:32:57.120554;1330.922
2008-09-30T09:32:57.120554;2070.2022
2008-10-31T09:32:57.120554;3510.2946
2008-11-30T09:32:57.120554;1596.0368
2008-12-31T09:32:57.120554;2359.2993
2009-01-31T09:32:57.120554;675.2505
2009-02-28T09:32:57.120554;1447.0005
2009-03-31T09:32:57.120554;1530.5325
2009-04-30T09:32:57.120554;2537.1516
2009-05-31T09:32:57.120554;949.7732
2009-06-30T09:32:57.120554;2846.0356
1 2006-01-31T09:32:57.120554 481.3053
2 2006-02-28T09:32:57.120554 937.5274
3 2006-03-31T09:32:57.120554 1426.4264
4 2006-04-30T09:32:57.120554 493.4206
5 2006-05-31T09:32:57.120554 1723.0472
6 2006-06-30T09:32:57.120554 1153.0903
7 2006-07-31T09:32:57.120554 1011.7797
8 2006-08-31T09:32:57.120554 908.3848
9 2006-09-30T09:32:57.120554 1001.825
10 2006-10-31T09:32:57.120554 701.2682
11 2006-11-30T09:32:57.120554 1459.1705
12 2006-12-31T09:32:57.120554 1164.7228
13 2007-01-31T09:32:57.120554 922.8128
14 2007-02-28T09:32:57.120554 542.2348
15 2007-03-31T09:32:57.120554 1774.7624
16 2007-04-30T09:32:57.120554 1245.6484
17 2007-05-31T09:32:57.120554 1104.3513
18 2007-06-30T09:32:57.120554 886.0235
19 2007-07-31T09:32:57.120554 1811.39
20 2007-08-31T09:32:57.120554 838.7753
21 2007-09-30T09:32:57.120554 891.5849
22 2007-10-31T09:32:57.120554 1515.1157
23 2007-11-30T09:32:57.120554 1961.8219
24 2007-12-31T09:32:57.120554 2008.8549
25 2008-01-31T09:32:57.120554 1307.2047
26 2008-02-29T09:32:57.120554 1499.6141
27 2008-03-31T09:32:57.120554 967.4807
28 2008-04-30T09:32:57.120554 2760.3244
29 2008-05-31T09:32:57.120554 1206.9702
30 2008-06-30T09:32:57.120554 2341.4948
31 2008-07-31T09:32:57.120554 2267.5623
32 2008-08-31T09:32:57.120554 1330.922
33 2008-09-30T09:32:57.120554 2070.2022
34 2008-10-31T09:32:57.120554 3510.2946
35 2008-11-30T09:32:57.120554 1596.0368
36 2008-12-31T09:32:57.120554 2359.2993
37 2009-01-31T09:32:57.120554 675.2505
38 2009-02-28T09:32:57.120554 1447.0005
39 2009-03-31T09:32:57.120554 1530.5325
40 2009-04-30T09:32:57.120554 2537.1516
41 2009-05-31T09:32:57.120554 949.7732
42 2009-06-30T09:32:57.120554 2846.0356

View File

@ -1 +0,0 @@
{"key":"Заработная плата(переч.)","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;83948
2003-04-29T09:32:57.120554;81996
2003-07-30T09:32:57.120554;139990
2003-10-30T09:32:57.120554;452417
2004-01-01T09:32:57.120554;158657
2004-04-30T09:32:57.120554;153687
2004-07-29T09:32:57.120554;464579
2004-10-27T09:32:57.120554;593193
2005-01-01T09:32:57.120554;588223
2005-04-29T09:32:57.120554;617262
2005-06-30T09:32:57.120554;640612
2005-09-30T09:32:57.120554;842585
2005-12-31T09:32:57.120554;864084
1 2003-01-01T09:32:57.120554 83948
2 2003-04-29T09:32:57.120554 81996
3 2003-07-30T09:32:57.120554 139990
4 2003-10-30T09:32:57.120554 452417
5 2004-01-01T09:32:57.120554 158657
6 2004-04-30T09:32:57.120554 153687
7 2004-07-29T09:32:57.120554 464579
8 2004-10-27T09:32:57.120554 593193
9 2005-01-01T09:32:57.120554 588223
10 2005-04-29T09:32:57.120554 617262
11 2005-06-30T09:32:57.120554 640612
12 2005-09-30T09:32:57.120554 842585
13 2005-12-31T09:32:57.120554 864084

View File

@ -1 +0,0 @@
{"key":"Итого. Внеоборотные активы","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;466947
2003-04-29T09:32:57.120554;491918
2003-07-30T09:32:57.120554;661934
2003-10-30T09:32:57.120554;872002
2004-01-01T09:32:57.120554;1289503
2004-04-30T09:32:57.120554;1540108
2004-07-29T09:32:57.120554;1709384
2004-10-27T09:32:57.120554;164448
2005-01-01T09:32:57.120554;2166383
2005-04-29T09:32:57.120554;2277920
2005-06-30T09:32:57.120554;2388455
2005-09-30T09:32:57.120554;2489254
2005-12-31T09:32:57.120554;3200440
1 2003-01-01T09:32:57.120554 466947
2 2003-04-29T09:32:57.120554 491918
3 2003-07-30T09:32:57.120554 661934
4 2003-10-30T09:32:57.120554 872002
5 2004-01-01T09:32:57.120554 1289503
6 2004-04-30T09:32:57.120554 1540108
7 2004-07-29T09:32:57.120554 1709384
8 2004-10-27T09:32:57.120554 164448
9 2005-01-01T09:32:57.120554 2166383
10 2005-04-29T09:32:57.120554 2277920
11 2005-06-30T09:32:57.120554 2388455
12 2005-09-30T09:32:57.120554 2489254
13 2005-12-31T09:32:57.120554 3200440

View File

@ -1 +0,0 @@
{"key":"Итого. Капиталы и резервы","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;441996
2003-04-29T09:32:57.120554;1311681
2003-07-30T09:32:57.120554;1828313
2003-10-30T09:32:57.120554;3211337
2004-01-01T09:32:57.120554;3045490
2004-04-30T09:32:57.120554;2186626
2004-07-29T09:32:57.120554;2725892
2004-10-27T09:32:57.120554;1975377
2005-01-01T09:32:57.120554;924152
2005-04-29T09:32:57.120554;272207
2005-06-30T09:32:57.120554;729570
2005-09-30T09:32:57.120554;2684829
2005-12-31T09:32:57.120554;3818380
1 2003-01-01T09:32:57.120554 441996
2 2003-04-29T09:32:57.120554 1311681
3 2003-07-30T09:32:57.120554 1828313
4 2003-10-30T09:32:57.120554 3211337
5 2004-01-01T09:32:57.120554 3045490
6 2004-04-30T09:32:57.120554 2186626
7 2004-07-29T09:32:57.120554 2725892
8 2004-10-27T09:32:57.120554 1975377
9 2005-01-01T09:32:57.120554 924152
10 2005-04-29T09:32:57.120554 272207
11 2005-06-30T09:32:57.120554 729570
12 2005-09-30T09:32:57.120554 2684829
13 2005-12-31T09:32:57.120554 3818380

View File

@ -1 +0,0 @@
{"key":"Итого. Краткосрочные обязательства","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;824995
2003-04-29T09:32:57.120554;1721609
2003-07-30T09:32:57.120554;2350251
2003-10-30T09:32:57.120554;3630913
2004-01-01T09:32:57.120554;4170336
2004-04-30T09:32:57.120554;3573047
2004-07-29T09:32:57.120554;3970697
2004-10-27T09:32:57.120554;3346632
2005-01-01T09:32:57.120554;2502312
2005-04-29T09:32:57.120554;1932865
2005-06-30T09:32:57.120554;2477413
2005-09-30T09:32:57.120554;4331498
2005-12-31T09:32:57.120554;6154721
1 2003-01-01T09:32:57.120554 824995
2 2003-04-29T09:32:57.120554 1721609
3 2003-07-30T09:32:57.120554 2350251
4 2003-10-30T09:32:57.120554 3630913
5 2004-01-01T09:32:57.120554 4170336
6 2004-04-30T09:32:57.120554 3573047
7 2004-07-29T09:32:57.120554 3970697
8 2004-10-27T09:32:57.120554 3346632
9 2005-01-01T09:32:57.120554 2502312
10 2005-04-29T09:32:57.120554 1932865
11 2005-06-30T09:32:57.120554 2477413
12 2005-09-30T09:32:57.120554 4331498
13 2005-12-31T09:32:57.120554 6154721

View File

@ -1 +0,0 @@
{"key":"Итого. Оборотные активы","size":1,"hasDateTime":true}

View File

@ -1,42 +0,0 @@
2006-01-31T09:32:57.120554;938967
2006-02-28T09:32:57.120554;3057545
2006-03-31T09:32:57.120554;2890457
2006-04-30T09:32:57.120554;437691
2006-05-31T09:32:57.120554;216889
2006-06-30T09:32:57.120554;255382
2006-07-31T09:32:57.120554;13349
2006-08-31T09:32:57.120554;316052
2006-09-30T09:32:57.120554;262875
2006-10-31T09:32:57.120554;170217
2006-11-30T09:32:57.120554;309241
2006-12-31T09:32:57.120554;1068712
2007-01-31T09:32:57.120554;1061865
2007-02-28T09:32:57.120554;60035
2007-03-31T09:32:57.120554;1008273
2007-04-30T09:32:57.120554;846035
2007-05-31T09:32:57.120554;455941
2007-06-30T09:32:57.120554;431517
2007-07-31T09:32:57.120554;453748
2007-08-31T09:32:57.120554;397135
2007-09-30T09:32:57.120554;537218
2007-10-31T09:32:57.120554;537218
2007-11-30T09:32:57.120554;79505
2007-12-31T09:32:57.120554;755704
2008-01-31T09:32:57.120554;2383399
2008-02-29T09:32:57.120554;798226
2008-03-31T09:32:57.120554;1190243
2008-04-30T09:32:57.120554;900150
2008-05-31T09:32:57.120554;910654
2008-06-30T09:32:57.120554;362701
2008-07-31T09:32:57.120554;108049
2008-08-31T09:32:57.120554;399260
2008-09-30T09:32:57.120554;393423
2008-10-31T09:32:57.120554;832125
2008-11-30T09:32:57.120554;588166
2008-12-31T09:32:57.120554;1862681
2009-01-31T09:32:57.120554;116297
2009-02-28T09:32:57.120554;1414551
2009-03-31T09:32:57.120554;874996
2009-04-30T09:32:57.120554;1199351
2009-05-31T09:32:57.120554;1179955
2009-06-30T09:32:57.120554;489565
1 2006-01-31T09:32:57.120554 938967
2 2006-02-28T09:32:57.120554 3057545
3 2006-03-31T09:32:57.120554 2890457
4 2006-04-30T09:32:57.120554 437691
5 2006-05-31T09:32:57.120554 216889
6 2006-06-30T09:32:57.120554 255382
7 2006-07-31T09:32:57.120554 13349
8 2006-08-31T09:32:57.120554 316052
9 2006-09-30T09:32:57.120554 262875
10 2006-10-31T09:32:57.120554 170217
11 2006-11-30T09:32:57.120554 309241
12 2006-12-31T09:32:57.120554 1068712
13 2007-01-31T09:32:57.120554 1061865
14 2007-02-28T09:32:57.120554 60035
15 2007-03-31T09:32:57.120554 1008273
16 2007-04-30T09:32:57.120554 846035
17 2007-05-31T09:32:57.120554 455941
18 2007-06-30T09:32:57.120554 431517
19 2007-07-31T09:32:57.120554 453748
20 2007-08-31T09:32:57.120554 397135
21 2007-09-30T09:32:57.120554 537218
22 2007-10-31T09:32:57.120554 537218
23 2007-11-30T09:32:57.120554 79505
24 2007-12-31T09:32:57.120554 755704
25 2008-01-31T09:32:57.120554 2383399
26 2008-02-29T09:32:57.120554 798226
27 2008-03-31T09:32:57.120554 1190243
28 2008-04-30T09:32:57.120554 900150
29 2008-05-31T09:32:57.120554 910654
30 2008-06-30T09:32:57.120554 362701
31 2008-07-31T09:32:57.120554 108049
32 2008-08-31T09:32:57.120554 399260
33 2008-09-30T09:32:57.120554 393423
34 2008-10-31T09:32:57.120554 832125
35 2008-11-30T09:32:57.120554 588166
36 2008-12-31T09:32:57.120554 1862681
37 2009-01-31T09:32:57.120554 116297
38 2009-02-28T09:32:57.120554 1414551
39 2009-03-31T09:32:57.120554 874996
40 2009-04-30T09:32:57.120554 1199351
41 2009-05-31T09:32:57.120554 1179955
42 2009-06-30T09:32:57.120554 489565

View File

@ -1 +0,0 @@
{"key":"Коммунальные услуги","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0.176320600186427
2003-04-29T09:32:57.120554;0.374796158517201
2003-07-30T09:32:57.120554;0.215672043025456
2003-10-30T09:32:57.120554;0.292132840620589
2004-01-01T09:32:57.120554;0.478912424601624
2004-04-30T09:32:57.120554;0.461737398165027
2004-07-29T09:32:57.120554;0.235694957833986
2004-10-27T09:32:57.120554;0.22330825963854
2005-01-01T09:32:57.120554;0.682611734866126
2005-04-29T09:32:57.120554;1.31264809501593
2005-06-30T09:32:57.120554;0.485793001356964
2005-09-30T09:32:57.120554;0.447526825730801
2005-12-31T09:32:57.120554;0.255268464636836
1 2003-01-01T09:32:57.120554 0.176320600186427
2 2003-04-29T09:32:57.120554 0.374796158517201
3 2003-07-30T09:32:57.120554 0.215672043025456
4 2003-10-30T09:32:57.120554 0.292132840620589
5 2004-01-01T09:32:57.120554 0.478912424601624
6 2004-04-30T09:32:57.120554 0.461737398165027
7 2004-07-29T09:32:57.120554 0.235694957833986
8 2004-10-27T09:32:57.120554 0.22330825963854
9 2005-01-01T09:32:57.120554 0.682611734866126
10 2005-04-29T09:32:57.120554 1.31264809501593
11 2005-06-30T09:32:57.120554 0.485793001356964
12 2005-09-30T09:32:57.120554 0.447526825730801
13 2005-12-31T09:32:57.120554 0.255268464636836

View File

@ -1 +0,0 @@
{"key":"Коэффициент абсолютной ликвидности","size":1,"hasDateTime":true}

View File

@ -1,7 +0,0 @@
2003-04-29T09:32:57.120554;0.00157
2003-10-30T09:32:57.120554;0.00119
2004-04-30T09:32:57.120554;0.000505021970694462
2004-10-27T09:32:57.120554;0.00122503783903256
2005-04-05T09:32:57.120554;0.00108379668432313
2005-09-30T09:32:57.120554;0.00186974773746743
2005-12-31T09:32:57.120554;0.00160839737199463
1 2003-04-29T09:32:57.120554 0.00157
2 2003-10-30T09:32:57.120554 0.00119
3 2004-04-30T09:32:57.120554 0.000505021970694462
4 2004-10-27T09:32:57.120554 0.00122503783903256
5 2005-04-05T09:32:57.120554 0.00108379668432313
6 2005-09-30T09:32:57.120554 0.00186974773746743
7 2005-12-31T09:32:57.120554 0.00160839737199463

View File

@ -1 +0,0 @@
{"key":"Коэффициент оборачиваемости оборотного капитала","size":1,"hasDateTime":true}

View File

@ -1,12 +0,0 @@
2003-04-29T09:32:57.120554;0.00304150149802868
2003-04-30T09:32:57.120554;0.00443606251448412
2003-10-30T09:32:57.120554;0.00411861303392785
2004-03-30T09:32:57.120554;0.00491651280616329
2004-04-30T09:32:57.120554;0.000400127801176112
2004-07-29T09:32:57.120554;0.0013731829196394
2004-10-27T09:32:57.120554;0.002393409555723
2005-03-29T09:32:57.120554;0.0457389569955244
2005-04-05T09:32:57.120554;0.000238166566115041
2005-06-30T09:32:57.120554;0.00142149724309897
2005-09-30T09:32:57.120554;0.00204025070600032
2005-12-31T09:32:57.120554;0.00279873809583112
1 2003-04-29T09:32:57.120554 0.00304150149802868
2 2003-04-30T09:32:57.120554 0.00443606251448412
3 2003-10-30T09:32:57.120554 0.00411861303392785
4 2004-03-30T09:32:57.120554 0.00491651280616329
5 2004-04-30T09:32:57.120554 0.000400127801176112
6 2004-07-29T09:32:57.120554 0.0013731829196394
7 2004-10-27T09:32:57.120554 0.002393409555723
8 2005-03-29T09:32:57.120554 0.0457389569955244
9 2005-04-05T09:32:57.120554 0.000238166566115041
10 2005-06-30T09:32:57.120554 0.00142149724309897
11 2005-09-30T09:32:57.120554 0.00204025070600032
12 2005-12-31T09:32:57.120554 0.00279873809583112

View File

@ -1 +0,0 @@
{"key":"Коэффициент оборачиваемости собственного капитала","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0.586771111175797
2003-04-29T09:32:57.120554;0.343606035205365
2003-07-30T09:32:57.120554;0.359502703447326
2003-10-30T09:32:57.120554;0.187929277660206
2004-01-01T09:32:57.120554;0.472922641735106
2004-04-30T09:32:57.120554;0.635048328717729
2004-07-29T09:32:57.120554;0.412477322619393
2004-10-27T09:32:57.120554;-0.181247674929825
2005-01-01T09:32:57.120554;0.926970037468583
2005-04-29T09:32:57.120554;1.19972749523911
2005-06-30T09:32:57.120554;0.910978749042943
2005-09-30T09:32:57.120554;0.607577389445363
2005-12-31T09:32:57.120554;0.644891997049848
1 2003-01-01T09:32:57.120554 0.586771111175797
2 2003-04-29T09:32:57.120554 0.343606035205365
3 2003-07-30T09:32:57.120554 0.359502703447326
4 2003-10-30T09:32:57.120554 0.187929277660206
5 2004-01-01T09:32:57.120554 0.472922641735106
6 2004-04-30T09:32:57.120554 0.635048328717729
7 2004-07-29T09:32:57.120554 0.412477322619393
8 2004-10-27T09:32:57.120554 -0.181247674929825
9 2005-01-01T09:32:57.120554 0.926970037468583
10 2005-04-29T09:32:57.120554 1.19972749523911
11 2005-06-30T09:32:57.120554 0.910978749042943
12 2005-09-30T09:32:57.120554 0.607577389445363
13 2005-12-31T09:32:57.120554 0.644891997049848

View File

@ -1 +0,0 @@
{"key":"Коэффициент финансовой независимости в части запасов","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0.464244025721368
2003-04-29T09:32:57.120554;0.238104006194206
2003-07-30T09:32:57.120554;0.22208010974147
2003-10-30T09:32:57.120554;0.115559089408091
2004-01-01T09:32:57.120554;0.271164241921994
2004-04-30T09:32:57.120554;0.388022043930572
2004-07-29T09:32:57.120554;0.313497856925371
2004-10-27T09:32:57.120554;-0.128112382837432
2005-01-01T09:32:57.120554;0.630680746445687
2005-04-29T09:32:57.120554;0.859169160805333
2005-06-30T09:32:57.120554;0.705511353980947
2005-09-30T09:32:57.120554;0.380161551500197
2005-12-31T09:32:57.120554;0.379603884562761
1 2003-01-01T09:32:57.120554 0.464244025721368
2 2003-04-29T09:32:57.120554 0.238104006194206
3 2003-07-30T09:32:57.120554 0.22208010974147
4 2003-10-30T09:32:57.120554 0.115559089408091
5 2004-01-01T09:32:57.120554 0.271164241921994
6 2004-04-30T09:32:57.120554 0.388022043930572
7 2004-07-29T09:32:57.120554 0.313497856925371
8 2004-10-27T09:32:57.120554 -0.128112382837432
9 2005-01-01T09:32:57.120554 0.630680746445687
10 2005-04-29T09:32:57.120554 0.859169160805333
11 2005-06-30T09:32:57.120554 0.705511353980947
12 2005-09-30T09:32:57.120554 0.380161551500197
13 2005-12-31T09:32:57.120554 0.379603884562761

View File

@ -1 +0,0 @@
{"key":"Коэффициент финансовой независимости в части оборотных средств","size":1,"hasDateTime":true}

View File

@ -1,13 +0,0 @@
2003-01-01T09:32:57.120554;0
2003-04-29T09:32:57.120554;0
2003-07-30T09:32:57.120554;0
2003-10-30T09:32:57.120554;0
2004-01-01T09:32:57.120554;0
2004-04-30T09:32:57.120554;0
2004-07-29T09:32:57.120554;0
2004-10-27T09:32:57.120554;0
2005-01-01T09:32:57.120554;110000
2005-04-29T09:32:57.120554;110000
2005-06-30T09:32:57.120554;0
2005-09-30T09:32:57.120554;0
2005-12-31T09:32:57.120554;0
1 2003-01-01T09:32:57.120554 0
2 2003-04-29T09:32:57.120554 0
3 2003-07-30T09:32:57.120554 0
4 2003-10-30T09:32:57.120554 0
5 2004-01-01T09:32:57.120554 0
6 2004-04-30T09:32:57.120554 0
7 2004-07-29T09:32:57.120554 0
8 2004-10-27T09:32:57.120554 0
9 2005-01-01T09:32:57.120554 110000
10 2005-04-29T09:32:57.120554 110000
11 2005-06-30T09:32:57.120554 0
12 2005-09-30T09:32:57.120554 0
13 2005-12-31T09:32:57.120554 0

View File

@ -1 +0,0 @@
{"key":"Краткосрочные финансовые вложения","size":1,"hasDateTime":true}

View File

@ -1,40 +0,0 @@
2006-01-31T09:32:57.120554;513394
2006-02-28T09:32:57.120554;775869
2006-03-31T09:32:57.120554;557673
2006-04-30T09:32:57.120554;310216
2006-05-31T09:32:57.120554;509396
2006-06-30T09:32:57.120554;163540
2006-07-31T09:32:57.120554;8170
2006-08-31T09:32:57.120554;285110
2006-09-30T09:32:57.120554;131394
2006-10-31T09:32:57.120554;236766
2006-11-30T09:32:57.120554;263648
2006-12-31T09:32:57.120554;1561474
2007-01-31T09:32:57.120554;230128
2007-02-28T09:32:57.120554;94168
2007-03-31T09:32:57.120554;340314
2007-04-30T09:32:57.120554;1576732
2007-05-31T09:32:57.120554;37285
2007-06-30T09:32:57.120554;612312
2007-07-31T09:32:57.120554;1088104
2007-08-31T09:32:57.120554;168606
2007-09-30T09:32:57.120554;4094786
2007-10-31T09:32:57.120554;554629
2007-11-30T09:32:57.120554;322374
2007-12-31T09:32:57.120554;750808
2008-01-31T09:32:57.120554;100311
2008-02-29T09:32:57.120554;483714
2008-03-31T09:32:57.120554;160332
2008-04-30T09:32:57.120554;302013
2008-05-31T09:32:57.120554;246032
2008-06-30T09:32:57.120554;305652
2008-08-31T09:32:57.120554;55383
2008-09-30T09:32:57.120554;1386974
2008-10-31T09:32:57.120554;458915
2008-11-30T09:32:57.120554;675433
2008-12-31T09:32:57.120554;633291
2009-02-28T09:32:57.120554;139555
2009-03-31T09:32:57.120554;256931
2009-04-30T09:32:57.120554;228263
2009-05-31T09:32:57.120554;309554
2009-06-30T09:32:57.120554;631287
1 2006-01-31T09:32:57.120554 513394
2 2006-02-28T09:32:57.120554 775869
3 2006-03-31T09:32:57.120554 557673
4 2006-04-30T09:32:57.120554 310216
5 2006-05-31T09:32:57.120554 509396
6 2006-06-30T09:32:57.120554 163540
7 2006-07-31T09:32:57.120554 8170
8 2006-08-31T09:32:57.120554 285110
9 2006-09-30T09:32:57.120554 131394
10 2006-10-31T09:32:57.120554 236766
11 2006-11-30T09:32:57.120554 263648
12 2006-12-31T09:32:57.120554 1561474
13 2007-01-31T09:32:57.120554 230128
14 2007-02-28T09:32:57.120554 94168
15 2007-03-31T09:32:57.120554 340314
16 2007-04-30T09:32:57.120554 1576732
17 2007-05-31T09:32:57.120554 37285
18 2007-06-30T09:32:57.120554 612312
19 2007-07-31T09:32:57.120554 1088104
20 2007-08-31T09:32:57.120554 168606
21 2007-09-30T09:32:57.120554 4094786
22 2007-10-31T09:32:57.120554 554629
23 2007-11-30T09:32:57.120554 322374
24 2007-12-31T09:32:57.120554 750808
25 2008-01-31T09:32:57.120554 100311
26 2008-02-29T09:32:57.120554 483714
27 2008-03-31T09:32:57.120554 160332
28 2008-04-30T09:32:57.120554 302013
29 2008-05-31T09:32:57.120554 246032
30 2008-06-30T09:32:57.120554 305652
31 2008-08-31T09:32:57.120554 55383
32 2008-09-30T09:32:57.120554 1386974
33 2008-10-31T09:32:57.120554 458915
34 2008-11-30T09:32:57.120554 675433
35 2008-12-31T09:32:57.120554 633291
36 2009-02-28T09:32:57.120554 139555
37 2009-03-31T09:32:57.120554 256931
38 2009-04-30T09:32:57.120554 228263
39 2009-05-31T09:32:57.120554 309554
40 2009-06-30T09:32:57.120554 631287

View File

@ -1 +0,0 @@
{"key":"Услуги по содержанию имущества","size":1,"hasDateTime":true}

View File

@ -1,42 +0,0 @@
2006-01-31T09:32:57.120554;939000
2006-02-28T09:32:57.120554;3060000
2006-03-31T09:32:57.120554;2890000
2006-04-30T09:32:57.120554;438000
2006-05-31T09:32:57.120554;217000
2006-06-30T09:32:57.120554;255000
2006-07-31T09:32:57.120554;13300
2006-08-31T09:32:57.120554;316000
2006-09-30T09:32:57.120554;263000
2006-10-31T09:32:57.120554;170217
2006-11-30T09:32:57.120554;309241
2006-12-31T09:32:57.120554;1070000
2007-01-31T09:32:57.120554;1061865
2007-02-28T09:32:57.120554;60035
2007-03-31T09:32:57.120554;1010000
2007-04-30T09:32:57.120554;846000
2007-05-31T09:32:57.120554;456000
2007-06-30T09:32:57.120554;432000
2007-07-31T09:32:57.120554;454000
2007-08-31T09:32:57.120554;397000
2007-09-30T09:32:57.120554;537000
2007-10-31T09:32:57.120554;537000
2007-11-30T09:32:57.120554;79500
2007-12-31T09:32:57.120554;756000
2008-01-31T09:32:57.120554;2380000
2008-02-29T09:32:57.120554;798000
2008-03-31T09:32:57.120554;1190000
2008-04-30T09:32:57.120554;900000
2008-05-31T09:32:57.120554;911000
2008-06-30T09:32:57.120554;362701
2008-07-31T09:32:57.120554;108000
2008-08-31T09:32:57.120554;399260
2008-09-30T09:32:57.120554;393423
2008-10-31T09:32:57.120554;832000
2008-11-30T09:32:57.120554;588000
2008-12-31T09:32:57.120554;1860000
2009-01-31T09:32:57.120554;116000
2009-02-28T09:32:57.120554;1410000
2009-03-31T09:32:57.120554;874996
2009-04-30T09:32:57.120554;1200000
2009-05-31T09:32:57.120554;1180000
2009-06-30T09:32:57.120554;
1 2006-01-31T09:32:57.120554 939000
2 2006-02-28T09:32:57.120554 3060000
3 2006-03-31T09:32:57.120554 2890000
4 2006-04-30T09:32:57.120554 438000
5 2006-05-31T09:32:57.120554 217000
6 2006-06-30T09:32:57.120554 255000
7 2006-07-31T09:32:57.120554 13300
8 2006-08-31T09:32:57.120554 316000
9 2006-09-30T09:32:57.120554 263000
10 2006-10-31T09:32:57.120554 170217
11 2006-11-30T09:32:57.120554 309241
12 2006-12-31T09:32:57.120554 1070000
13 2007-01-31T09:32:57.120554 1061865
14 2007-02-28T09:32:57.120554 60035
15 2007-03-31T09:32:57.120554 1010000
16 2007-04-30T09:32:57.120554 846000
17 2007-05-31T09:32:57.120554 456000
18 2007-06-30T09:32:57.120554 432000
19 2007-07-31T09:32:57.120554 454000
20 2007-08-31T09:32:57.120554 397000
21 2007-09-30T09:32:57.120554 537000
22 2007-10-31T09:32:57.120554 537000
23 2007-11-30T09:32:57.120554 79500
24 2007-12-31T09:32:57.120554 756000
25 2008-01-31T09:32:57.120554 2380000
26 2008-02-29T09:32:57.120554 798000
27 2008-03-31T09:32:57.120554 1190000
28 2008-04-30T09:32:57.120554 900000
29 2008-05-31T09:32:57.120554 911000
30 2008-06-30T09:32:57.120554 362701
31 2008-07-31T09:32:57.120554 108000
32 2008-08-31T09:32:57.120554 399260
33 2008-09-30T09:32:57.120554 393423
34 2008-10-31T09:32:57.120554 832000
35 2008-11-30T09:32:57.120554 588000
36 2008-12-31T09:32:57.120554 1860000
37 2009-01-31T09:32:57.120554 116000
38 2009-02-28T09:32:57.120554 1410000
39 2009-03-31T09:32:57.120554 874996
40 2009-04-30T09:32:57.120554 1200000
41 2009-05-31T09:32:57.120554 1180000
42 2009-06-30T09:32:57.120554

View File

@ -1 +0,0 @@
{"key":"статья 223 Коммунальные услуги баланса доходов и расходов организации","size":1,"hasDateTime":true}