EspressChartでは、単一のグラフ表示に限らず、ドリルダウンで1つのデータソースに基づいてフィルタリングして別のグラフを表示させることが可能です。
ドリルダウン表示を利用するには、あらかじめパラメータ化されたクエリ機能を使用する必要があるため、ソースデータがSQL ServerなどのJDBC・ODBCをサポートするデータベースやパラメータ化されたクラスファイルである必要があります。
本ブログでは、チャートデザイナで作成する場合とチャートAPIで作成する場合の作成例を記載いたします。
チャートデザイナで作成する場合
- ドリルダウンチャートのRootノードにあたるグラフを作成します。


- 上部タブのDrill-Down>Parameter Drill Downと進み、子ノードにあたるグラフを作成します。
あらかじめパラメータ化設定をしたクエリを使用します。以下の画像では、Manager{A, B}をパラメータ化しています。
- パラメータ化設定されたクエリを選択すると、マッピングを促すダイアログが表示されるため、パラメータとして指定したフィールドを指定します。

- 指定したフィールドでフィルタリングができていれば成功です。

- ウィザードに従って設定していくと子ノードとなるグラフの名前を指定するポップアップが表示されるので名前を指定すると、フィルタリングされたデータからグラフの作成が可能です。


- 上部タブのDrill-Down>Parameter Drill Downと進み、ROOTを選択してSWITCH TOをクリックするとRootノードのグラフに戻れます。
以降はグラフをクリックすることでフィルタリングした子ノードのグラフに遷移できるようになります。

チャートAPIで作成する場合
チャートAPIで作成する場合は、以下のライブラリをJava実行環境に用意する必要がございます。
各ライブラリは<EsprassChartインストールディレクトリ>/libにあります。
- EspressAPI.jar
- qblicense.jar
- jdbc_mssql.jar
- jsqlparser.jar
API上で新規にDBの読み込みチャート作成をする場合は、Rootノードとして表示させるグラフに加えて、ドリルダウンした際に表示させる子ノードグラフも併せて生成する必要があります。
データソースとしてパラメータ化されたクエリを指定するSimpleQueryFileInfo()オブジェクトとパラメータ情報を指定するSimpleQueryInParam()オブジェクトを使い、QbChart.createDrillDownChart()メソッドでグラフを作成することで、グラフをクリック時にドリルダウンして子ノードグラフを表示させることが可能です。
【サンプルコード】
public static void main(java.lang.String[] args) {
try {
DrillDownChart doChart = new DrillDownChart();
Frame frame = new Frame();
frame.setLayout(new BorderLayout());
frame.add("Center", doChart.doDrillDownChart(null));
frame.setSize(1100, 700);
frame.setVisible(true);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void init() {
setLayout(new BorderLayout());
add("Center", doDrillDownChart(this));
}
Component doDrillDownChart(Applet applet) {
QbChart.setEspressManagerUsed(false);
DBInfo rootInfo = new DBInfo(
"jdbc:sqlserver://192.168.33.195\\SQLEXPRESS;databaseName=testDB;encrypt=true;trustServerCertificate=true",
"com.microsoft.sqlserver.jdbc.SQLServerDriver", "testuser", "climb",
"SELECT Test.Date, Test.Manager, Test.Number FROM Test");
Applet parent = null;
int dimension = QbChart.VIEW2D;
int chartType = QbChart.STACKCOL;
ColInfo rootColInfo = new ColInfo(-1, 1, 0, 2);
QbChart rootChart = new QbChart(parent, dimension, chartType, rootInfo, false, rootColInfo, null);
SimpleQueryInParam inParam = new SimpleQueryInParam("Manager", "Please select", true, "Test", "Manager",
Types.VARCHAR, "A", null);
SimpleQueryInParam[] paramSet = { inParam };
SimpleQueryFileInfo levelChartInfo = new SimpleQueryFileInfo(
"jdbc:sqlserver://192.168.33.195\\SQLEXPRESS;databaseName=testDB;encrypt=true;trustServerCertificate=true",
"com.microsoft.sqlserver.jdbc.SQLServerDriver", "testuser", "climb",
"SELECT Test.Date, Test.Manager, Test.Number FROM Test where Test.Manager=:Manager");
levelChartInfo.setInParam(paramSet);
ColInfo levelOneChartColInfo = new ColInfo(-1, 0, -1, 2);
try {
rootChart.createDrillDownChart("TestDrillDownChart", QbChart.VIEW2D, QbChart.COL, levelChartInfo, false,
null, levelOneChartColInfo, null, new int[] { 1 });
rootChart.updateDrillDownCharts();
} catch (Exception ex) {
ex.printStackTrace();
}
return rootChart;
}

RSSフィードを取得する