ディメンションは、ディメンショナルモデリングの基礎です。ディメンショナルモデリングでは、測定値は「ファクト」と呼ばれ、これらのファクトを説明するコンテキストは「ディメンション」と呼ばれます。ディメンションテーブルには、ファクトテーブルの特定の属性に関する詳細情報が含まれます。一般的な例としては、日付や都市のディメンションがあります。本トピックでは、ディメンションテーブルの作成方法について説明します。
DataWorks のデータモデリング機能は、Kimball のディメンショナルモデリング手法に従っています。ディメンションテーブル、ファクトテーブル、集計テーブル、アプリケーションテーブルを設計・作成し、モデルを開発エンジンに発行し、既存の物理テーブルを論理モデルにリバースモデリングします。
モデリングの視点
ディメンショナルモデリングでは、モデルテーブルを共通レイヤー、アプリケーションレイヤー、未分類の 3 つのレベルに整理します。共通レイヤーは、再利用可能な統一されたメトリクス、ディメンション、詳細なファクトデータを構築し、データドメインまたは業務カテゴリの視点からの管理をサポートします。アプリケーションレイヤーは、ビジネス固有の統計ニーズに対応し、業務カテゴリの視点のみをサポートします。レベルを選択した後、対応するディレクトリツリーでモデルテーブルを作成および管理できます。
仕組み
各データドメインに存在しうるすべてのディメンションを抽出し、ディメンションとその属性をディメンションテーブルに格納します。たとえば、E コマースのビジネスデータを分析する場合、考えられるディメンション (各ディメンションの属性) には、注文 (注文 ID、注文作成日時、購入者 ID、販売者 ID)、ユーザー (性別、生年月日)、商品 (商品 ID、商品名、商品棚入れ日時) などがあります。注文ディメンションテーブル、ユーザーディメンションテーブル、商品ディメンションテーブルといったディメンションテーブルを作成できます。各ディメンションの属性は、ディメンションテーブルのフィールドとして使用されます。ディメンションテーブルをデータウェアハウスにデプロイし、抽出、変換、ロード (ETL) 操作を実行して、ディメンションテーブルで定義された形式でディメンションデータを格納できます。これにより、ビジネス担当者は後続のデータ分析のためにデータにアクセスできるようになります。
上の図に示すように:
ディメンションテーブルを作成する場合:
分析のためにディメンションテーブルのデータが格納されるデータウェアハウスレイヤーを指定できます。通常、ディメンションテーブルは共通レイヤーにありますが、アプリケーションレイヤーに配置することもできます。デフォルトでは、アプリケーションレイヤーではアプリケーションテーブルの作成のみが許可されています。アプリケーションレイヤーにディメンションテーブルを作成する必要がある場合は、新しいアプリケーションレイヤーを作成し、そのモデルタイプをディメンション または [ディメンションテーブル、ディメンション] に設定する必要があります。詳細については、「カスタムレイヤー」をご参照ください。
これにより、データドメインまたはデータマートの視点からディメンションテーブルを管理できます。
ディメンションテーブルを作成した後、その属性としてディメンションを追加し、その関連とパーティションを設定できます。フィールド設定に統一されたカラム標準またはルックアップテーブルを使用して、データドメイン全体で属性の一貫性を確保します。
ディメンションテーブルが設定された後:
それをストレージエンジンにマテリアライズして、コンピュートエンジンでデータ分析を行うことができます。
派生メトリクスと集計テーブルを設計する際に、ディメンションテーブルのフィールドを直接参照して使用できます。
前提条件
共通レイヤーは共有データを処理・統合して、企業全体の統一されたディメンションテーブルを構築します。アプリケーションレイヤーはこの統合データを使用して、パーソナライズされたデータ開発と変換をサポートするビジネス固有のディメンションテーブルを構築します。必要に応じて、どちらかのレイヤーでディメンションテーブルを作成できます。次の表に、各レイヤーの前提条件を示します。
データウェアハウスレイヤー | 前提条件 | リファレンス |
[パブリックレイヤー] | 共通レイヤーにディメンションテーブルを格納するためのデータウェアハウスレイヤーを作成する必要があります。 | |
ディメンションテーブルのビジネス上の視点を定義するために、データドメインを作成する必要があります。 | ||
[アプリケーション層] | アプリケーションレイヤーにディメンションテーブルを格納するためのデータウェアハウスレイヤーを作成する必要があります。 | |
ディメンションテーブルが提供するデータを分類するために、データマートを作成する必要があります。 |
ディメンションテーブルの作成
データモデリングページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データモデリングに移動] をクリックします。
2. インテリジェントデータモデリング ページで、上部のメニューバーにある ディメンションモデリング をクリックして、ディメンションモデリング ページに移動します。
3. ディメンションテーブルを作成します。
a. ディメンションモデリング ページで、
アイコンにカーソルを合わせ、 を選択します。b. ディメンションテーブルの基本プロパティを設定します。
ディメンションテーブルのデータウェアハウスレイヤー、データドメイン、業務カテゴリ、データマートなどのプロパティを指定できます。テーブルが作成されると、これらのエンティティの下にテーブルがリスト表示されます。このトピックでは、共通レイヤーのディメンションテーブルの作成を例として使用します。主なパラメーターを以下に説明します。
パラメーター
説明
[DWH レイヤー化]
ディメンションテーブルのデータウェアハウスレイヤーを選択します。レイヤーごとに目的が異なります:
[パブリックレイヤー]:処理・統合された共有データを格納して、企業レベルの統一されたディメンションテーブルを構築します。このレイヤーを選択した場合は、データドメインも指定する必要があります。データドメインの作成方法の詳細については、「データドメイン」をご参照ください。
[アプリケーション層]:アプリケーションの要件に基づいて、ビジネス固有のディメンションテーブルを構築します。このレイヤーを選択した場合は、データマートも指定する必要があります。データマートの作成方法の詳細については、「データマート」をご参照ください。
説明デフォルトでは、アプリケーションレイヤーではアプリケーションテーブルのみを作成できます。アプリケーションレイヤーでディメンションテーブルを作成するには、新しいアプリケーションレイヤーを作成し、そのモデルタイプを ディメンション または [ディメンションテーブル、ディメンション] に設定する必要があります。詳細については、「カスタムレイヤー」をご参照ください。
[業務カテゴリ]
データウェアハウスレイヤーが共通レイヤーに設定されている場合、ディメンションテーブルの業務カテゴリを選択できます。
[データドメイン]
データウェアハウスレイヤーとして共通レイヤーを選択した場合、ディメンションテーブルのデータドメインを選択できます。
[分類 / マーケット / トピック]
データウェアハウスレイヤーとしてアプリケーションレイヤーを選択した場合は、業務カテゴリの下にあるマートまたは主題領域を選択する必要があります。
[ストレージポリシー]
ディメンションテーブルのデータ格納方法を定義するポリシーです。保持期間やデータ量などが含まれます。
[ディメンション]
ディメンションテーブルに関連付けるディメンション。これはデータ分析の視点を定義します。
説明ディメンションを作成するには、「概念モデルの作成:ディメンション」をご参照ください。
[テーブル名のルール]
ディメンションテーブルの命名規則を適用するチェッカー。チェッカーを選択した場合、テーブル名 はその規則に準拠する必要があります。
説明チェッカーを設定するには、「データウェアハウスレイヤーチェッカーの設定」をご参照ください。
[テーブル名]
ディメンションテーブルの名前。命名規則を設定した場合、名前はその規則に準拠する必要があります。
[中国語のテーブル名]
ディメンションテーブルの表示名。
[ライフサイクル]
ディメンションテーブルの保持期間 (日数)。最大値は 36,000 です。
[オーナー]
ディメンションテーブルの所有者。デフォルトでは、テーブルを作成したユーザーになります。
[説明]
ディメンションテーブルの説明。
4. 設定が完了したら、保存 をクリックします。
左側のナビゲーションツリーで、対応するデータドメインまたは業務カテゴリの下にディメンションテーブルを見つけて管理できます。
テーブルフィールドの追加
論理モデルを作成した後、テーブルにフィールドを追加する必要があります。
フィールドは クイックモード または コードモード のいずれかで追加できます。クイックモード では、テーブル / ビューからインポート 機能を使用して、コンピュートエンジン内の既存の物理テーブルまたはビューからフィールドをインポートできます。[既存のテーブル/ビューを検索] ボックスでテーブルまたはビューを検索し、選択します。
[クイックモード]
現在、MaxCompute、Hologres、EMR Hive コンピュートエンジンのテーブルまたはビューからのみインポートできます。
1. クイックモード で、テーブル / ビューからインポート の横にある 表示 をクリックします。
2. [既存のテーブル/ビューを検索] 入力ボックスに名前を入力して、テーブルまたはビューを検索します。テーブルを選択した後、すべてのフィールドをインポートするか、一部のフィールドのみをインポートするかを選択できます。
説明あいまい検索がサポートされています。キーワードを入力して、名前にキーワードが含まれるすべてのテーブルまたはビューを検索できます。
開発環境ではなく、本番環境のテーブルのみを検索できます。
アイコンは、すべてのフィールドがインポートされることを示します。
アイコンは、選択したフィールドのみがインポートされることを示します。
3. 一部のフィールドのみをインポートすることを選択した場合、ダイアログボックスが表示され、選択したテーブルのすべてのフィールドが表示されます。モデルに追加するフィールドを選択し、インポート をクリックします。
4. インポートされたフィールドの フィールド表示名 が空の場合、そのフィールドの説明をフィールド表示名として入力するように求められます。
[コードモード]
FML ステートメントを使用して、フィールド、関連、パーティションを作成することもできます。詳細については、「コードモードでのモデリング」をご参照ください。
コードモード では、コードを記述してディメンションテーブルを作成できます。基本情報を入力してテーブルを保存した後、コードモード をクリックします。設定に基づいて自動生成されたモデリングコードを含むダイアログボックスが表示されます。コード内でモデルを変更し、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 'レベル' BIGINT COMMENT '部門レベル。0: グループ、1: 子会社、2: ビジネスユニット、3: 部門。',
ds ALIAS 'ビジネス日付、yyyymmdd' STRING COMMENT 'ビジネス日付、yyyymmdd'
)
COMMENT '部門ディメンションテーブル'
WITH('life_cycle'='1000');フィールド情報の設定
モデルにフィールドを追加した後、ビジネス要件に基づいて、各フィールドの 外部キーフィールド、冗長フィールド、および 粒度/メトリックの関連付け を設定できます。
1. フィールドプロパティを設定します。
デフォルトでは、フィールドプロパティリストには、フィールド名、タイプ、フィールド表示名、説明、プライマリキー、必須、測定単位、操作 などの基本属性が表示されます。フィールドリストの右上隅にある フィールド表示設定 をクリックして、表示するプロパティを選択し、それらを変更します。
2. フィールドの 外部キーフィールド標準 と ルックアップテーブルの関連付け を設定します。これにより、追加されたフィールドをカラム標準およびルックアップテーブルに関連付けることができ、その内容と値の範囲が標準化されます。
または、フィールドを設定した後、フィールドリストの右上隅にある [関連付け] をクリックして、関連する アトミックメトリクス、ルックアップテーブル、および データ標準 を一括で設定することもできます。
[外部キーフィールド標準]:同じ意味を持つが名前が異なるフィールドを管理します。値の範囲や測定単位などのプロパティを定義します。
[ルックアップテーブルの関連付け]:特定のカラム標準の有効な内容と値の範囲を定義します。
3. フィールドの 冗長フィールド を設定します。
従来のスタースキーマでは、ディメンションをディメンションテーブルに格納し、ファクトテーブルの外部キーを介してアクセスすることでストレージを削減します。対照的に、DataWorks のインテリジェントなディメンショナルモデリングでは、ユーザー ID や一般的な分析ディメンションなど、頻繁に使用されるフィールドを冗長フィールドとして追加することを推奨しています。この方法は、下流のクエリパフォーマンスを向上させ、データ取得を簡素化し、テーブル結合の数を減らします。
例 1:「注文作成詳細テーブル」には、「配送先住所ディメンションテーブル」の「配送先住所」ディメンションを冗長フィールドとして含めることができます。これには、受取人の住所や電話番号などの属性が含まれます。
例 2:「商品ディメンションテーブル」には、「商品情報テーブル」の「調達情報」や「ブランド情報」などの属性を冗長フィールドとして含めることができます。
特定のフィールドの 操作 列で、冗長フィールド をクリックして、その関連フィールドを設定します。
[冗長フィールド] 設定ダイアログボックスで、データソースタイプと特定のテーブル名を含む [関連テーブル/ビュー名] を選択します。下のフィールドリストには、関連付け可能なフィールドが、名前、タイプ、プライマリキー、パーティションなどのプロパティとともに表示されます。[関連フィールド] を選択し、[保存] をクリックします。
4. 設定が完了したら、左上隅にある 保存 をクリックします。
次のステップ
ディメンションテーブルを作成した後、フィールド管理、関連、およびパーティション設定も構成する必要があります。また、テーブルをターゲット環境に発行する必要もあります。詳細については、次のトピックをご参照ください: