Files
dev/script/statistics.py
2019-04-02 11:06:51 +02:00

88 lines
3.3 KiB
Python

import java.sql.DriverManager as DriverManager
import java.sql.ResultSet as ResultSet
import java.util.Properties as Properties
Class.forName("org.relique.jdbc.csv.CsvDriver");
db = os.path.abspath(get_context().setup.expandPath("{home}/statistics"))
props = Properties()
props.put("fileExtension", ".csv")
props.put("separator", ";")
props.put("timestampFormat", "dd/MM/yy HH:mm:ss.SSS")
#timestampFormat, timeFormat, dateFormat
props.put("indexedFiles", "true");
props.put("fileTailPattern", "(\\d+)_(\\d+)"); #props.put("fileTailPattern", "-(\\d+)_(\\d+)");
props.put("fileTailParts", "Year,Month");
#Command,Args,Source,Start,End,Background,Result,Return
props.put("columnTypes", "String,String,String,Timestamp,Timestamp,Boolean,String,String");
conn = DriverManager.getConnection("jdbc:relique:csv:" + db, props);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
#results = stmt.executeQuery("SELECT Command,Result FROM 2019_03");
#results = stmt.executeQuery("SELECT Command,Result,Year,Month FROM Test");
"""
results = stmt.executeQuery("SELECT Command,Result,Year,Month, Start FROM .");
#Command,Args,Source,Start,End,Background,Result,Return
if results.last():
print("Command= " + results.getString("Command") + " Result= " + results.getString("Result"))
if (results.first()):
print("Command= " + results.getString("Command") + " Result= " + results.getString("Result"))
results = stmt.executeQuery("SELECT Command,Result,Start FROM . WHERE Result = 'success'")
while results.next():
print("Command= " + results.getString("Command") + " Result= " + results.getString("Result"))
"""
def _get_count(sql):
ret = 0
results = stmt.executeQuery("SELECT COUNT(*) AS count FROM . WHERE " + sql)
if results.first():
ret = results.getInt("count")
return ret
def get_count(command= "%%", start = None, end = None, result= "%%"):
sql = "Command LIKE '"+ command +"' AND Result LIKE '"+ result +"'"
if start:
if len(start)==8:
start = start + " 00:00:00.000"
sql = sql + " AND Start>='" + start + "'"
if end:
if len(end)==8:
end = end + " 00:00:00.000"
sql = sql + " AND (\"End\"<'" + end + "')"
return _get_count(sql)
def print_stats(command = "%", start = None, end = None):
print "Statistics for: " , command , " from ", start , " to ", end
s = get_count(command, start, end, "success")
a = get_count(command, start, end, "abort")
e = get_count(command, start, end, "error")
t=s+a+e #get_count(command, start, end, "%")
if t==0:
print "No records"
else:
print "Success: ", ("%1.2f%% of %d" % ((float(s)/t) * 100, t))
print "Error: ", ("%1.2f%% of %d" % ((float(e)/t) * 100, t))
print "Abort: ", ("%1.2f%% of %d" % ((float(a)/t) * 100, t))
cmd = "%test1.py"
start= "06/02/19" #"06/02/19 13:27:56.124"
end= "07/04/19" #"29/04/19 13:27:56.124"
print_stats ("%test1.py", start, end)
results = stmt.executeQuery("SELECT Command,Start FROM .");
if (results.first()):
print("Command= " + results.getString("Command") + " Start= " + str(results.getTimestamp("Start")))
conn.close()