ActivePivot サンドボックス アプリケーションの TimeBucket ディメンションは、財務期間に基づくカスタム バケットを定義します。ActivePivot では、標準的な年 > 月 > 日階層を作成する方が実際には簡単でシームレスです。スキーマの説明では、3 つのフィールドを宣言する必要があります (1 つは年、1 つは月、もう 1 つは日)。
<field name="Year" indexation="dictionary" />
<field name="Month" indexation="dictionary" />
<field name="Day" indexation="dictionary" />
次に、それらのフィールドを参照するディメンションを宣言する必要があります。
<dimension name="Time">
<level name="Year" />
<level name="Month" />
<level name="Day" />
</dimension>
次に、ActivePivot は、ロードされたレコードをイントロスペクトすることにより、時間階層を段階的に構築します。
入力レコード (オブジェクト) に Year 属性、Month 属性、および Day 属性が既に含まれている場合、これは自動的に機能します (たとえば、入力レコードが getYear()、getMonth()、および getDay() メソッドを持つ POJO である場合)。そうではなく、たとえば入力レコードに日付属性しかない場合は、ActivePivot に入力する前にレコードを変換するか、ActivePivot に電卓を挿入することができます ( com.quartetfs.biz.pivot.classification.ICalculator ) 。これは、日付から 3 つのフィールドをオンザフライで計算します。電卓の例として、ActivePivot Sandbox アプリケーションを見てください。
これらのフィールドの抽出は、通常、標準の Java コードで行われます。
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println("Date: " + date);
System.out.println("Year: " + calendar.get(Calendar.YEAR));
System.out.println("Month: " + calendar.get(Calendar.MONTH) + 1);
System.out.println("Day: " + calendar.get(Calendar.DAY_OF_MONTH));
ディメンションのレベルでのメンバーの順序付けについて、ActivePivot はデフォルトで Java オブジェクト (java.lang.Comparable インターフェイスを実装するオブジェクト) の自然な順序付けを使用するため、日付と整数は最小から最大にソートされます。ターゲットレベルで「ReverseOrder」コンパレーターを宣言することで、これを簡単に逆にすることができます。
<dimension name="Time">
<level name="Year">
<comparator pluginKey="ReverseOrder" />
</level>
<level name="Month">
<comparator pluginKey="ReverseOrder" />
</level>
<level name="Day">
<comparator pluginKey="ReverseOrder" />
</level>
</dimension>