物理別名表について
別名表は、代替名を使用して別の物理表をソースとして参照する物理表です。別名表を作成すると、既存の表を複数回再利用できるため、表を物理レイヤーに複数回インポートする必要はありません。
別名表を使用する主な理由は次のとおりです:
-
1つのデータ・ソース表が、複数のセマンティック・ロールで機能する必要がある場合に、それぞれのキー、名前または結合が異なる複数の表を設定するため。この場合の別名表の設定は、三角結合または循環結合を回避するための1つの方法です。
たとえば、発注日と発送日の両方が時間ディメンション・データ・ソース表の同じ列を指すファクト表があるとします。この場合、ディメンション表に別名を付けて、別々にラベル付けされた、1つの結合がある別名表として各ロールが表されるようにできます。これらの別個のロールはビジネス・モデルに適用されるため、「発注日」と「発送日」は2つの異なる論理階層の一部になります。1つの論理問合せに両方の列が含まれる場合に、物理問合せでは両方が含まれるようにSQL文で別名が使用されます。
別名を使用すると、データ・ソース表が、ファクト表と、別のファクト表に結合している(通常、ファン・トラップと呼ばれる)ディメンション表の両方のロールとして機能できるようになります。
-
物理表名に、ベスト・プラクティスのネーミング規則を含めるため。たとえば、別名表の名前に表タイプ(ファクト、ディメンション、ブリッジなど)を接頭辞として付け、元の物理表名を変更せずにおくことができます。組織によっては、すべての物理表に別名表を作成して、ベスト・プラクティスのネーミング規則を施行するところもあります。この場合、すべてのマッピングと結合は、オリジナル表ではなく、別名表に基づいています。
別名表名は、SQL問合せに出現します。意味のある表名を指定するために別名表を使用すると、これらの表を参照するSQL問合せで読取りがより簡単になります。たとえば:
WITH SAWITH0 AS (select sum(T835.Dollars) as c1 from FactsRevT835/*AllRevenue(Billed Time Join)*/) select distinct 0 as c1, D1.c1 as c2 from SAWITH0 D1 order by c1
この問合せでは、意味のある別名表名A11 Revenue (Billed Time Join)が簡単なオリジナル物理表名FactsRevに適用されています。この場合、別名表名によって、SQL問合せでの出現時にその都度果たしていたロールに関する情報が提供されます。
別名表に、オリジナル表とは異なるキャッシュ・プロパティを設定できます。
別名表の列はオリジナル表と自動的に同期されるため、別名表の列を追加、削除または変更することはできません。同期化によって、オリジナル表とそれに関連する別名表が必ず同じ列定義を持つようになります。たとえば、オリジナル表で1つの列を削除すると、その列は別名表から自動的に削除されます。
そのすべての別名表を先に削除しないかぎり、オリジナル表を削除することはできません。または、オリジナル表とその別名表をすべて選択して、同時に削除することができます。
新しいオリジナル表が現在のオリジナル表のスーパーセットである場合は、別名表のオリジナル表を変更できます。ただし、オリジナル表を変更することによって使用中の列が削除された場合は、この変更の結果、セマンティック・モデルの整合性がなくなります。整合性チェックによって、孤立した別名が特定されます。
別名表では、そのオリジナル表からプロパティがいくつか継承されます。別名表がオリジナル表から取得するプロパティの一部は、別名表で変更できません。このようなプロパティは、別名表のプロパティでグレー表示されます。グレー表示されたプロパティの値がオリジナル表で変更された場合は、別名表でも同じプロパティの変更が表示されます。