2012-06-18 81 views
3

我有一個employeeemployee_id,nameworking_division,其中employee_id是主鍵。我有一個Excel源文件,列出了員工進入他們的工作時間以及他們所做的工作類型,所屬公司的哪些部門等等這些列的Excel源碼。SQL Server BIDS,SSIS聚合和組由

因此,對於任何給定的一天員工,我可以有多行顯示他們的工作類型,他們工作的部門和他們向該部門收取的時間。

我該如何把這個放入OLE DB中,其中employee_id是主鍵?

我想通過employee_id使用聚合變換進行分組,但employee_idworking_divisions不是一對一的。因此,通過對這兩列進行操作的組將試圖將相同的employee_id插入到employee表(employee_id是主鍵!)如果我不包含用於聚合轉換的working_division,那麼我將丟失數據。

如何將我的數據按employee_id分組,並仍保留該行的所有其他列?

感謝您的幫助!

+0

經歷過我的頭腦的第一件事是:爲什麼你不在目標表上修改你的PK?如果employee_id與working_division不是一對一的關係,那麼無論以哪種方式分組,都無法獲得所有數據。也許我錯過了一些東西。 –

+0

@marceln我需要employee_id作爲PK。基本上我有一個非常大的無組織數據源,我將它分解成4到5個獨立的表格以適合我的模型,這樣我就可以通過一些數據挖掘算法來理解數據。 – CodeKingPlusPlus

+2

您的源數據可能看起來像'10,Bob,Div1'和'10,Bob,Div2',並且您的願望是將該數據在表中滾動爲'10,Bob,?'?換句話說,數據應該如何彙總以滿足Employee表的設計? – billinkc

回答

5

我需要employee_id作爲PK。基本上我有一個非常大的 無組織的數據源,而我除了把它分成4〜5 單獨的表,以適應我的模型,所以我可以讓數據的意義與 一些數據挖掘算法

OK,那你爲什麼不把employee_idworking_division分成兩個單獨的表格?第二張表應該保留僱員表的FK(所以一對多)。

在SSIS包中,您可以在employee_id的聚合之後添加一個Multicast組件,以便將數據源拆分到2個目標表中。

我認爲如果您的目標模型沒有修改,您將無法達到您想要的效果。它基本上違反了RDBMS的規則。即使在普通的SQL中,您所談論的分組也無法完成,並且會產生正確的結果。

注意:如果您擔心修改目標數據模型,那麼也許您可以像我之前提到的那樣對其進行標準化,然後通過視圖將其非規範化。你甚至可以創建一個索引視圖,以便在讀取時加快速度(據我所知,索引視圖應該是可能的,因爲你擁有的只是兩個表之間的內連接)。