3

、、およびを含むemployeeテーブルがあり、が主キーです。私は、従業員が勤務時間を入力したこれらの列などを含む Excel ソースを持っており、従業員が行った作業の種類、会社のどの部門のためのものであったかなど..employee_idnameworking_divisionemployee_id

したがって、従業員の特定の日に、仕事の種類、勤務先の部門、その部門への請求時間を示す複数の行を作成できます。

employee_idが主キーである OLE DB にこれを取得するにはどうすればよいですか?

集約変換を使用して でグループ化しようとしていますがemployee_idemployee_idworking_divisionsは 1 対 1 ではありません。したがって、これらの列の両方に対する group by 操作はemployee_idemployeeテーブルに同じものを挿入しようとします (これemployee_idが主キーです!)working_division集計変換に を含めないと、データが失われます。

employee_idデータを でグループ化し、他のすべての列をその行に保持するにはどうすればよいですか?

助けてくれてありがとう!

4

1 に答える 1

5

employee_id を PK にする必要があります。基本的に、整理されていない非常に大きなデータ ソースがあり、モデルに合わせて 4 ~ 5 個の個別のテーブルに分割して、データ マイニング アルゴリズムでデータを理解できるようにしています。

employee_idでは、 andworking_divisionを 2 つの別々のテーブルに分割してみませんか? 2 番目のテーブルは、employee テーブルへの FK を保持する必要があります (1 対多)。

SSIS パッケージでは、データ ソースを 2 つのターゲット テーブルに分割するために、 Aggregate on の直後にマルチキャストコンポーネントを追加できます。employee_id

ターゲットモデルを変更しないと、目的を達成できないと思います。基本的にRDBMSのルールに違反しています。あなたが話しているグループ化は、プレーンな SQL でも実行できず、正しい結果が得られません。

注:ターゲット データ モデルの変更が心配な場合は、前述のように正規化してから、ビューを使用して非正規化することができます。読み取り時の速度を上げるために、インデックス付きビューを作成することもできます (2 つのテーブル間の内部結合しかないため、インデックス付きビューが可能であることがわかる限り)。

于 2012-06-18T19:05:29.540 に答える