私のデータウェアハウスには、親子階層を作成する次のディメンションがあります。私の問題はこれです。プライマリキーは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. SSAS参照されたディメンションの問題
- 2. Makefile - 親ディレクトリを参照する際の問題
- 3. 親の質問の親と参照子の子を含む
- 4. firebaseデータベース子参照問題
- 5. C#でSSAS Tabularモデルを参照する際の例外
- 6. 子+親参照SQL
- 7. xcodeで子プロセスを作成する際の問題
- 8. Exrin内でカスタムコントロールを使用する際の参照の問題
- 9. Capybaraテストでルートを参照する際の問題
- 10. WCFでオブジェクト参照を保存する際の問題
- 11. Maven 3は親子モジュールでantrun問題を作成します
- 12. ファイルからHTML電子メールを作成する際の問題
- 13. 子変数を参照する親クラス
- 14. 親から子を削除する際のスプリングブートの問題
- 15. Asp.Netコアプロジェクトの.NETコアクラスライブラリプロジェクトを参照する際の問題
- 16. 内部クラスのiVarを参照する際の問題
- 17. キャンバス位置を参照する際の問題
- 18. ストアドプロシージャを作成する際の問題
- 19. ループを作成する際の問題
- 20. タイマージョブを作成する際の問題
- 21. .icnsを作成する際の問題
- 22. フルスクリーンモードを作成する際の問題
- 23. オブジェクトのインライン作成で親を参照する方法は?
- 24. 親アクターの参照を使用してakkaアクターの子を作成します。
- 25. SQL Serverの親子(親はすべてをすべて参照)?
- 26. 親子のステートレス子コンポーネントからの入力値への参照への参照
- 27. 既存のAndroidアプリケーションで新しい要素を参照する際の問題
- 28. mayaでユーザー生成ボタンを作成する際の問題
- 29. パス/クリック問題を参照
- 30. サービス参照の問題
ありがとうございます!私は、あなたが言ったように、そして親のサロゲートキーを格納する列を持つことが、私にとって最高のシナリオだと信じています。どのように私がそれについて行くことができるかについての提案があれば、私はそれを感謝します! – John
私は入り込んでDSVを介して列を追加することができますが、私は親代理キーとなるものをどのように設定するのかは分かりません – John
ちょっとジョンが上記の変更を参照してください –