2017-03-31 8 views
1

で新しいフィールドを作成:分割タイムスパンと、次のCSV構造とデータが指定されているCSV

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

私は始めと終わりにタイムスパンを分割したいと思います。あなたが見ることができるようにtimespanは数日(最初のレコード)または唯一の一日(2番目のレコード)することができます。区切り文字を置き換えることで、最初のレコードを分割するのは簡単ですが、2番目のレコードの処理方法はわかりません。 1日として識別するロジックが必要です(開始と終了は同じ値にする必要があります)。

すべてがSSISで行われますが、私はC#でそれを実現したいと思います。

結果:タイムスパン列でハイフン文字の存在のため

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

答えて

2

最初に派生列変換を追加します。派生列エディターの内部にbeginend列を追加し、デフォルト値はtimespanです。
dco

今スクリプトコンポーネント変換(SCT)を追加し、ReadWriteとしてtimespan, begin, endとマークbegin, endの入力列を追加します。それでもSCT内部
sct cols

、左側のペインのスクリプト上でクリックし、ダイアログ下部のEdit Scriptをクリックします。これにより、C#スクリプトを編集するためのVisual Studioインスタンスが起動します。

スクロールダウンInput0_ProcessInputRow機能に、それは次のようになりますVSのインスタンスは(それはタイトルVstaProjectsになる)こと

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]; 
    } 
} 

ファイルを保存し、終了し、[スクリプト変換を終了し、[OK]をクリックします編集者。

データフローは次のようになります。
enter image description here

このパイプラインの下部にデータビューアを追加すると、探している結果が表示されます。

data viewer

+0

私はあなたに十分な感謝はありません。これは絶対に完璧です!スクリプトのあらかじめコンパイルされたバイナリでいくつかの不具合がありましたが、私はそれを理解することができました! –

1

チェック。存在しない場合は、beginendの両方に同じ値を使用します。

関連する問題