あなたのコメントに基づくと、ETLプロセスに失敗したステップがあるようです。
コールセンター/コンタクトセンターの場合、次のようなファクトテーブルから始めることができます。
CallFactID - unique key just for ETL purposes only
AssociateID - call center associate who initially took the call
ProductID - product that the user is calling about
CallTypeID - General, Complaint, Misc, etc
ClientID - company / individual that is calling
CallDateID - linked to your Date (by day) Dimension
CallTimeOfDayID - bucketed id for call time based on business rules
CallStartTimestamp - ANSI timestamp of start time
CallEndTimestamp - ANSI timestamp of end time
CallDurationTimestamp - INTERVAL data type, or integer in seconds, call duration
その場合、ディメンションテーブルは次のようになります。
AssociateDim
ProductDim
CallTypeDim
ClientDim
DateDim
TimeOfDayDim
ETLは、最初にディメンションを作成する必要があります。ソースシステムにリレーショナルモデルがある場合は、通常、「Products」テーブルや「Associates」テーブルなどのさまざまなものの「ルックアップ」テーブルに移動し、次のように含めるのが理にかなっている関係を非正規化します。属性。たとえば、リレーショナル製品テーブルは次のようになります。
PRODUCTS: ProductKey,
ProductName,
ProductTypeKey,
ProductManufacturerKey,
SKU,
UPC
製品タイプと製造元を調べて、これを一般的な製品ディメンションに非正規化すると、次のようになります。
PRODUCTDIM: PRODUCTID (DW surrogate key),
ProductKey,
ProductName,
ProductTypeDesc,
ManufacturerDesc,
ManufacturerCountry,
SKU,
UPC
トランザクション(コールレコード)テーブルにのみ存在するがカーディナリティが低い属性の場合SELECT DISTINCT
、これらのテーブルで実行することでディメンションを作成できます。
すべてのディメンションを読み込んだら、(ディメンションに保存した)自然キーに基づいて各ディメンションに対してルックアップを実行してファクトを読み込み、そのキーをファクト行に割り当てます。
DWスタースキーマを使用したETLの詳細については、RalphKimballの著書TheData WarehouseETLToolkitを強くお勧めします。