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()