0

ファクト[注文]と顧客ディメンション[顧客]があります。Ordersには3つのタイプの顧客がいる可能性があるため、これら2つの間に3つの関係があります。:荷送人、荷受人、請求書。したがって、次に、顧客ディメンションから顧客IDと名前を介してデータを参照し、実際に順序属性を取得しようとすると、キューブは3つの属性のどれでデータをスプライスするかを決定できません。

私は基本的に、状況を処理するための最良の方法を見つけようとしているだけです。明らかに、テーブルを正規化して、上記で指定したタイプに固有の3つの割り当てテーブルを作成すると、問題が軽減されます。SQLデータベースのテーブルの構造を変更せずにキューブでこれを行う方法があるかどうか疑問に思っています。

4

1 に答える 1

3

DimCustomerとFactOrdersの関係を処理する方法はいくつかあるので、データをどのようにモデル化するかによって異なります...

FactOrdersに3つのフィールドがあり、それぞれが以下のようにDimCustomerにリンクしている場合...

FactOrder
  ShipperKey (FK)
  ConsigneeKey (FK)
  BillToKey (FK)

DimCustomer
  CustomerKey (PK)

...次に、SSASデータベースの顧客の3つのディメンションが作成されます。これらのディメンションは、ロールプレイング(1つのディメンションをキューブに3回追加)を介して、または3つの個別のディメンションとして実装できます。後者は、よりユーザーフレンドリーな命名規則を可能にします。

一方、FactOrdersテーブルに以下のようにDimCustomerにリンクするフィールドが1つしかない場合...

FactOrder
  CustomerKey (FK)

DimCustomer
  CustomerKey (PK)

...次に、2つの方法のいずれかを使用して「顧客タイプ」(Shipper、Consignee、BillTo)を区別する必要があります...


方法1:DimCustomerテーブルにCustomerTypeフィールドを作成し、それをSSASプロジェクトのcustomerディメンションの属性にします...

FactOrder
  CustomerKey (FK)

DimCustomer
  CustomerKey (PK)
  CustomerType

方法2:新しいディメンションテーブル(DimCustomerType)を作成し、それをキューブに追加します...

FactOrder
  CustomerKey (FK)
  CustomerTypeKey (FK)

DimCustomer
  CustomerKey (PK)

DimCustomerType
  CustomerTypeKey (PK)
于 2012-01-26T20:54:49.917 に答える