OBIEE –次元モデリング
次元モデリングは、DW設計で使用される一連の方法と概念を提供します。DWコンサルタントのラルフキンボールによると、次元モデリングは、データウェアハウスでのエンドユーザークエリをサポートすることを目的としたデータベースの設計手法です。理解しやすさとパフォーマンスを重視しています。彼によると、トランザクション指向のERはトランザクションのキャプチャには非常に役立ちますが、エンドユーザーの配信には避ける必要があります。
ディメンションモデリングでは、常にファクトとディメンションテーブルが使用されます。ファクトは、ファクト値に基づいて集計および分析できる数値です。ディメンションは、ファクト値の階層と説明を定義します。
寸法表
ディメンションテーブルには、ファクトテーブル内のオブジェクトを説明する属性が格納されます。ディメンションテーブルには、各ディメンション行を一意に識別する主キーがあります。このキーは、ディメンションテーブルをファクトテーブルに関連付けるために使用されます。
ディメンションテーブルは、トランザクションを実行するために作成されておらず、データを詳細に分析するためにのみ使用されるため、通常は非正規化されます。
例
次のディメンションテーブルでは、顧客ディメンションには通常、顧客の名前、住所、顧客ID、性別、収入グループ、教育レベルなどが含まれています。
顧客ID | 名前 | 性別 | 所得 | 教育 | 宗教 |
---|---|---|---|---|---|
1 | ブライアンエッジ | M | 2 | 3 | 4 |
2 | フレッドスミス | M | 3 | 5 | 1 |
3 | サリー・ジョーンズ | F | 1 | 7 | 3 |
ファクトテーブル
ファクトテーブルには、測定値と呼ばれる数値が含まれています。ファクトテーブルには、ファクトとディメンションテーブルへの外部キーの2種類の列があります。
ファクトテーブルのメジャーには3つのタイプがあります-
Additive −任意のディメンションに追加できるメジャー。
Non-Additive −どのディメンションにも追加できないメジャー。
Semi-Additive −一部のディメンションに追加できるメジャー。
例
時間ID | 製品番号 | 顧客ID | 販売台数 |
---|---|---|---|
4 | 17 | 2 | 1 |
8 | 21 | 3 | 2 |
8 | 4 | 1 | 1 |
このファクトテーブルには、時間ディメンション、製品ディメンション、顧客ディメンション、および販売された測定値単位の外部キーが含まれています。
会社が顧客に製品を販売するとします。すべての販売は社内で発生する事実であり、ファクトテーブルはこれらの事実を記録するために使用されます。
一般的な事実は次のとおりです。-販売台数、マージン、売上高など。ディメンションテーブルには、データを分析するための顧客、時間、製品などの要素がリストされています。
上記のファクトテーブルと顧客ディメンションを考慮すると、製品と時間のディメンションもあります。このファクトテーブルとこれらの3次元テーブルを考えると、次のような質問をすることができます。2010年に男性の顧客に販売された時計の数は?
ディメンションとファクトテーブルの違い
ディメンションテーブルとファクトテーブルの機能の違いは、ファクトテーブルには分析するデータが保持され、ディメンションテーブルにはクエリを実行するために必要な情報が保持されることです。
集計テーブル
集計テーブルには、さまざまな集計関数を使用して計算できる集計データが含まれています。
アン aggregate function 複数の行の値が特定の基準の入力としてグループ化され、より重要な意味または測定値の単一の値を形成する関数です。
一般的な集計関数は次のとおりです。
- Average()
- Count()
- Maximum()
- Median()
- Minimum()
- Mode()
- Sum()
これらの集計テーブルは、データウェアハウスで複雑なクエリを実行するためのパフォーマンスの最適化に使用されます。
例
年次(1行)、四半期(4行)、月次(12行)などの集計データを使用してテーブルを保存し、年次1行のみが処理されるようにデータを比較する必要があります。ただし、集約されていないテーブルでは、すべての行が処理されます。
MIN | 指定された列の最小値を返します |
MAX | 指定された列の最大値を返します |
和 | 指定された列の数値の合計を返します |
AVG | 指定された列の平均値を返します |
カウント | 指定された列の値の総数を返します |
カウント (*) | テーブルの行数を返します |
title = 'developer'であるemployeeからAvg(salary)を選択します。このステートメントは、役職が「開発者」に等しいすべての従業員の平均給与を返します。
集計はデータベースレベルで適用できます。集計を作成してデータベースの集計テーブルに保存することも、レポートレベルでその場で集計を適用することもできます。
Note −データベースレベルで集計を保存すると、時間が節約され、パフォーマンスが最適化されます。