推奨されます, 2019

エディターズチョイス

ファクトテーブルとディメンションテーブルの違い

ファクトテーブルとディメンションテーブルは、 スキーマを作成するための重要な要素です。 ファクトテーブルのレコードは、さまざまなディメンションテーブルの属性の組み合わせです。 ファクトテーブルは、ユーザーが自分のビジネスを改善するための意思決定に役立つビジネスディメンションを分析するのに役立ちます。 一方、ディメンション表は、ファクト表が対策を講じるためのディメンションを収集するのに役立ちます。

ファクトテーブルとディメンションテーブルを区別する要点は、ディメンションテーブルには、 実際にメジャーテーブルで使用される属性が含まれているということです。 それらを表示するためにファクトテーブルとディメンションテーブルの間に違いを生み出す他の要因がいくつかあります。下の比較表を見てみましょう。

比較表

比較基準ファクト表寸法表
基本ファクトテーブルには、ディメンションテーブルの属性に沿った測定値が含まれています。ディメンションテーブルには、ファクトテーブルがメトリックを計算するための属性が含まれています。
属性とレコードファクトテーブルには、より少ない属性とより多くのレコードが含まれています。ディメンションテーブルには、より多くの属性とより少ないレコードが含まれています。
テーブルサイズファクトテーブルは垂直に成長します。寸法表は横に伸びます。
キーファクトテーブルには、すべてのディメンションテーブルの主キーを連結した主キーが含まれています。各ディメンションテーブルには主キーが含まれています。
作り方ファクト表は、ディメンション表が完成したときにのみ作成できます。最初にディメンション表を作成する必要があります。
スキーマスキーマに含まれるファクト表の数が少なくなります。スキーマにはより多くのディメンション表が含まれています。
属性ファクトテーブルには、テキスト形式だけでなく数値形式のデータを含めることができます。ディメンションテーブルには、常にテキスト形式の属性が含まれています。

ファクトテーブルの定義

ファクトテーブルは、ディメンションテーブルの属性に沿った測定値を含むテーブルです。 可能な限り低いレベルで情報を含めることができます。 一部のファクト表には、 集計ファクト表と呼ばれる要約データが含まれています。 ファクトテーブルには、 日付スタンプ付きデータがほとんど含まれています。 ファクトテーブルの特性について説明しましょう。

連結キー
ファクトテーブルには、すべてのディメンションテーブルの主キーを連結した連結キーが含まれています。 ファクトテーブルの連結キーは、ファクトテーブル内の行を一意に識別する必要があります。

データ粒
データ粒度は、実際の測定値テーブルがどれだけ深く格納されているかを示します。 データ粒度は可能な限り最高レベルでなければなりません。

加法的メジャー
ファクトテーブルの属性は、 完全に加算的または 加算的にすることができます。 完全加法メジャーは、実際の表のすべてのディメンションについて簡単に集計できるものです。 たとえば、Quantity_orderedは、すべてのディメンションについて集計できる属性です。 特定の顧客、地域、日付、ブランドなどについて、total_orderを取り出すことができます。準加法メジャーは、ファクトテーブルの一部のディメンションに沿って集計できるものですが、すべてのディメンションについては集計できません。 同様に、バランス金額は時間の経過とともに変化するため、時間のディメンションにわたって合計することはできません。

スパースデータ
時々、我々は、実測テーブルのレコードにnullの指標を持つ属性があるのを見るかもしれません。 たとえば、休日に注文がない場合があります。 そのため、この日付の属性には数値データが含まれません。 情報を提供していないため、このような種類のレコードに対する測定値を格納する必要はありません。

縮退寸法
実際には、実際の表でいくつかの次元に遭遇することがありますが、これはまったく加法的ではありません。 たとえば、order_number、customer_id、これらのタイプのディメンションは追加できません。 ただし、場合によっては、今月中に特定の顧客による注文を見つける必要があります。 それからあなたはあなたの検索を関連づけるためにcustomer_idを必要とするでしょう。 ファクトテーブルの属性またはディメンションが縮退ディメンションと呼ばれる場合、これらの型。

寸法表の定義

ディメンションテーブルは、スキーマの開始の重要なコンポーネントです。ディメンションテーブルには、ディメンションを表す属性が含まれており、それに沿って実際に測定が行われます。 さらに、ディメンション表のいくつかの特性について説明します。

属性とキー
すべてのディメンションテーブルには、テーブルの各レコードを一意に識別する主キーが必要です。 ディメンションテーブルには多くの属性が含まれていることがよくあります。 したがって、 広いように見えます。つまり、ディメンションテーブルを作成すると、 水平方向に広がっていることがわかります。

属性値
ディメンションテーブルの属性の値が数値になることはほとんどなく、ほとんどの場合、属性の値はテキスト形式です 。 たとえば、製品名、ブランド、カテゴリ、サブカテゴリなど

属性間の関係
よく見ることができますが、ディメンションテーブルで遭遇する属性は直接関連していません。 同様に、Product_brandはpackage_dateとは何もしなくてもかまいませんが、それでも両方ともProductディメンションテーブルの属性にすることができます。

正規化
ディメンションテーブルは正規化されることになっていません 。 これは、テーブルを正規化すると多くの中間テーブルが作成されるためです。 クエリがディメンションテーブルから属性を取得し、それに沿ってファクトテーブルの測定値を回復すると、クエリは非効率的になる中間テーブルを通過する必要があります。 したがって、ディメンションテーブルは正規化されていません。

ドリルダウン、ロールアップ
ディメンションテーブルの属性を使用すると、上位レベルの集計属性から下位レベルの属性に移動して詳細を取得できます。 たとえば、ある地域の総売上高を調べたい場合は、州、都市、郵便番号別に売上高を探すことができます。 ロールアップして、まず郵便番号で、次に市区町村別、州別に合計売上高を見つけることもできます。

複数の階層
多くの場合、ディメンションテーブルには複数の階層があります。 たとえば、百貨店用の製品ディメンションテーブルがあります。 今、私たちはマーケティングと経理部門の2つの部門を持っています。

マーケティング部門は、特定の階層の製品ディメンション表の属性をドリルダウンして、ファクト表の測定値を取得します。

一方、経理部門は、ファクト表の測定値を取得するために、異なる階層の製品ディメンション表の属性をドリルダウンします。

したがって、ユーザーが複数の階層のいずれかに沿ってドリルダウンできるようにするには、ディメンション表に複数の階層または属性の集計レベルが必要です。

記録
ディメンションテーブルには属性が多すぎますが、レコードが少なくなります。

ファクトテーブルとディメンションテーブルの主な違い

  1. ファクトテーブルには、ディメンションテーブルのディメンション/属性に沿った測定値が含まれています。
  2. ファクトテーブルにはディメンションテーブルと比較してより多くのレコードと少ない属性が含まれていますが、ディメンションテーブルにはより多くの属性とより少ないレコードが含まれています。
  3. ファクト表の表サイズは垂直方向に拡大し、ディメンション表の表サイズは水平方向に拡大します。
  4. 各ディメンションテーブルには、テーブル内の各レコードを識別するための主キーが含まれていますが、ファクトテーブルには、すべてのディメンションテーブルのすべての主キーの組み合わせである連結キーが含まれています。
  5. ディメンション表は、ファクト表を作成する前に記録する必要があります。
  6. スキーマに含まれるファクトテーブルは少なくなりますが、ディメンションテーブルは多くなります。
  7. 実際の表の属性はテキストと同様に数値ですが、ディメンション表の属性はテキスト属性のみを持ちます。

結論:

どちらもスキーマの作成には重要ですが、ディメンション表はファクト表の前に記録する必要があります。 外形寸法でファクト表を作成することは不可能ですので。

Top