Hi Leute,
im Rahmen meiner Bachelor Thesis arbeite ich gerade ein wenig mit iReport. Ich möchte einen Report über die Verfügbarkeit mehrerer Router machen.
Prinzipiell funktioniert das ganz gut. Jedoch habe ich das Problem, dass wenn keine Daten für einen Host verfügbar sind (die Verfügbarkeit also 100%, weil keine Ausfälle) gibt mir iReport als Ergbenis null aus.
Anstatt null würde ich gerne 100 bekommen.
Als Datenbank nutze ich die Merlin Mysql DB von Ninja und da die Tabelle report_data.
Über ein unschönes Konstrukt mit Subselects hole ich mir da die downtimes raus:
|
MySQL queries
|
1
|
select from_unixtime(timestamp),(select timestamp from report_data where state=0 and hard=1 and event_type=801 and timestamp>T1.timestamp and host_name=$P{host_name} order by timestamp asc limit 1) - (T1.timestamp) as 'downtime in seconds', from_unixtime(T1.timestamp,'%m') as month, from_unixtime(T1.timestamp,'%Y') as year from report_data as T1 where T1.event_type=801 and T1.state=1 and T1.hard=1 and T1.host_name=$P{host_name} and from_unixtime(timestamp) between '2011-04-01' and '2011-04-30'
|
Als Ergebnis bekomme ich dann (sofern Daten in dem Zeitraum verfügbar sind), die einzelnen downtimes des Monats.
Die summiere ich dann und gebe am Ende die Verfügbarkeit aus.
Wenn es keine Daten gibt, ist die Summe der downtimes null und die verfügbarkeit ebenfalls null.
Ich habe bereits versucht über die user defined expression ( $V{downtime in s}==null ? 0 : $V{downtime in s} ) der Variable $V{Gesamtdowntime} 0 fest vorzugeben. Aber das scheint iReport einfach zu übergehen und gibt mir weiterhin null anstatt 0 aus.
Kann mir da irgendwer helfen?