2012-06-18 55 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中,您所谈论的分组也无法完成,并且会产生正确的结果。

注意:如果您担心修改目标数据模型,那么也许您可以像我之前提到的那样对其进行标准化,然后通过视图将其非规范化。你甚至可以创建一个索引视图,以便在读取时加快速度(据我所知,索引视图应该是可能的,因为你拥有的只是两个表之间的内连接)。