このトピックでは、フラット データを多次元に表示するために igOlapFlatDataSource
™ と使用するデータのメタデータを定義する方法を紹介します。
このトピックを理解するために、以下のトピックを参照することをお勧めします。
igOlapFlatDataSource の概要: このトピックは、igOlapFlatDataSource
コンポーネントおよびその機能の概要を説明します。
igOlapFlatDataSource の追加: このトピックのグループは、igOlapFlatDataSource
コンポーネントを HTML ページおよび ASP.NET MVC ビュー の追加する方法について説明します。
このトピックは、以下のセクションで構成されます。
igOlapFlatDataSource
コンポーネントは、データ ソース コンポーネント (igDataSource™) から提供されるフラットまたは階層データから多次元 (OLAP) データ キューブを作成します。キューブを作成するために、1 つ以上のディメンションのメタデータを定義する必要があります。各ディメンションの識別子 (名前) および階層を 1 つ以上定義する必要があります。各階層は、名前およびレベルを 1 つ以上設定する必要があります。また、メジャーのメタデータも定義する必要があります。各メジャーは、名前およびセル値を計算するために使用されるアグリゲーターを設定する必要があります。このメタデータ プロパティに追加のオプションなプロパティがあります。igOlapFlatDataSource
が初期化した場合およびランタイムの場合に、このメタデータ定義を使用してキューブおよびすべての子項目 (ディメンション、階層、メジャーなど) を作成します。
igOlapFlatDataSource
のコンテキストで、メタデータは、入力のフラット データが多次元 (OLAP) 形式に表示する方法を決定するユーザー定義のルールのセットです。このルールは、メタデータ項目 (キューブ、ディメンション、階層、レベル、メンバー、およびメジャー) が生成される方法を指定し、入力データ オブジェクトの使用するプロパティを指定するメタデータ定義によって実装されます。メタデータ定義は、$.ig.MetadataTreeItem オブジェクトが生成されたときに使用されるメタデータ項目オブジェクトを指定すると設定されています。$.ig.MetadataTreeItem オブジェクトは、ツリー構造に配置され、igPivotDataSelector
™ コンポーネントにメタデータ ツリーを表示するために必要です。メタデータの構造は、多次元 (OLAP) データ ソースの metadataTree() プロパティによって取得できます。
すべてのメタデータ項目のために、名前 (コードで識別子として使用されること) およびキャプション (オプションで、データ ソースにアタッチされる場合に igPivotDataSelector
のメタデータ ツリーに表示されること) を指定します。名前およびキャプションに追加して、以下のように定義する必要がある指定の構成項目があります。
(この関数は、特定のレベルのメンバーが生成されるときに、入力データの各データ項目に呼び出されます。データ項目である 1 つのパラメーターと呼び出されます。データ項目に基づいて、データ項目に対応するメンバーのキャプションとして使用する文字列を返す必要があります。)
(アグリゲーターは結果セルの値を計算するときに呼び出された関数です。定義する関数は 2 つのパラメーターを受けます: (1) セルの値の評価のために使用される項目の配列、および (2) 列および行インデックスなどのセルについての情報を含む CellMetadata
オブジェクト。この関数では、提供された項目に必要な計算を実行し、使用される値を返します。たとえば、データ オブジェクトの数値プロパティに合計アグリゲーター関数を定義するには、提供されたオブジェクトのプロパティの値の合計を返します。
階層およびメジャーの場合、オプションに表示フォルダー設定を構成できます。表示フォルダー設定は、階層またはメジャーがメタデータ ツリーに配置される位置を指定します。
以下はメタデータを指定して構成する一般的な手順です。
メタデータ キューブの構成
ディメンションの構成
メジャーの構成
階層の構成
レベルの構成
以下の表は、igOlapFlatDataSource
コンポーネントのメタデータの構成可能な要素を説明し、構成するプロパティにマップします。
構成可能な項目 | 詳細 | プロパティ |
---|---|---|
メタデータ キューブ | キューブの名前とキャプションを定義します。メジャーのディメンションおよびすべての他のディメンションの定義で使用されます。 |
|
メジャーのディメンション | メジャーのディメンションの名前とキャプションを定義します。メジャーの指定に使用されます。 |
|
メジャー | メジャーの名前、キャプション、および集計関数を定義します。 |
|
ディメンション | ディメンションの名前、キャプション、および階層を定義します。 |
|
階層 | メジャーの階層の名前、キャプション、およびレベルを定義します。 |
|
レベル | 階層のレベルの名前、キャプション、およびメンバー プロバイダー関数を定義します。 |
|
メタデータ キューブは、メジャー ディメンションおよびすべての残りのディメンションを含むメタデータ ツリーのルートです。メタデータ キューブは、各キューブの名前とキャプションを指定します。メジャーのディメンションおよびすべてのメジャーの定義で使用されます。
以下の表では、構成をプロパティ設定にマップします。
目的: | 使用するプロパティ: | 型: | 設定の選択肢: | 必須ですか? |
---|---|---|---|---|
キューブの名前を設定する | name | string | 名前を含む文字列。 | はい |
(ピボット データ セレクターに表示される) キューブのキャプションを設定する | caption | string | キャプションを含む文字列。 | いいえ |
メジャー ディメンションのメタデータを構成する | measuresDimension | object | メジャー ディメンションのメタデータを含む measuresDimensionMetadata オブジェクト。 |
はい |
ディメンションのメタデータを構成する | dimensions | array | 各ディメンションのメタデータを含む dimensionsMetadata オブジェクトの配列。 |
はい |
以下の画像は、以下のキューブ設定の結果として、1 つのメジャーのメタデータを含む MeasuresDimensionMetadata
オブジェクトおよび 2 つのレベルを持つ階層のメタデータを含む DimensionsMetadata
オブジェクトを表示します。
name
: セールスmeasuresDimension
: JavaScript の場合:
measuresDimension:{
measures [ {
name: "Units Sold",
aggregator: function (items, cellMetadata) {
var sum = 0;
$.each(items, function (index, item) {
sum += item.UnitsSold;
});
return sum;
}
}],
}
dimensions
JavaScript の場合:
dimensions
dimensions: [ {
name: "Seller",
hierarchies: [{
name: "Seller",
levels: [ {
name: "All Sellers",
memberProvider: function (item) { return "All Sellers"; } }, {
name: "Seller",
memberProvider: function (item) {
return item.SellerName;
}
}]
}]
} ]
以下のコードはこの例を実装します。
JavaScript の場合:
cube: {
name: "Sales",
measuresDimension: {
measures: [
{
name: "Units Sold",
aggregator: function (items, cellMetadata) {
var sum = 0;
$.each(items, function (index, item) {
sum += item.UnitsSold;
});
return sum;
}
}],
},
dimensions: [
{
name: "Seller", hierarchies:
[{
name: "Seller", levels: [
{
name: "All Sellers",
memberProvider: function (item) { return "All Sellers"; }
},
{
name: "Seller",
memberProvider: function (item) { return item.SellerName; }
}]
}]
}
]
}
メジャー ディメンションはすべてのメジャーをグループ化するために使用されます。キューブにメジャー ディメンションが 1 つのみあります。メジャー ディメンションはディメンションの名前、キャプション、および階層を定義します。measuresDimension プロパティでは、階層の代わりにメジャーが指定されています。
以下の表では、構成をプロパティ設定にマップします。
目的: | 使用するプロパティ: | 型: | 設定の選択肢: | 必須ですか? |
---|---|---|---|---|
メジャーのディメンションの名前を設定する | name | string | 名前を含む文字列。(デフォルト値は “Measures ” です。)メジャーのディメンションを識別するために使用されます。 |
いいえ |
メジャーのディメンションのキャプションを設定する | caption | string | キャプションを含む文字列。ピボット データ セレクターにメジャーのディメンションのラベルを表示します。キャプションが設定されていない場合は名前が使用されます。 | いいえ |
メジャーのメタデータを指定する | measures | array | measureMetadata オブジェクトの配列。 |
はい |
メジャーを構成するには、メジャーの名前、キャプション、および集計関数を定義します。メジャーのメタデータは measuresDimension の measures 配列に指定されています。プロパティ設定をメジャー配列の各 measureMetadata
オブジェクトに適用する必要があります。
以下の表では、構成をプロパティ設定にマップします。
目的: | 使用するプロパティ: | 型: | 設定の選択肢: | 必須ですか? |
---|---|---|---|---|
メジャーの名前を設定する | name | string | キャプションを含む文字列。メジャーを識別するために使用されます。 | はい |
メジャーのキャプションを設定する | caption | string | キャプションを含む文字列。ピボット グリッドにメジャーのラベルを表示します。キャプションが設定されていない場合は名前が使用されます。 | いいえ |
表示階層内のメジャーの位置を指定する | displayFolder | string |
以下の形式の文字列:
“Folder\\Inner Folder” .
igPivotDataSelector では、メジャーが以下のように表示されます。
![]() |
いいえ |
各セル結果が評価されたときにコールバックを発生することを指定する | aggregator | function |
結果セルに表示する値を返す関数。null を返すと、結果にセルを作成しません。関数は以下の 2 つのパラメーターを受け付けます。
|
はい |
ディメンションは階層をグループするために使用されます。各ディメンションは 1 つ以上の階層を指定する必要があります。ディメンションを構成するには、名前、キャプション、および階層を定義します。メジャー ディメンション以外のすべてのディメンションは、cube の dimensions プロパティをオブジェクトの配列として指定されます。プロパティ設定は、dimensions 配列に指定する各 measureMetadata
オブジェクトに適用します。
以下の表では、構成をプロパティ設定にマップします。
目的: | 使用するプロパティ: | 型: | 設定の選択肢: | 必須ですか? |
---|---|---|---|---|
ディメンションの名前を設定する | name | string | 名前を含む文字列。ディメンションを識別するために使用されます。 | はい |
ディメンションのキャプションを設定する | caption | string | キャプションを含む文字列。ピボット データ セレクターにディメンションのラベルを表示します。キャプションが設定されていない場合は名前が使用されます。 | いいえ |
このメジャーに属する階層のメタデータを指定する | hierarchies | array | ディメンションのメタデータを含む dimensionMetadata オブジェクトの配列。 |
はい |
ディメンションの階層は dimension
の hierarchies
プロパティで指定されます。各ディメンションに 1 つ以上の階層を定義する必要があります。以下のプロパティ設定を階層配列の各 hierarchyMetadata
オブジェクトに適用する必要があります。
以下の表では、目的の構成をプロパティ設定にマップしています。
目的: | 使用するプロパティ: | 型: | 設定の選択肢: | 必須ですか? |
---|---|---|---|---|
階層の名前を設定する | name | string | 名前を含む文字列。階層を識別するために使用されます。 | はい |
階層のキャプションを設定する | caption | string | キャプションを含む文字列。ピボット グリッドに階層のラベルを表示します。キャプションが設定されていない場合は名前が使用されます。 | いいえ |
階層の位置を指定する | displayFolder | string | 以下の形式の文字列: |
“Folder\\Inner Folder”
igPivotDataSelector
では、階層が以下のように表示されます。
|いいえ
この階層に属するレベルのメタデータを指定する|levels|配列|階層のメタデータを含む
levelMetadata
オブジェクトの配列。|はい
階層のレベルは hierarchy
の levels
プロパティで指定されます。各階層に 1 つ以上のレベルを定義する必要があります。以下のプロパティ設定をレベル配列の各 levelMetadata
オブジェクトに適用する必要があります。
以下の表では、構成をプロパティ設定にマップします。
目的: | 使用するプロパティ: | 型: | 設定の選択肢: | 必須ですか? |
---|---|---|---|---|
レベルの名前を設定する | name | string | 名前を含む文字列。レベルを識別するために使用されます。 | はい |
レベルのキャプションを設定する | caption | string | キャプションを含む文字列。ピボット グリッドにレベルのラベルを表示します。キャプションが設定されていない場合は名前が使用されます。 | いいえ |
レベル メンバーが作成されたときに、データ ソース配列の各項目のためにコールバックを発生することを構成する | memberProvider | 関数 | データ ソースの項目をパラメーターとして取得して、それに基づいて相対するメンバーの名前およびキャプションとして使用される文字列を返す関数。 | はい |
以下のコード例は、igOlapFlatDataSource
コンポーネントのメタデータを構成します。別の集計関数を持つ 3 つのメジャーを定義し、2 つのディメンションに 1 つの階層を定義します。各階層は 2 つのレベルがあります。
以下のは、igOlapFlatDataSource
インスタンスの完全宣言を含むコード例です。
JavaScript の場合:
Var dataSource = new $.ig.FlatDataSource({
dataOptions: {
dataSource:
[{ "ProductCategory": "Clothing", "UnitPrice": 12.81, "SellerName": "Stanley Brooker", "Country": "Bulgaria", "City": "Plovdiv", "Date": "2007-01-01", "UnitsSold": 282 },
{ "ProductCategory": "Clothing", "UnitPrice": 49.57, "SellerName": "Elisa Longbottom", "Country": "US", "City": "New York", "Date": "2007-01-05", "UnitsSold": 296 },
{ "ProductCategory": "Bikes", "UnitPrice": 3.56, "SellerName": "Lydia Burson", "Country": "Uruguay", "City": "Ciudad de la Costa", "Date": "2007-01-06", "UnitsSold": 68 },
{ "ProductCategory": "Accessories", "UnitPrice": 85.58, "SellerName": "David Haley", "Country": "UK", "City": "London", "Date": "2007-01-07", "UnitsSold": 293 },
{ "ProductCategory": "Components", "UnitPrice": 18.13, "SellerName": "John Smith", "Country": "Japan", "City": "Yokohama", "Date": "2007-01-08", "UnitsSold": 240 },
{ "ProductCategory": "Clothing", "UnitPrice": 68.33, "SellerName": "Larry Lieb", "Country": "Uruguay", "City": "Ciudad de la Costa", "Date": "2007-01-12", "UnitsSold": 456 },
{ "ProductCategory": "Components", "UnitPrice": 16.05, "SellerName": "Walter Pang", "Country": "Bulgaria", "City": "Sofia", "Date": "2007-02-09", "UnitsSold": 492 }]
},
metadata: {
cube: {
name: "Sales",
measuresDimension: {
measures: [
{
// example for sum aggreagor
name: "Units Sold Sum",
aggregator: function (items, cellMetadata) {
var sum = 0;
$.each(items, function (index, item) {
sum += item.UnitsSold;
});
return sum;
}
},
{
// example for average aggreagor
name: "Average Unit Price",
aggregator: function (items, cellMetadata) {
var sum = 0;
$.each(items, function (index, item) {
sum += item.UnitPrice;
});
return sum / items.length;
}
},
{
// example for count aggregator
name: "Sales Count",
aggregator: function (items, cellMetadata) {
var count = 0;
$.each(items, function (index, item) {
if (item.UnitsSold !== undefined &&
item.UnitsSold !== null &&
item.UnitsSold > 0) {
count++;
}
});
return count;
}
}
],
},
dimensions: [
{
name: "Seller", hierarchies:
[{
name: "Seller", levels: [
{
name: "All Sellers",
memberProvider: function (item) { return "All Sellers"; }
},
{
name: "Seller",
memberProvider: function (item) { return item.SellerName; }
}]
}]
},
{
caption: "Product", name: "Product", hierarchies: [
{
name: "Product", levels: [
{
name: "All Products",
memberProvider: function (item) { return "All Products"; }
},
{
name: "Product Category",
memberProvider: function (item) { return item.ProductCategory; }
}
]
}]
}
]
}
}
});
このトピックの追加情報については、以下のトピックも合わせてご参照ください。
igPivotDataSelector の概要: このトピックは、主な機能、最小要件およびユーザー機能性など、igPivotDataSelector コントロールに関する概念的な情報を提供します。
igPivotDataSelector を ASP.NET MVC アプリケーションに追加: このトピックでは、ASP.NET MVC ヘルパーを使用して igPivotDataSelector
コントロールを ASP.NET MVC アプリケーションに追加する方法を説明します。
このトピックについては、以下のサンプルも参照してください。
igPivotGrid
を igOlapFlatDataSource
にバインドし、データ選択のために igPivotDataSelector
を使用します。オンラインで表示: GitHub