2017-04-16 91 views
0

嗯,我有一個維度日期表,它有兩個屬性月和年,就像它寫在腳本中,月份(mois)是我的主鍵。和我在同一個月中,在源文件展示中有不同的一年。那麼我應該怎麼做 ?把他們全部或我應該使用不同的?加載數據到維度日期表

我的源文件是excel plus。我需要從數據庫pubs中獲取表格銷售數據(ord-date)。

PS:我使用SSIS(視覺工作室)

這是我的源日期

this is my source date

這是我創造我的尺寸日表引起我們的教授告訴我們(不需要細節)

query

我知道如何從excel中導入數據,並將日期分開。我只有從我加載到維度表時,我發現一個問題。我的問題是我有例如2日期(僅月和年)05/1995和05/1995,我想將它們加載到我的維度表中,但我不能讓我的月份作爲我的主鍵。和主鍵應該是唯一的

+0

這還不清楚,你的目標是什麼,你想要構建哪個報告或分析?你的問題取決於你的目標。 – Hadi

+0

@hadi我想建立數據倉庫。 –

+0

你必須展示你嘗試過什麼。如果你不顯示任何努力,沒有人會幫助你在計算器上做功課 – Hadi

回答

1
  • 您必須添加一個DataFlow Task包含一個Excel Source - >Script Component - > 2X OLEDB Destination
  • 在腳本組件,您要添加新的輸出Dim Date 2列MonthYear,並將Synchronous Input屬性設置爲none

enter image description here

  • 第一輸出將包含含有其他的數據列,它是同步到輸入緩衝器。
  • 在腳本中,您必須創建一個存儲不同月份的列表,並且每次找到新月份時都會生成一個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 

這樣,你將在尺寸表中沒有重複的,此外,如果這個包應該定期運行,你可以添加一個Execute SQL Task是得到所有方面,從數據倉庫,並將它們加載到使用腳本組件創建的列表一個Object可變

  • 最後DimDate輸出列映射到第一OLEDB destination和第一輸出列到另一目的地
+0

不,我不想創建日期維度,我已經擁有它。我正試圖將數據加載到它! –

+0

你的問題不清楚!請編輯它並更具體。還指定數據源類型 – Hadi

+0

也是您創建日期維度的方式不正確。 – Hadi