web-dev-qa-db-ja.com

ファクトテーブルのメジャーとして非数値を使用する

指標として非数値を持つことに関する私の調査によると、非数値を持つことは最適なものではないことがわかりました。

そこで、数値を維持することを計画しました。私のシナリオは「従業員の出席」であり、対策は「カジュアル休暇」、「病気休暇」、「無知休暇」、「コンプオフ」である可能性があります。

これらすべて(4つのメジャー)の列を維持する必要があり、対応するユーザーのステータスに基づいて更新されます。私がそのように維持するならば、それは新しいものが追加されるならばそれが変更される立方体の構造のようになることを意味します。

それは良いものですか、それとも利用可能な最適なソリューションですか?

1
selva

その他の質問 のコメントで述べたように、ファクトテーブルのデータは次のようになります。

+------------+
+ Sick leave +
+            +
+ Comp off   +
+ Sick leave +
+            +
+------------+

この種類は、ETLの読み込み手順とレポート要件によって異なります。

基本的に2つのオプションがあります

個別のメジャーを作成します

これを実現するには、ファクトテーブルに4つの列を作成し、対応する値を1または0に設定する必要があります。

例えば

+--------------------------------------------------------+
| Casual Leave | Sick Leave | UnInformed Leave |Comp off |
+--------------------------------------------------------+
| 1            | 0          | 0                |0        |
| 0            | 0          | 0                |0        |
| 0            | 1          | 0                |0        |
| 0            | 0          | 1                |0        |
| 0            | 0          | 0                |0        |
| 0            | 0          | 0                |1        |
+--------------------------------------------------------+

次に、4つの列すべての合計を使用するだけでメジャーを作成し、最終的に4つのメジャーを作成できます。

追加のディメンションを作成します

次のように、LeaveTypeの追加のディメンションテーブルを作成できます。

+-----------------------------+
| Type_key | Type_Label       |
+-----------------------------+
| 0        | None             |
| 1        | Casual leave     |
| 2        | Sick leave       |
| 3        | Uninformed leave |
| 4        | Comp off         |
+-----------------------------+

そして、ETLで、どのタイプの休暇であるかを判別できます。

+---------------------------+
| Leave_Type   | Leave_Days |
+---------------------------+
| 1            | 1          |
| 0            | 0          |
| 2            | 1          |
| 3            | 1          |
| 4            | 1          |
| 0            | 0          |
+---------------------------+

次に、そのディメンションをファクトテーブルにリンクできます。

決定点

実装の容易さは、ETLプロセスによって異なります(ETLプロセスはありますか?)。一方は、もう一方よりも簡単に実装できます。

結果の動作も少し異なります。たとえば、複数のメジャーを使用する場合は、すべてのメジャーをレポートに追加する必要があります。ディメンションを使用する場合は、ディメンションを軸に配置する必要があります。

また、MDXの計算やフィルタリングなどを行うための可能な方法にも影響を与えます。

私はあなたの代わりに最良の選択肢が何であるかを決定することはできません、そしてあなたが概念の小さな証明をしてそれで遊んであなたに最も適しているものを見つけることを提案します。

たとえば、Excelで横軸にディメンションを配置した場合、値のない休暇タイプは表示されません。複数のメジャーがある場合は、レポートの長さの列が空になります。

もう1つの例は保守性です。ツールと可能なETL設定に応じて、新しい休暇タイプ「childsick」を追加するのにどれだけの作業が必要ですか。