0

データベーステーブルにロードする前に、複数のExcelファイルを検証しています。

まず、ファイル内の有効な行数のしきい値基準がマークをNULL満たしていることを確認します。60%基準が以下60%の場合、ファイルを拒否し、60%以上のメール通知を送信し、ファイルを処理し、データをテーブルにロードして、メール通知を送信します。以下は、わかりやすくするためのサンプルテストデータです。このサンプルデータでは、以下が検証基準です。

  1. IDを指定することはできませんNULL。NULLのフラグを立てる新しい列を作成してください

  2. の場合(Non-NULL row count / total row count) < 60%、エラー通知を送信してファイルを拒否します

  3. の場合(Non-NULL row count / total row count) > 60%、ファイルを最終的な宛先に移動し、成功メッセージを送信します

サンプル入力ファイル1:

ID    Name
----- ------
1     John
2     Dave
NULL  Jonny
NULL  Kevin
NULL  David

基準を満たしていないため、これは拒否する必要があり60 percentます。

ID    Name   NULL_Flag Percent
----- ------ --------- -------
1     John       N       40
2     Dave       N       40
NULL  Jonny      Y       40
NULL  Kevin      Y       40
NULL  David      Y       40

サンプル入力ファイル2:

ID    Name
----- ------
100   Jack
200   Jill
300   Naomi
400   Tim

このファイルは60 percent基準を満たしているため処理する必要があり、データを宛先テーブルにロードする必要があります。

ID    Name   NULL_Flag Percent
----- ------ --------- -------
100   Jack       N      100
200   Jill       N      100
300   Naomi      N      100
400   Tim        N      100

SSISでこの問題にどのように取り組む必要がありますか?

4

1 に答える 1

1

各 Excel ファイルの列レイアウトが同じであると仮定すると、データ フローを構築して検証を処理し、ブール変数を設定して特定のファイルの処理を制御します。データ フローをフォローアップ タスクにリンクする優先順位の制約は、式でそのブール変数を使用します。

制御フローのスクリーンショット

データ フローは、Excel ソースとスクリプト変換セットを宛先として使用します。

データフローのスクリーンショット

スクリプト変換のコード SCR_DST_ValidateFile は次のようになります。

public class ScriptMain : UserComponent
{
    private double _nullCount = 0;
    private double _rowCount = 0;
    public override void PreExecute()
    {
        base.PreExecute();
    }

    public override void PostExecute()
    {
        base.PostExecute();
        Variables.ValidFile = ((_nullCount / _rowCount) > .6);
    }

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        _rowCount += 1;
        if (Row.ID_IsNull) _nullCount += 1;
    }

}

ここValidFileで、ブール変数の名前です。

編集:上記の制御フローのSEQ_ValidおよびSEQ_NotValidシーケンス コンテナーは、特定の要件 (電子メールの送信、ファイルの内容のデータベースへの読み込みなど) を処理するために必要なコンポーネントを表します。プレースホルダーとしてシーケンス コンテナーを使用しました。

優先順位制約の設定に関しては、次の制約からDFT_CheckIfSpreadsheetValidtoSEQ_Validは次のように構成されます。

@ValidFile 優先順位制約のスクリーンショット

DFT_CheckIfSpreadsheetValidfrom toの制約SEQ_NotValidは次のように構成されます。

!@ValidFile 優先順位制約のスクリーンショット

于 2013-02-21T21:42:21.043 に答える