new
This commit is contained in:
parent
7b0d33af38
commit
d3c4bcd5c0
111
Evaluation/statsdbeval.py
Normal file
111
Evaluation/statsdbeval.py
Normal file
@ -0,0 +1,111 @@
|
||||
import mysql.connector
|
||||
import datetime
|
||||
import xlwt
|
||||
|
||||
|
||||
|
||||
dbh = None
|
||||
cur = None
|
||||
xls = None
|
||||
sheet = None
|
||||
|
||||
try:
|
||||
dbh = mysql.connector.connect(user='statsuser', password='test123', host='192.168.3.22', database='statsdb')
|
||||
cur = dbh.cursor()
|
||||
|
||||
query = """
|
||||
SELECT d.description, d.address,
|
||||
cd.ts,
|
||||
cd.value, cd.id
|
||||
FROM device_t d,
|
||||
dataitem_t di,
|
||||
devicedataitem_t ddi,
|
||||
collecteddata_t cd
|
||||
WHERE ddi.device = d.id AND
|
||||
ddi.dataitem = di.id AND
|
||||
cd.devicedataitem = ddi.id AND
|
||||
di.description = 'totalPages' AND
|
||||
cd.ts BETWEEN %s AND %s
|
||||
ORDER BY cd.id
|
||||
|
||||
"""
|
||||
|
||||
cur.execute(query, (datetime.datetime(1970, 1, 1), datetime.datetime(2100, 12, 31)))
|
||||
|
||||
printers = {}
|
||||
|
||||
for (printerName, printerAddress, timestamp, totalPages, id) in cur:
|
||||
totalPages = int(totalPages)
|
||||
if not printers.has_key(printerAddress):
|
||||
printers[printerAddress] = {'name': printerName, 'address': printerAddress,
|
||||
'first': {'timestamp': timestamp, 'value': totalPages},
|
||||
'last': {'timestamp': timestamp, 'value': totalPages}}
|
||||
else:
|
||||
printers[printerAddress]['last'] = {'timestamp': timestamp, 'value': totalPages}
|
||||
|
||||
|
||||
secondsPerMonth = datetime.timedelta(30).total_seconds()
|
||||
secondsPerWeek = datetime.timedelta(7).total_seconds()
|
||||
|
||||
xls = xlwt.Workbook()
|
||||
sheet = xls.add_sheet('Sheet 1')
|
||||
rowCnt = 0
|
||||
sheet.row(rowCnt).write(0, 'Name')
|
||||
sheet.row(rowCnt).write(1, 'Address')
|
||||
sheet.row(rowCnt).write(2, 'First Sample Date')
|
||||
sheet.row(rowCnt).write(3, 'First Sample Value')
|
||||
sheet.row(rowCnt).write(4, 'Last Sample Date')
|
||||
sheet.row(rowCnt).write(5, 'Last Sample Value')
|
||||
sheet.row(rowCnt).write(6, 'Diff in SampleBox')
|
||||
sheet.row(rowCnt).write(7, 'MonthFactor')
|
||||
sheet.row(rowCnt).write(8, 'WeekFactor')
|
||||
sheet.row(rowCnt).write(9, 'Month Average/Forecast')
|
||||
sheet.row(rowCnt).write(10, 'Week Average/Forecast')
|
||||
|
||||
sheet.col(2).width = 256 * 20
|
||||
sheet.col(4).width = 256 * 20
|
||||
dateStyle = xlwt.XFStyle()
|
||||
dateStyle.num_format_str = 'DD.MM.YYYY hh:mm:ss'
|
||||
|
||||
for printer in printers.values():
|
||||
rowCnt += 1
|
||||
|
||||
print("Printer: %s, %s" % (printer['name'], printer['address']))
|
||||
sheet.row(rowCnt).write(0, printer['name'])
|
||||
sheet.row(rowCnt).write(1, printer['address'])
|
||||
|
||||
print(" First: %s, %s" % (printer['first']['timestamp'], printer['first']['value']))
|
||||
sheet.row(rowCnt).write(2, printer['first']['timestamp'], dateStyle)
|
||||
sheet.row(rowCnt).write(3, printer['first']['value'])
|
||||
|
||||
print(" Last: %s, %s" % (printer['last']['timestamp'], printer['last']['value']))
|
||||
sheet.row(rowCnt).write(4, printer['last']['timestamp'], dateStyle)
|
||||
sheet.row(rowCnt).write(5, printer['last']['value'])
|
||||
|
||||
deltaTime = printer['last']['timestamp'] - printer['first']['timestamp']
|
||||
deltaValue = printer['last']['value'] - printer['first']['value']
|
||||
print(" Diff: %s, %s" % (deltaTime, deltaValue))
|
||||
sheet.row(rowCnt).write(6, deltaValue)
|
||||
|
||||
factorMonth = secondsPerMonth / deltaTime.total_seconds()
|
||||
sheet.row(rowCnt).write(7, factorMonth)
|
||||
factorWeek = secondsPerWeek / deltaTime.total_seconds()
|
||||
sheet.row(rowCnt).write(8, factorWeek)
|
||||
|
||||
print(" Month average/forecast: %s" % (int(deltaValue * factorMonth)))
|
||||
sheet.row(rowCnt).write(9, int(deltaValue * factorMonth))
|
||||
|
||||
print(" Week average/forecast: %s" % (int(deltaValue * factorWeek)))
|
||||
sheet.row(rowCnt).write(10, int(deltaValue * factorWeek))
|
||||
|
||||
|
||||
except mysql.connector.Error as err:
|
||||
print("Failure when using database: %s" % (err))
|
||||
finally:
|
||||
if xls is not None:
|
||||
xls.save('printerStats.xls')
|
||||
if cur is not None:
|
||||
cur.close()
|
||||
if dbh is not None:
|
||||
dbh.close()
|
||||
|
@ -3,7 +3,8 @@
|
||||
<MonoDevelop.Ide.Workbench ActiveDocument="Snmp2Mysql/Program.cs">
|
||||
<Files>
|
||||
<File FileName="Snmp2Mysql/DatabaseLink.cs" Line="1" Column="1" />
|
||||
<File FileName="Snmp2Mysql/Program.cs" Line="12" Column="6" />
|
||||
<File FileName="Snmp2Mysql/Program.cs" Line="20" Column="60" />
|
||||
<File FileName="Snmp2Mysql/SnmpGetter.cs" Line="1" Column="1" />
|
||||
</Files>
|
||||
</MonoDevelop.Ide.Workbench>
|
||||
<MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||
|
Loading…
x
Reference in New Issue
Block a user