2017-03-26 6 views
1

私は初めてデータウェアハウスを作成しています。どこが薄暗く、事実でも、無実の表でもあります。データウェアハウスの1対多のディミングテーブル

これまでのところ、私はEmployee(1)とEmployeeAppLogin(many)の2つのテーブルを持っています。 どちらもSCD2タイプです。

dim_Employeeは、従業員の代表的な従業員のdimテーブルと、EmployeeAppKey(SK)、EmployeeID(NK)、loginNameを格納する必要があるEmployeeAppLoginです。または、dim_StaffのEmployeeID(NK)の代わりにdin_staffのemployee_key(SK)を呼び出す必要があります。

EmployeeAppLoginテーブルは、単にルックアップテーブルであり、トランザクションを保持しません。サードパーティのアプリケーションでloginNameを使用して、refを渡して従業員を識別するために使用されます。私はこれらのサードパーティーのアプリケーションから取引テーブルにまだアクセスしていません。

DWがどこに収まるかはわかりません。

感謝

+0

従業員は複数のアプリログインを持つことができますか?最終的なレポートにEmployeeAppLoginフィールドを使用しますか(これは単純に内部ヘルパーテーブルですか)。 –

+0

はい、従業員は複数のアプリログインを行います。 これは、従業員IDとのログイン名を識別するのに役立ちます。すなわち「ブリッジ」テーブルである。 ログイン名amd従業員名が最終レポートに表示されます。 –

答えて

2

一つのアプローチは、EmployeeLoginに別々のディメンション表を作成することです。レポート作成者は、従業員、ログイン、またはその両方によるフィルタリングを自由に行うことができます。

Sample schema

データ・ウェアハウスは、従来のデータベースの上に巨大な利点を持っています。すべてのセル、行、列の内容は、あなたの直接の管理下にあります。任意の方法でソースデータをtransformまで無料で入手できます。このような理由から、私は可能な限り使いやすいように自分のdbsを設計しています。すべての単一レコードが自分のETLプロセスを通過するため、そこでの関係を強化することができます。スキーマはこれを行う必要はありません。

この構造を設定するには、おそらくブリッジングテーブルが必要です。しかし、これはステージングエリアに隠れる可能性があります。

このデザインの主な利点は、よりシンプルでフラットな構造を提供することです。私はこれが私が書く必要がある複雑なクエリの数を減らすことがわかります(私の生産性が向上します)。 Power Biなどのデータ視覚化ツールやAnalysis Servicesなどのアドホッククエリツールを使用すると、よりフラットな構造がうまく機能します。

+0

ありがとう。私のproductiond dbのログインテーブルには、従業員ID、アプリケーションID、プロジェクトID、およびログイン名が記録されます。そのうちの従業員は複数回出現することができます。だから私の薄暗い中で Dim_Employee(SCD2 EmployeeKey) Dim_Application(SCD、APPLICATIONID) Dim_Project(SCD1 PROJECT_ID) Dim_Login(SCD2 APPLICATIONID、LoginNameに及びLoginKey) Fact_EmployeeApllicationLogin(EmployeeKey、PROJECTID、....私が必要とする設定LoginKey、他の測定値はログインデータと同じです) プロダクションデータベーステーブルからすべてのIDを取り除いて、それを自分のDimテーブルに入れていますか? –

+0

一般的に、はい。確かに、重要なデータポイントは独自の薄暗いテーブルに値します。これは、属性を添付する自然な空間を提供します(例:Dim-Appには 'AppKey'、' AppName'、 'AppOwner'、' AppCurrentVersion'などがあります)。すべての重要なIDを削除すると、重要でない/少ないIDをいくつか残しておくことができます。これらは[迷惑メール](https://en.wikipedia.org/wiki/Dimension_(data_warehouse)#Junk_dimension)に委譲することも、既存の淡色に絞ることもできます(例:実際にどのアプリが使用されたかは気にしませんおそらくそれはdimログインの属性にすることができます)。 –