-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path08-deviation-events.main.kts
More file actions
66 lines (60 loc) · 2.35 KB
/
08-deviation-events.main.kts
File metadata and controls
66 lines (60 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@file:DependsOn("libs/client-0.2.1.jar")
@file:Import("scripting-engine.main.kts")
import org.tsdl.client.api.builder.EventFunctionSpecification.not
import org.tsdl.client.api.builder.TsdlQueryBuilder.`as`
import org.tsdl.client.impl.builder.DeviationFilterSpecificationImpl.aroundRelative
import org.tsdl.client.impl.builder.EchoSpecificationImpl.echo
import org.tsdl.client.impl.builder.EventConnectiveSpecificationImpl.and
import org.tsdl.client.impl.builder.EventSpecificationImpl.event
import org.tsdl.client.impl.builder.TemporalFilterSpecificationImpl.after
import org.tsdl.client.impl.builder.TemporalFilterSpecificationImpl.before
import org.tsdl.client.impl.builder.ValueSampleSpecificationImpl.average
import org.tsdl.client.impl.builder.YieldSpecificationImpl.longestPeriod
import org.tsdl.infrastructure.model.TsdlPeriod
import java.io.File
import java.time.temporal.ChronoUnit
val queryEndpoint = "http://localhost:8080/query"
val storageName = "csv"
val serviceConfiguration = mapOf(
"targetFile" to File("./evaluation-logs/08-deviation-events.log").canonicalPath
)
val lookupConfiguration = mapOf(
"filePath" to File(args[0]).canonicalPath,
"skipHeaders" to 1,
"fieldSeparator" to ','
)
val transformationConfiguration = mapOf(
"valueColumn" to 1,
"timeColumn" to 0,
"timeFormat" to "yyyy-MM-dd'T'HH:mm:ssXXX"
)
invokeAnalysisSession { engine, client ->
val query = engine.tsdl {
it
.valueSamples(average("localAvg", "2018-06-04T10:00:00Z", "2019-01-22T10:00:00Z", echo("4")))
.filter(and(not(before("2018-06-04T10:00:00Z")), not(after("2019-01-22T10:00:00Z"))))
.events(event(and(aroundRelative("localAvg", 2.5)), `as`("aroundEvent")))
.yield(longestPeriod())
}
println("UC8: Deviation Events\n")
println(query)
val (period, _) = engine.query<TsdlPeriod>(
client,
queryEndpoint,
storageName,
serviceConfiguration,
lookupConfiguration,
transformationConfiguration,
query
)
println(
"\n${period.index()}: ${period.start()}--${period.end()} (${
ChronoUnit.DAYS.between(
period.start(),
period.end()
)
} days)"
)
println("\nlog messages:\n ${engine.joinLogMessagesToString(period.logs())}")
println("-------------------------------")
}