ファクトテーブルは、ビジネスアクティビティを反映する大量のファクトデータや詳細な値を格納します。これは、特定のディメンションに基づいてデータを集計して生成されるテーブルです。例えば、製品の売上を分析するために、製品ディメンション (外部キーとして) 、時間ディメンション (外部キーとして) 、および総売上を格納する売上ファクトテーブルを作成できます。このトピックでは、ファクトテーブルの作成方法について説明します。
DataWorks のデータモデリング機能は、Kimball のディメンションモデリング手法に従っています。ディメンションテーブル、ファクトテーブル、集計テーブル、アプリケーションテーブルを設計・作成し、モデルを開発エンジンに公開し、既存の物理テーブルを論理モデルに逆モデリングします。
モデリングの観点
ディメンションモデリングでは、モデルテーブルを共通レイヤー、アプリケーションレイヤー、未分類の 3 つのレベルに整理します。共通レイヤーは、再利用可能な統一メトリック、ディメンション、詳細なファクトデータを構築するために使用され、データドメインまたは業務カテゴリのいずれかの観点からの管理をサポートします。アプリケーションレイヤーは、ビジネス固有の統計的ニーズに対応し、業務カテゴリの観点のみをサポートします。レベルを選択した後、対応するディレクトリツリーでモデルテーブルを作成および管理できます。
前提条件
-
データ層を作成済みであること。データ層を使用すると、異なる機能を持つテーブルを統一された層に整理して、検出と使用を簡素化できます。ファクトテーブルは通常、DWD 層に格納されます。ビジネスニーズに応じて、他のデータ層に格納することもできます。詳細については、「データウェアハウス層の定義」をご参照ください。
-
ビジネスプロセスを作成済みであること。ビジネスプロセスを作成すると、ファクトテーブルが格納する必要のある特定のビジネスアクティビティデータを決定するのに役立ちます。詳細については、「ビジネスプロセス」をご参照ください。
機能概要
各ビジネスプロセスで生成されたデータを並べ替えて分析し、そのデータをフィールドとしてファクトテーブルに格納します。例えば、注文を行うビジネスプロセスのファクトテーブルを作成し、注文 ID、注文作成時間、商品 ID、商品数、売上金額などの情報をフィールドとしてファクトテーブルに記録できます。データウェアハウスにファクトテーブルを展開し、ETL 操作を実行して、ファクトテーブルで定義されたフォーマットでデータを集計および格納できます。これにより、ビジネス担当者は後続のデータ分析のためにデータにアクセスできます。
上の図に示すように:
-
ファクトテーブルの作成時:
-
ディメンションモデリングと分析のために、ファクトテーブルのデータが格納されるデータウェアハウス内のデータ層を指定できます。通常、ファクトテーブルは DWD 層に格納されます。
-
ファクトテーブルを、それが記述する業務カテゴリとビジネスプロセスに関連付けることができます。これにより、特定のカテゴリやプロセスに関連するすべてのファクトテーブルを簡単に見つけることができます。
-
-
ファクトテーブルを作成した後、フィールドの追加、関連付けとパーティションの設定、統一されたフィールド標準の適用を行い、データドメイン全体でデータ整合性を確保できます。
-
ファクトテーブルを設定した後、それを公開してコンピュートエンジンにマテリアライズできます。その後、マテリアライズされたテーブルをコンピュートエンジンでのデータ分析に使用できます。
ファクトテーブルの作成
DataWorks コンソールにログインします。対象リージョンで、左側のナビゲーションウィンドウで をクリックします。ドロップダウンリストからワークスペースを選択し、入力 データモデリング をクリックします。
-
Data Modeling ページの上部ナビゲーションバーで、Dimensional Modeling をクリックして、Dimensional Modeling ページに移動します。
-
ファクトテーブルを作成します。
-
Dimensional Modeling ページで、
アイコンにカーソルを合わせ、 を選択します。 -
ファクトテーブルの基本情報を設定します。
パラメーター
説明
Data Layer
データ層を選択します。共通レイヤーの DWD のみがサポートされています。ファクトテーブルのデータはこのデータ層に格納されます。詳細については、「データウェアハウス層の定義」をご参照ください。
Business Category
既存の業務カテゴリを選択します。詳細については、「業務カテゴリ」をご参照ください。
Business Process
既存のビジネスプロセスを選択します。詳細については、「ビジネスプロセス」をご参照ください。
Storage Policy
ファクトテーブルにデータを格納する方法を定義します。オプションには、Synchronize Incremental Data Daily と Synchronize All Data Daily があります。
Naming Rule
設定済みのチェッカーを選択して、テーブル名が指定された命名規則に準拠していることを確認します。詳細については、「データウェアハウス層チェッカーの設定」および「チェッカーの使用」をご参照ください。
Table Name
テーブルの内部名です。[テーブル命名規則] パラメーターでチェッカーを選択した場合、名前は定義された規則に準拠する必要があります。
Table Display Name
テーブルの表示名です。
Lifecycle
ファクトテーブルの保存期間 (日数) 。最大値は 36000 です。
Owner
ファクトテーブルのオーナーです。デフォルトでは、テーブルを作成したユーザーになります。
Description
ファクトテーブルの説明です。
-
-
パラメーターを設定した後、Save をクリックします。新しいテーブルが左側のディレクトリツリーに表示されます。
テーブルフィールドの追加
モデルを作成した後、フィールドを追加する必要があります。
Shortcut Mode または Script Mode でフィールドを追加できます。Shortcut Mode では、Import from Table/View を選択して、コンピュートエンジン内の既存の物理テーブルまたはビューからフィールドをインポートできます。[既存のテーブル/ビューを検索] ドロップダウンリストから既存の物理テーブルまたはビューを検索して選択し、そのフィールドをインポートします。
[ショートカットモード]
現在、MaxCompute、Hologres、および EMR Hive のテーブルまたはビューからのみフィールドをインポートできます。
-
Shortcut Mode で、Import from Table/View の横にある Expand をクリックします。
-
[既存のテーブル/ビューを検索] テキストボックスに名前を入力して、対応するテーブルまたはビューを見つけます。次に、すべてのフィールドをインポートするか、一部のフィールドをインポートするかを選択します。
説明-
あいまい検索がサポートされています。キーワードを入力して、名前にキーワードが含まれるすべてのテーブルまたはビューを見つけることができます。
-
本番環境のテーブルのみを検索できます。開発環境のテーブルは検索できません。
-
アイコンをクリックして、すべてのフィールドをインポートします。 -
アイコンをクリックして、特定のフィールドをインポートします。
-
-
特定のフィールドをインポートすることを選択した場合、ダイアログボックスが表示されます。目的のフィールドを選択し、Import をクリックします。
-
インポートされたフィールドの Field Display Name が空の場合、ページに表示されるプロンプトに従って、フィールドの説明を表示名として使用できます。
スクリプトモード
FML 文を使用して、フィールド、関連付け、パーティションを作成することもできます。詳細については、「スクリプトモードでのモデリング」をご参照ください。
Script Mode は、コードベースの編集エクスペリエンスを提供します。Script Mode をクリックすると、モデルの構成に基づいて自動生成されたモデリング言語を示すダイアログボックスが表示されます。必要に応じてコードを変更し、OK をクリックします。
-- モデルが公開されて物理テーブルが作成された後 (承認前、承認中、または承認後) 、テーブル名は変更できません。
CREATE DIM TABLE dim_ec_pub_department_df ALIAS '部門ディメンションテーブル'
(
id ALIAS 'id' STRING COMMENT 'id',
gmt_create ALIAS '作成時間' TIMESTAMP COMMENT '作成時間',
gmt_modified ALIAS '変更時間' TIMESTAMP COMMENT '変更時間',
name ALIAS '部門名' STRING COMMENT '部門名',
parent_id ALIAS '親部門 ID' STRING COMMENT '親部門 ID',
`level` ALIAS 'レベル; 0: グループ; 1: 子会社; 2: 事業単位; 3: 部門。' BIGINT COMMENT 'レベル; 0: グループ; 1: 子会社; 2: 事業単位; 3: 部門。',
ds ALIAS '業務日、yyyymmdd' STRING COMMENT '業務日、yyyymmdd'
)
COMMENT '部門ディメンションテーブル'
WITH('life_cycle'='1000');
フィールド情報の設定
モデルにフィールドを追加した後、ビジネスニーズに基づいて、Associated Field、Redundant Field、Associated Granularity/Metric などの属性を設定できます。
-
フィールド属性を設定します。
デフォルトでは、ページには Field Name、Type、Field Display Name、Description、Primary Key、Not Null、Actions などの基本属性が表示されます。フィールドリストの右上隅にある Field Display Settings をクリックして、表示したい属性を選択し、必要に応じて変更します。
-
フィールドの Field Standard to Associate と Lookup Table to Associate を設定します。これにより、追加されたフィールドのコンテンツと値の範囲を標準化できます。
-
Field Standard to Associate:意味は同じだがフィールド名が異なるデータを一元管理し、値の範囲や測定単位などを定義します。
-
Lookup Table to Associate:フィールド標準で利用可能な値と値の範囲を定義します。
-
-
Redundant Field を設定します。
目的のフィールドの Actions 列で、Redundant Field をクリックして、関連フィールドを設定します。
従来のスタースキーマでは、ディメンションはディメンションテーブルに格納され、ファクトテーブルの外部キーを介してアクセスされることで、ストレージ使用量を削減します。しかし、下流のクエリパフォーマンスを向上させ、データアクセスを簡素化するために、頻繁に使用されるディメンション属性をファクトテーブルに直接非正規化することが一般的です。これにより、必要なテーブル結合の数が減少します。例えば、「注文作成詳細テーブル」は、「配送先住所ディメンションテーブル」から「配送先住所」や「荷受人電話番号」などの属性を非正規化します。
[冗長フィールド] ダイアログボックスで、MaxCompute から [関連テーブル/ビュー名] を選択し、リストから目的の [関連フィールド] を選択してから、[保存] をクリックして設定を完了します。
-
フィールドを設定した後、左上隅にある Save をクリックします。
次のステップ
ファクトテーブルを作成した後も、そのフィールド、関連付け、パーティションを設定する必要があります。その後、テーブルをターゲット環境に公開できます。詳細については、「論理モデルのマテリアライズ」をご参照ください。