データベースに次の形式の障害データがあります。
faultid | faultcode | startdatetime | enddatetime
デバイスは数秒ごとにポーリングされますが、データベース内のエントリはデバイスの状態が変化したときにのみ更新されるため、数分、数時間、または数日続く障害が発生する可能性があります。
障害時間を分単位でグラフ化したいのですが、たとえば 30 分、1 時間、1 日間隔などです。いくつかの間隔で続く障害は、startdatetime の巨大な特異バーとしてではなく、時間の経過とともにチャートの幅方向に成長します。可能であれば、プラットフォームに依存しない方法でこれを行いたいと考えています。
グラフ レポートは、Java アプリケーションからオンデマンドで実行および表示されます。
同様の問題/解決策をグーグルで調べてみましたが、間違ったことをグーグルで調べているか、この種のことを行う人があまりいないか、より明らかに私が得ていない方法で行っています-私はそれについてすべて間違っていますか?
試したこと:
私はレポートに BIRT を使用しています。BIRT スクリプトに深く入り込まない限り、BIRT だけでは必要なチャートに必要な形式にデータを変換することはできないようです。ただし、これまでのドキュメントとリソースは十分ではありませんでした。これに近づくことさえできるようにするために-何かアイデアはありますか?
最初に BIRT の接続 afterOpen スクリプトを使用してカスタム SQL 操作を実行することを検討しましたが、使用可能なドキュメントとリソースが不足しているため、ここで実行することは不可能に思えました。
ある例では、SQL Server ストアド プロシージャを使用して入力データを生成し、enddatetime - startdatetime > interval の間隔データを作成しました。このプロシージャは、レポートが呼び出されるたびに呼び出されました。これはうまくいきましたが、使用するさまざまなデータベース/レポートごとにストアド プロシージャを維持する必要があり、より良い方法があるはずだと感じています。
データのアーカイブには Pentaho Kettle を使用しています。それを使用してデータの入力を実行しようとしましたが、Kettle にそのようなデータを生成させることは不可能に思えました。何かアイデアはありますか?
Java アプリケーションから入力データを生成することを検討しましたが、それはレポートを実行するためにアプリケーションがレポートについて多くのことを知る必要があることを意味します。UI 開発者とレポート設計者が完全に分離されるように、より良い抽象化が必要です。 .
ありがとう。