Dwh-schemas

提供:Dev Guides
移動先:案内検索

データウェアハウジング-スキーマ

スキーマは、データベース全体の論理的な説明です。 関連するすべてのデータ項目と集計を含む、すべてのレコードタイプのレコードの名前と説明が含まれます。 データベースと同様に、データウェアハウスもスキーマを維持する必要があります。 データベースはリレーショナルモデルを使用し、データウェアハウスはStar、Snowflake、およびFact Constellationスキーマを使用します。 この章では、データウェアハウスで使用されるスキーマについて説明します。

スタースキーマ

  • スタースキーマの各ディメンションは、1次元のテーブルのみで表されます。
  • このディメンションテーブルには、属性のセットが含まれています。
  • 次の図は、時間、品目、支店、場所の4つのディメンションに関する会社の販売データを示しています。

スキーマの開始

  • 中央にファクトテーブルがあります。 これには、4つの各次元へのキーが含まれています。
  • ファクトテーブルには、属性(販売ドルと販売単位)も含まれています。

-各ディメンションには1つのディメンションテーブルのみがあり、各テーブルには属性のセットが保持されます。 たとえば、ロケーションディメンションテーブルには、属性セット\ {location_key、street、city、Province_or_state、country}が含まれます。 この制約により、データの冗長性が生じる場合があります。 たとえば、「バンクーバー」と「ビクトリア」はどちらもカナダのブリティッシュコロンビア州にあります。 そのような都市のエントリは、provision_or_stateおよびcountry属性に沿ってデータの冗長性を引き起こす可能性があります。

スノーフレークスキーマ

  • Snowflakeスキーマの一部のディメンションテーブルは正規化されています。
  • 正規化は、データを追加のテーブルに分割します。
  • スタースキーマとは異なり、スノーフレークスキーマのディメンションテーブルは正規化されます。 たとえば、スタースキーマのアイテムディメンションテーブルは正規化され、2つのディメンションテーブル、つまりアイテムテーブルとサプライヤテーブルに分割されます。

スノーフレークスキーマ

  • これで、アイテムディメンションテーブルには、item_key、item_name、type、brand、supplier-keyの属性が含まれます。
  • サプライヤキーは、サプライヤディメンションテーブルにリンクされています。 サプライヤディメンションテーブルには、属性supplier_keyおよびsupplier_typeが含まれています。

-Snowflakeスキーマの正規化により、冗長性が低下するため、保守が容易になり、ストレージスペースを節約できます。

ファクトコンステレーションスキーマ

  • ファクトコンステレーションには複数のファクトテーブルがあります。 これはgalaxyスキーマとも呼ばれます。
  • 次の図は、販売と出荷という2つのファクトテーブルを示しています。

ファクトコンステレーションスキーマ

  • 売上ファクトテーブルは、スタースキーマのテーブルと同じです。
  • 出荷ファクトテーブルには、item_key、time_key、shipper_key、from_location、to_locationの5つのディメンションがあります。
  • 出荷ファクトテーブルには、2つのメジャー、つまり販売ドルと販売単位も含まれています。
  • ファクトテーブル間でディメンションテーブルを共有することもできます。 たとえば、時間、アイテム、および場所のディメンションテーブルは、販売ファクトテーブルと出荷ファクトテーブルの間で共有されます。

スキーマ定義

多次元スキーマは、データマイニングクエリ言語(DMQL)を使用して定義されます。 データウェアハウスとデータマートの定義には、キューブ定義とディメンション定義の2つのプリミティブを使用できます。

キューブ定義の構文

define cube < cube_name > [ < dimension-list > }: < measure_list >

ディメンション定義の構文

define dimension < dimension_name > as ( < attribute_or_dimension_list > )

スタースキーマ定義

我々が議論したスタースキーマは、次のようにデータマイニングクエリ言語(DMQL)を使用して定義することができます-

define cube sales star [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city, province or state, country)

スノーフレークスキーマ定義

スノーフレークスキーマは、次のようにDMQLを使用して定義できます-

define cube sales snowflake [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier (supplier key, supplier type))
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city (city key, city, province or state, country))

ファクトコンステレーションスキーマの定義

事実星座スキーマは、次のようにDMQLを使用して定義することができます-

define cube sales [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city, province or state,country)
define cube shipping [time, item, shipper, from location, to location]:

dollars cost = sum(cost in dollars), units shipped = count(*)

define dimension time as time in cube sales
define dimension item as item in cube sales
define dimension shipper as (shipper key, shipper name, location as location in cube sales, shipper type)
define dimension from location as location in cube sales
define dimension to location as location in cube sales