diff --git a/Evaluation/statsdbeval.py b/Evaluation/statsdbeval.py index fc2ade9..a9cda99 100644 --- a/Evaluation/statsdbeval.py +++ b/Evaluation/statsdbeval.py @@ -4,18 +4,24 @@ import xlwt class MySheet: + dateStyle = xlwt.XFStyle() + dateStyle.num_format_str = 'DD.MM.YYYY hh:mm:ss' + numStyle = xlwt.XFStyle() + numStyle.num_format_str = '#,##0' + def __init__(self, sheet): self.sheet = sheet self.rowCnt = 0 self.colCnt = 0 self.widthFactor = 268 - self.dateStyle = xlwt.XFStyle() - self.dateStyle.num_format_str = 'DD.MM.YYYY hh:mm:ss' + def write(self, txt, style=None): if isinstance(txt, datetime.datetime): - self.sheet.row(self.rowCnt).write(self.colCnt, txt, self.dateStyle) + self.sheet.row(self.rowCnt).write(self.colCnt, txt, MySheet.dateStyle) + elif style is not None: + self.sheet.row(self.rowCnt).write(self.colCnt, txt, style) else: self.sheet.row(self.rowCnt).write(self.colCnt, txt) l = len(unicode(txt)) * self.widthFactor @@ -66,6 +72,7 @@ SELECT d.description, d.address, cur.execute(query, (datetime.datetime(1970, 1, 1), datetime.datetime(2100, 12, 31))) devices = {} + sheets = {} for (deviceName, deviceAddress, dataItem, timestamp, value, id) in cur: value = int(value) @@ -77,46 +84,51 @@ SELECT d.description, d.address, 'last': {'timestamp': timestamp, 'value': value}} else: devices[key]['last'] = {'timestamp': timestamp, 'value': value} - + if not sheets.has_key(dataItem): + sheets[dataItem] = dataItem secondsPerMonth = datetime.timedelta(30).total_seconds() secondsPerWeek = datetime.timedelta(7).total_seconds() xls = xlwt.Workbook() - mySheet = MySheet(xls.add_sheet('Sheet 1')) - mySheet.writeFirstFirst('Name') - mySheet.writeSameNext('Address') - mySheet.writeSameNext('DataItem') - mySheet.writeSameNext('First Sample Date') - mySheet.writeSameNext('First Sample Value') - mySheet.writeSameNext('Last Sample Date') - mySheet.writeSameNext('Last Sample Value') - mySheet.writeSameNext('Diff in SampleBox') - mySheet.writeSameNext('MonthFactor') - mySheet.writeSameNext('WeekFactor') - mySheet.writeSameNext('Month Average/Forecast') - mySheet.writeSameNext('Week Average/Forecast') + + for sheetName in sheets.keys(): + mySheet = MySheet(xls.add_sheet(sheetName)) + sheets[sheetName] = mySheet + mySheet.writeFirstFirst('Name') + mySheet.writeSameNext('Address') + # mySheet.writeSameNext('DataItem') + mySheet.writeSameNext('First Sample Date') + mySheet.writeSameNext('First Sample Value') + mySheet.writeSameNext('Last Sample Date') + mySheet.writeSameNext('Last Sample Value') + mySheet.writeSameNext('Diff in SampleBox') + mySheet.writeSameNext('MonthFactor') + mySheet.writeSameNext('WeekFactor') + mySheet.writeSameNext('Month Average/Forecast') + mySheet.writeSameNext('Week Average/Forecast') for device in devices.values(): + mySheet = sheets[device['dataItem']] print("Device: %s, %s, %s" % (device['name'], device['address'], device['dataItem'])) mySheet.writeNextFirst(device['name']) mySheet.writeSameNext(device['address']) - mySheet.writeSameNext(device['dataItem']) + # mySheet.writeSameNext(device['dataItem']) print(" First: %s, %s" % (device['first']['timestamp'], device['first']['value'])) mySheet.writeSameNext(device['first']['timestamp']) - mySheet.writeSameNext(device['first']['value']) + mySheet.writeSameNext(device['first']['value'], style=MySheet.numStyle) print(" Last: %s, %s" % (device['last']['timestamp'], device['last']['value'])) mySheet.writeSameNext(device['last']['timestamp']) - mySheet.writeSameNext(device['last']['value']) + mySheet.writeSameNext(device['last']['value'], style=MySheet.numStyle) deltaTime = device['last']['timestamp'] - device['first']['timestamp'] deltaValue = device['last']['value'] - device['first']['value'] print(" Diff: %s, %s" % (deltaTime, deltaValue)) - mySheet.writeSameNext(deltaValue) + mySheet.writeSameNext(deltaValue, style=MySheet.numStyle) factorMonth = secondsPerMonth / deltaTime.total_seconds() mySheet.writeSameNext(factorMonth) @@ -124,14 +136,16 @@ SELECT d.description, d.address, mySheet.writeSameNext(factorWeek) print(" Month average/forecast: %s" % (int(deltaValue * factorMonth))) - mySheet.writeSameNext(int(deltaValue * factorMonth)) + mySheet.writeSameNext(int(deltaValue * factorMonth), style=MySheet.numStyle) print(" Week average/forecast: %s" % (int(deltaValue * factorWeek))) - mySheet.writeSameNext(int(deltaValue * factorWeek)) + mySheet.writeSameNext(int(deltaValue * factorWeek), style=MySheet.numStyle) except mysql.connector.Error as err: print("Failure when using database: %s" % (err)) +except Exception as err: + print("Failure: %s" % (err)) finally: if xls is not None: xls.save('deviceStats.xls')