大量のデータを扱う場合は、データの範囲やサイズを適切に見極めるのが困難な場合があります。例えば、様々な製品の売上高を、地域別、さらには顧客別に分けて、一般的な 2 次元配列のスプレッドシートで集計するとします。この場合、スプレッドシートの行数が数百行に及び、列数も数十列、あるいは数百列に到達することも珍しくありません。このような大量のデータの集まりから有効な情報だけを抜き出すのは容易ではなく、データから特定の傾向やパターンを識別するのも困難な場合があります。
データの視覚化は、このような大規模なデータをコンパクトな形式で確認するための技術です。データの視覚化技術の 1 つとして挙げられるのが、横棒グラフや縦棒グラフ、円グラフなど、グラフを使用する方法です。Adobe® Flex™ では、様々なグラフをサポートしています。詳細については、チャートの概要を参照してください。
別の技術としては、OLAP(オンライン分析処理)データグリッドなどを使用して、データをコンパクトな形式に集計する方法が挙げられます。OLAP データグリッドは、Microsoft Excel のピボットテーブルに類似した技術です。OLAP データグリッドでは、スプレッドシートのような 2 次元の行と列で、データ集計が表示されます。ただし、表示されるデータは、集計方法の設定に基づいて集約されています。
例えば、売上高の情報をフラットなデータ構造のレコードとして収集し、サーバーに保存したとします。各レコードには、単一の四半期における、単一の製品に関する単一の顧客取引の情報が含まれています。次のコードは、このフラットなデータの形式を示したものです。
data:Object = {
customer:"AAA",
product:"ColdFusion",
year:"2007",
quarter:"Q1"
revenue: "100.00"
}
何百もの顧客を持ち、数十種類、数百種類もの製品を扱う大きな企業では、このテーブルは数千行もの大きさになることが容易に予測できます。この情報を標準的なスプレッドシートで表示するのではなく、Flex アプリケーションにダウンロードして製品別および四半期別に売上高を集計し、集計データを OLAP データグリッドに表示することができます。このデータの集計から、時間経過に伴う各製品の売上高の傾向を判断することができます。
OLAP データグリッドの表示には、Flex OLAPDataGrid コントロールを使用します。次の図は、製品と四半期ごとに集計された売上高情報を表示する OLAPDataGrid コントロールを示したものです。
すべての Flex データグリッドコントロールと同様に、OLAPDataGrid コントロールは、行と列の 2 次元でデータを表現するように設計されています。
この例は、次の例のように、2 年間の各四半期の売上高を比較するように変更することができます。
前の図の OLAPDataGrid コントロールの列には、年度と四半期の情報が階層的に表示されています。コントロールの列と行の両方に、複数レベルの階層を追加することができます。
次の図は、データを集計して OLAPDataGrid コントロールで表示する場合のデータフローを示したものです。
次の手順は、このプロセスを詳しく説明したものです。
次のコードは、フラットなデータ形式の例を示したものです。
data:Object = {
customer:"AAA",
product:"ColdFusion",
quarter:"Q1"
revenue: "100.00"
}
OLAP キューブは、リレーショナルデータベースのテーブルに似た特性を持ちます。ただし、一般的にテーブルが 2 次元の構造(行と列)を持つのに対し、OLAP キューブでは任意の次元数の構造を構築することができます。この例では、customer、product、quarter という 3 つのディメンション(次元)をキューブに定義します。customer、product、quarter の有効な値の組み合わせのすべてが、キューブの中で固有のポイントを定義します。キューブの各ポイントの値が、customer、product および quarter の値の組み合わせに該当する売上高を表します。
OLAP キューブにデータを設定したら、集計データを抽出するクエリを記述します。このクエリの結果が、OLAPDataGrid コントロールでの表示に使用されます。複数のクエリを記述して、異なるタイプのデータ集計を作成することができます。
OLAP キューブには、任意の数のディメンションを構築することができます。単純な構築方法として考えられるのが、フラットなデータセットのフィールドに合わせて OLAP キューブのディメンションを定義する方法です。例えば、フラットなデータに 3 つのフィールドがあるとします。
data:Object = {
product:"ColdFusion"
quarter :"Q1"
revenue: "100.00",
}
各レコードのデータフィールドには次の値を格納します。
データを集計するには、quarter および product という 2 つのディメンションを持つ OLAP キューブを作成します。キューブの各ディメンションに対応した値は、「メンバー」と呼ばれます。例えば、キューブの product というディメンションは、ColdFusion、Flex、Dreamweaver、および Illustrator というメンバーを持ちます。quarter というディメンションのメンバーは、Q1、Q2、Q3 および Q4 です。
2 つのディメンションによって定義されたキューブの任意のポイントの値は、キューブの「メジャー」と呼ばれます。例えば、(Q1, ColdFusion) で定義されたキューブのポイントのメジャーは 100.00 になります。スキーマでは、OLAP キューブの単一のポイントに対して 1 つまたは複数のメジャーを定義できます。
Flex では、キューブのメジャーの値について、数値のみサポートしています。数値の利点としては、OLAPDataGrid コントロールに表示するデータを容易に集計できることが挙げられます。主な集計タイプには、合計、平均、最小値、最大値などがあります。例えば、revenue メジャーの集計方法を SUM に指定したとします。また、ColdFusion の売上高情報をキューブから抽出するとします。集計された売上高データには、各四半期の ColdFusion の売上高をすべて合計したデータが含まれます。
フラットなデータを OLAP キューブに変換するには、OLAP スキーマを作成して、キューブのディメンション数と、各ディメンションに対応したメンバーを構成するフラットなデータのフィールド、さらにキューブのポイントに対応したメジャーを構成するフラットなデータのフィールドを定義します。
例えば、売上高のレコードを含む次のようなフラットなデータがあるとします。
data:Object = {
customer:"AAA",
product:"ColdFusion",
quarter:"Q1"
revenue: "100.00"
}
次の例は、このデータをキューブで表現するために使用する OLAP スキーマの定義を含む OLAPCube の定義を示したものです。このスキーマでは、データの customer、product および quarter フィールドに基づいて、3 次元の OLAP キューブを定義しています。
<mx:OLAPCube name="FlatSchemaCube"
dataProvider="{flatData}"
id="myMXMLCube"
complete="runQuery(event);">
<mx:OLAPDimension name="CustomerDim">
<mx:OLAPAttribute name="Customer" dataField="customer"/>
<mx:OLAPHierarchy name="CustomerHier" hasAll="true">
<mx:OLAPLevel attributeName="Customer"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPDimension name="ProductDim">
<mx:OLAPAttribute name="Product" dataField="product"/>
<mx:OLAPHierarchy name="ProductHier" hasAll="true">
<mx:OLAPLevel attributeName="Product"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPDimension name="QuarterDim">
<mx:OLAPAttribute name="Quarter" dataField="quarter"/>
<mx:OLAPHierarchy name="QuarterHier" hasAll="true">
<mx:OLAPLevel attributeName="Quarter"/>
</mx:OLAPHierarchy>
</mx:OLAPDimension>
<mx:OLAPMeasure name="Revenue"
dataField="revenue"
aggregator="SUM"/>
</mx:OLAPCube>
このスキーマの以下の点に注目してください。
アプリケーションの要求によっては、同じフラットなデータセットから複数の OLAP キューブを作成し、各キューブで異なるスキーマを使用して、それぞれ独自のディメンションとメジャーの配列を作成します。詳細および OLAP スキーマの例については、OLAP スキーマの作成を参照してください。
OLAP クエリは、OLAPDataGrid コントロールで表示する集計データを OLAP キューブから抽出します。クエリでは、クエリの特性を定義するディメンションと、クエリ結果を作成するために集計するメジャーを指定します。
前の節では、売上高情報の OLAP スキーマを定義しました。このスキーマでは、CustomerDim、ProductDim および QuarterDim の各ディメンションと、SUM の集計方法で集計する売上高の単一のメジャーを定義しています。そのため、次の条件で売上高を集計するクエリを作成することができます。
クエリは、OLAPQuery クラスのインスタンスとして ActionScript で構築し、OLAPCube.execute() メソッドを呼び出して実行します。これにより、AsyncToken クラスのインスタンスが返されます。
クエリには、行軸と列軸という、2 つの IOLAPQueryAxis 型の軸が必要です。行軸では OLAPDataGrid コントロールの各行のデータ集計情報を定義し、列軸では各列のデータ収集情報を定義します。
各軸のデータ収集情報を指定するには、次の例のように、OLAPSet クラスを使用します。
// Create an instance of OLAPQuery to represent the query.
var query:OLAPQuery = new OLAPQuery;
// Get the row axis from the query instance.
var rowQueryAxis:IOLAPQueryAxis = query.getAxis(OLAPQuery.ROW_AXIS);
// Create an OLAPSet instance to configure the axis.
var productSet:OLAPSet = new OLAPSet;
// Add the Product to the row to aggregate data
// by the Product dimension.
productSet.addElements(
cube.findDimension("ProductDim").findAttribute("Product").children);
// Add the OLAPSet instance to the axis.
rowQueryAxis.addSet(productSet);
// Get the column axis from the query instance, and configure it
// to aggregate the columns by the Quarter dimension.
var colQueryAxis:IOLAPQueryAxis = query.getAxis(OLAPQuery.COLUMN_AXIS);
var quarterSet:OLAPSet= new OLAPSet;
quarterSet.addElements(
cube.findDimension("QuarterDim").findAttribute("Quarter").children);
colQueryAxis.addSet(quarterSet);
// Execute the query.
var token:AsyncToken = cube.execute(query);
// Set up handlers for the query results.
token.addResponder(new AsyncResponder(showResult, showFault));
このクエリの以下の点に注目してください。
詳細および OLAP クエリの例については、OLAP クエリの作成を参照してください。
OLAP クエリの結果表示には、OLAPDataGrid コントロールを使用します。OLAPDataGrid コントロールは AdvancedDataGrid コントロールのサブクラスで、その機能の多くを継承しています。ただし、OLAPDataGrid コントロールにデータを渡す方法により、AdvancedDataGrid コントロールとはいくつかの点で異なります。
OLAPDataGrid コントロールのデータの設定は、コントロールのデータプロバイダを OLAPResult クラスのインスタンスに設定することで実行します。これにより、OLAP クエリの結果がコントロールに設定されます。このコントロールを使用する詳しい例については、OLAPDataGrid コントロールの使用例を参照してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート