私のデータウェアハウスには、親子階層を作成する次のディメンションがあります。私の問題はこれです。プライマリキーはOfficerPeopleIDです。これは親または子ではありません。親はMgrPeopleIDで、子はPeopleIDです。
ディメンションをPeopleIDに作成するときにデフォルトのキーを変更すると、動作するかのように表示されますが、PeopleIDの複数のコピーが表示されるため、処理中にエラーが発生します。倍数があるのは、それがSCDタイプ2であり、主キー(OfficerPeopleID)が表の代理キーであるためです。プライマリキー以外のフィールドで親子参照を作成しようとしたのは私だけではないことは分かっていますか? ありがとうございました!SSASで親子参照を作成する際の問題
答えて
私はあなたがそれをやりたいとは思いません。私があなたを正しく理解していれば、PeopleIDはあなたの本来の鍵かあなたのソースシステム鍵であり、OfficerPeopleIDはあなたの代用鍵です。この場合、親代用キーではなく親代理キーを格納する列を持つ必要があります。つまり、テーブルの外部キーを作成することができるはずです。あなたが現在持っているものに基づいて、マネージャのために複数のレコードを持つことができます。これは、正しいレコードであるレコードがあいまいになることがあります。また、親の子供があなたを働かせるためには、子供はテーブルのキーでなければなりません。
適切に実行したい場合は、ETLプロセスでMgrOfficerPoepleID(新しい列)を入力する必要があります。それを行う場合は、SCD2のために新しい行があるときにマネージャーキー値を更新するようにしてください。あなたはまだSSAS DSVで名前付きクエリとしてそれを行いたい場合は、あなたがPeopleIDはどちらか、重複したレコードが含まれている場合は、それを一意にするか、あなたが作成することを行うカントこの
SELECT
OffcerPeopleID,
-- ... insert other columns here
PeopleID,
MgrPeopleID,
(SELECT OfficerPeopleID
FROM dbo.Employee
WHERE(e.MgrPeopleID = PeopleID) AND (IsCurrent = 1)) AS MgrOfficerPoepleID
FROM dbo.OfficerPeopleDim AS e
WHERE IsCurrent = 1 -- this is your SCD2 flag. you could also use two date range columns
ような何かを行うことができます両方のフィールドを使用して
私はまた、このようなクエリで、DSV上の2つの個別のエントリ、管理者用と従業員のために別のものを作成することをアドバイス:
マネージャー:
select PeopleID as ManagerID, name as Name from OfficerPeopleDim
は従業員:
select PeopleID as EmployeeID, name, MgrPeopleId as Manager
from OfficerPeopleDim
where MgrPeopleId is not null
これは(左)のようになり、右側に結果が表示されます:
私は彼が上記を行うことはできないと思います。ディメンションに参加するには、代理キー(OfficerPeopleID)が必要です。ダイアグラムに代理キーがありません。また、2番目のクエリでは、従業員でもある管理者自身を見逃すことになります。彼は単純にマネージャの代理キーを追加することで問題を解決することができ、それは以下で説明するように真の外部キーになります。 –
- 1. Makefile - 親ディレクトリを参照する際の問題
- 2. xcodeで子プロセスを作成する際の問題
- 3. WCFでオブジェクト参照を保存する際の問題
- 4. Maven 3は親子モジュールでantrun問題を作成します
- 5. オブジェクトのインライン作成で親を参照する方法は?
- 6. 内部クラスのiVarを参照する際の問題
- 7. 親アクターの参照を使用してakkaアクターの子を作成します。
- 8. キャンバス位置を参照する際の問題
- 9. タイマージョブを作成する際の問題
- 10. ストアドプロシージャを作成する際の問題
- 11. .icnsを作成する際の問題
- 12. フルスクリーンモードを作成する際の問題
- 13. 既存のAndroidアプリケーションで新しい要素を参照する際の問題
- 14. パス/クリック問題を参照
- 15. サービス参照の問題
- 16. void *ポインタの参照問題?
- 17. アセンブリ参照の問題。
- 18. オブジェクト参照の問題
- 19. xmlスキーマ参照の問題
- 20. VS 2003参照の問題
- 21. 親コンポーネント内の子コンポーネントへの参照を取得する
- 22. ループ内の動的親要素の子を参照する
- 23. Maven:親POMの子プロジェクトのビルドディレクトリを参照する方法は?
- 24. 親クラスの子メソッドを子クラスのオブジェクトを参照している親クラスの参照で呼び出す必要があるのはなぜですか?
- 25. yii親子Clistviewページング問題
- 26. Castle.ActiveRecord.dllの参照に関する問題
- 27. UserControlで親のResourceDictionaryを参照する
- 28. Flash/ActionScript3のExernal Interfaceにコールバックを追加する際の問題の参照
- 29. C++でテキストベースのRPGゲーム/テンプレートを作成する際の問題
- 30. Javaでオブジェクトの配列を作成する際の問題
ありがとうございます!私は、あなたが言ったように、そして親のサロゲートキーを格納する列を持つことが、私にとって最高のシナリオだと信じています。どのように私がそれについて行くことができるかについての提案があれば、私はそれを感謝します! – John
私は入り込んでDSVを介して列を追加することができますが、私は親代理キーとなるものをどのように設定するのかは分かりません – John
ちょっとジョンが上記の変更を参照してください –