2017-03-31 43 views
1

以下CSV結構和數據新的領域給出:分裂入庫時間和創造CSV

timespan,someOtherField, ... 
27.03.2017 - 31.03.2017,someOtherValue, ... 
31.03.2017,someOtherValue, ... 

我想的時間跨度分成的開始和結束。正如你所看到的,時間跨度可以是幾天(第一條記錄)或者只有一天(第二條記錄)。通過替換分隔符來拆分第一條記錄非常簡單,但我不知道如何處理第二條記錄。必須有一些邏輯將其標識爲單日(開始和結束應該是相同的值)。

所有在SSIS中完成,但我想在C#中實現它。

結果:

begin,end,someOtherField, ... 
27.03.2017,31.03.2017,someOtherValue, ... 
31.03.2017,31.03.2017,someOtherValue, ... 

回答

2

首先添加一個派生列轉換。在派生列編輯器內部,添加beginend列,其默認值爲timespan
dco

現在添加腳本組件轉換(SCT),並添加timespan, begin, end輸入列和標記begin, endReadWrite
sct cols

仍是SCT內,點擊腳本在左側窗格中,然後單擊Edit Script在對話框的底部。這將啓動一個Visual Studio實例來編輯您的C#腳本。

向下滾動到Input0_ProcessInputRow功能,使它看起來像下面這樣:

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    var times = Row.timespan.Split(new string[] { " - " }, StringSplitOptions.RemoveEmptyEntries); 
    if (times.Length > 1) 
    { 
     Row.begin = times[0]; 
     Row.end = times[1]; 
    } 
} 

保存文件,退出是VS的情況下(這將是冠軍VstaProjects),然後單擊確定退出腳本轉換編輯。

您的數據流現在應該看起來像這樣。
enter image description here

現在,如果您在該管道的底部添加數據查看器,您將看到要查找的結果。

data viewer

+0

我不能感謝你纔好索瑞爾。這工作絕對完美!我有一些腳本的預編譯二進制文件的小故障,但我能弄明白! –

1

檢查連字符的在時間跨度柱的存在。如果沒有,則對beginend使用相同的值。