![xamPivotGrid CalculatedMeasures 01.png](images/xamPivotGrid_CalculatedMeasures_01.png)
このトピックは、コード例を使用して xamPivotGrid™ メンバーによる計算方法を説明します。
以下の表に、このトピックを理解するための前提条件として求められるトピックをリストします。
このトピックには次のセクションがあります。
計算メジャー機能は、定義されたメジャーの結果を表す、行または列に追加できるメンバーを作成する方法を提供します。計算されるメンバーで表されるデータは、行または列の他の項目のデータと相互に結合され、計算結果を表示します。
計算メジャーでは、セルに表示される値に使用する独自の計算を作成することもできます。計算メジャーは、Measures コレクションに追加されます。
xamPivotGrid では他のデータ ソースがサポートされますが、計算メジャー機能では XMLA データ ソースのみサポートされます。
この手順では、計算のためのメジャー、また計算メジャーからの結果を表示するメンバーを別の列で作成する必要があります。
計算メジャーは 2 段階で行われます。最初の手順は、計算式でメジャーを作成することです。次の手順は、計算メジャーと式に関連付けられたメンバーを作成することです。
デフォルトでは、計算メジャーはすべて Measures ディメンションにアタッチされます。Measures ディメンションは、 CalculatedMeasureViewModel のコンストラクターの第 4 および第 5 パラメーターを使用して変更できます。
xamPivotGrid にバインドされた XMLA データ ソース。
次の例では、 InternetSalesAmount 列のメジャーを使用してその値を 2 倍にし、 計算式として使用された 2005 ~ 2008 年に対して結果を別の列に表示しています。_ 計算メジャーを表すメンバーの名前は _Doubled Sales Amount となっています。
以下は最終結果のプレビューです。
XMLA データ ソースにバインドされた xamPivotGrid 。
以下はプロセスの概念的概要です。
1. 計算メジャーの作成
2. 計算されるメンバーの作成
Measures 階層内で計算式を定義する計算されるメジャーを作成します。ここに示す例では、メジャー階層内のインターネット売上高
が、インターネットの売上高
を 2 倍にする (2 を掛ける) 式の一部になっています。
C# の場合:
ICalculatedItemViewModel calcMeasureViewModel =
new CalculatedMeasureViewModel(
"Doubled Amount",
"Doubled Sales Amount",
"[Measures].[Internet Sales Amount] * 2");
this.pivotGrid.DataSource.Measures.Add(calcMeasureViewModel);
Visual Basic の場合:
Dim calcMeasureViewModel As ICalculatedItemViewModel = New CalculatedMeasureViewModel("Doubled Amount", "Doubled Sales Amount", "[Measures].[Internet Sales Amount] * 2")
Me.pivotGrid.DataSource.Measures.Add(calcMeasureViewModel)
アタッチされる階層を含む計算メンバーを作成します。
C# の場合:
IHierarchy dateCalendar = this.pivotGrid.DataSource.Cube.Dimensions["[Date]"].Hierarchies["Calendar"];
ICalculatedItemViewModel dateCalendarCalcItem = new CalculatedMemberViewModel(
dateCalendar,
"2005-2008",
"Period 2005-2008",
"[Date].[Calendar].[Calendar Year].[CY 2008] - [Date].[Calendar].[Calendar Year].[CY 2005]",
false);
this.pivotGrid.DataSource.Rows.Add(dateCalendarCalcItem);
Visual Basic の場合:
Dim dateCalendar As IHierarchy = Me.pivotGrid.DataSource.Cube.Dimensions("[Date]").Hierarchies("Calendar")
Dim dateCalendarCalcItem As ICalculatedItemViewModel = New CalculatedMemberViewModel(dateCalendar, "2005-2008", "Period 2005-2008", "[Date].[Calendar].[Calendar Year].[CY 2008] - [Date].[Calendar].[Calendar Year].[CY 2005]", True)
Me.pivotGrid.DataSource.Rows.Add(dateCalendarCalcItem)
XAML の場合:
<igOlap:XmlaDataSource
x:Key="DataSource"
ServerUri="http://sampledata.infragistics.com/olap/msmdpump.dll"
Database="Adventure Works DW Standard Edition"
Cube="Adventure Works"
Columns="[Geography].[City]"
Rows="[Product].[Product Categories]"
Measures="Internet Sales Amount" />
以下のトピックでは、このトピックに関連する情報を提供しています。