レポートのようにフォーマットされた Excel ファイルをインポートしています。つまり、一部の列は、次のように、属する行のグループごとに 1 回だけ入力されます。
CaseID |Date |Code
157207 | |
|8/1/2012 |64479
|8/1/2012 |Q9967
|8/1/2012 |99203
これらのグループ ヘッダーの 1 つ (上記の例では CaseID) を取得し、それをフィールドが空白の後続の行に使用し、次に遭遇した値を保存する必要があります。次のコードを使用して、変数 (User::CurrentCaseId) とスクリプト変換を追加しました。
public class ScriptMain : UserComponent
{
string newCaseId;
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (!Row.CaseIDName_IsNull && Row.CaseIDName.Length > 0)
newCaseId = Row.CaseIDName;
else
newCaseId = "DetailRow";
}
public override void PostExecute()
{
base.PostExecute();
if (newClaimNumber != "DetailRow")
Variables.CurrentCaseId = newCaseId;
}
基本的に、存在する場合は値を読み取り、この変数に保存しようとしています。条件付き分割を使用して、CaseID のみを持つ行を破棄し、派生列を使用して変数値を新しい列に入れ、詳細行を完成させます。残念ながら、値は常に空白です (派生列の後にデータ ビューアーが配置されています)。変数を常に固定文字列に設定するようにスクリプトを修正しました - 派生列はまだ空白です。
これは良い計画のように思えました... MS フォーラムで、変数値を設定して、同じデータ フロー タスク内でその新しい値を使用することはできないというフィードバックを受け取りました。その場合、考えられる唯一の解決策は、存在する場合は CaseID をテーブルに書き出し、存在しない場合はそれを読み戻すことです。数百万行 (複数の Excel ワークシート) でそれを行うのは本当に嫌いです。より良いアイデアはありますか?
ベスト、スコット