我有一个维度日期表,它有两个属性Month和Year,就像它写在脚本中一样,而month(mois)是我的主键。和我在源文件节目中的同一个月有不同的一年。那该怎么办呢 我做?把它们全部拿走还是应该使用不同的?
我的源文件是excel plus。我有来自表销售的数据(ord-date),我需要从数据库pubs获取。
PS:我正在使用ssis(visual studio)
这是我的来源日期
这是我创建维度日期表的原因,因为我们的教授告诉我们要创建它(不需要详细信息)
我知道如何从excel导入数据,我分割了日期。我只有当我加载到维度表时才发现问题。我的问题是我有例如2个日期(仅限月份和年份)05/1995和05/1995并且我想将它们加载到我的维度表中但我不能将我的月份作为我的主键。主键应该是唯一的
答案 0 :(得分:1)
DataFlow Task
,其中包含Excel Source
- > Script Component
- > 2x OLEDB Destination
Dim Date
和Month
的新输出Year
,并将Synchronous Input
属性设置为none
。 Dim Date
输出。你的脚本应该是这样的。
Dim lstDates As New System.Collections.Generic.List(Of String)
Public Overrides Sub Input0Buffer_ProcessInputRow(ByVal Row As Input0Buffer)
If Not Row.Date_IsNull Then
Dim strMonth As String = Row.Date.ToString("MM/yyyy")
If Not lstDates.Contains(strMonth) Then
With DimDateBuffer
.AddRow()
.Month = strMonth
.Year = Right(strMonth, 4)
End With
lstDates.Add(strMonth)
End If
End If
End Sub
这样你就不会在Dimension表中出现重复,如果这个包定期运行你可以添加一个Execute SQL Task
来获取数据仓库中的所有维度并将它们加载到脚本中创建的列表中使用Object
变量的组件
DimDate
输出列映射到第一个OLEDB destination
,将第一个输出列映射到另一个目的地