複数の支社の複数の出席者からの勤務時間データを格納するテーブルを作成するように求められました。この表は高レベルのレポート作成に使用されるため、基本的に各システム(存在する可能性がある)ごとに表を作成し、最終製品の内容に直接移動する手順はスキップしています。固定列とキー値のペアのメタデータのペアを作成するには?
要求は、時間の各タイプのディメンションを持っているかのように支払うことだった:
date | employee_id | type | hours | amount
2016-04-22 abc123 regular 80 3500
2016-04-22 abc123 overtime 6 200
2016-04-22 abc123 adjustment 1 13
2016-04-22 abc123 paid time off 24 100
2016-04-22 abc123 commission 600
2016-04-22 abc123 gross total 4413
あり、従業員ごとに複数の行があるが、しかしプロセスは、これが彼らならば、私たちは新しい次元をキャプチャできるようになるということですが加えられる。
データはいくつかのソースから来ていますが、私はETLについて心配しないように言われましたが、究極のテーブルを設計してどのシステムでも機能させるように言われました。それらを記入するために我々は他の人にこのフォーマットを提供する
私はそれのように一つのシステムからの生データを見ています。
date | employee_id | gross_total_amount | regular_hours | regular_amount | OT_hours | OT_amount | classification | amount | hours
それはかなり厄介です。従業員の複数行とgross_totalなどの値は、各行を繰り返します。 PTO(有給休暇)、調整、空の値、手数料などの項目を持つ分類列があります。繰返し値のため、単にデータを合計してgross_total_amountに等しくすることはできません。
とにかく、私は、各行が休暇を取った従業員の時間を表す列ベースの方法をとっているのが好きです。私もそのようにフォーマットされたデータにより使用されています
date | employee_id | gross_total_amount | commission_amount | regular_hours | regular_amount | overtime_hours | overtime_amount | paid_time_off_hours | paid_time_off_amount | holiday_hours | holiday_amount
:一つの問題は、私はので、私は必ずしもようにテーブルを作成することはできません可能な時間の可能性のある種類のすべてを知っていないということです。懸念事項は、必要な列をすべて取得できない場合や、新しいものが追加された場合です。 (例えば、出産休暇、父親休暇、死別休暇、その他の地域には夜間の労働に関する法律などがあります)
アドバイスはありますか?私の上司から私に示唆されたテーブルは実行可能な解決策ですか?
こんにちは、ありがとうございました。私は確かに各システムの生データ(テーブルを整理した)を持つテーブルを格納しています。私の上司は究極のテーブルだけを気にします。私のアプローチは、最初に各レポートのサンプルを見て、財務部門の専門家と話すことでした(最終的に生データは給与計算に使用されるため、完全な理解を持つ人がいなければなりません)。計算。だからあなたの提案は列を追加することです、そして、後で何かを追加する必要があれば? – trench
また、私の上司が示唆している行ベースの構造の用語がありますか?それは働くのが難しいようです。私はそのような構造がほとんどの場合には推奨されないことを知っています。データウェアハウスの本を読み飛ばそうとしましたが、探していたサンプルが見つかりませんでした。 – trench
元のデータをそのまま残しておけば、現在必要とされているものだけを統合データベースに追加します。これはyagni(あなたはそれを必要としないでしょう)原則の適用です。あなたの2番目の質問を考慮して、与えられた構造のどれがあなたの上司によって提案されたかについては、私は確信していません。基本的に、データモデリングの法則はデータウェアハウスにも適用されます。あなたのソリューションとあなたの上司のどこが葛藤しているのか? – TAM