1

.csv ファイルを読み取るフラット ファイル ソースがあります。このファイルには、一部の行に数字が含まれる日時列があります。ファイルを読み取るときに、条件付き分割コンポーネントを使用して、datetime 列に数字がある行をスキップしたいと考えています。

ID 日付 PhoneNumber クエリ
1 05/01/2013 15:40 9879879877 Sometext
2 05/12/2013 8:30 9879879877 Sometext
3 2

csv ファイルは上記の形式です。Date 列に数値が含まれる場合は常に、PhoneNumber 列と Query 列が空白になり、条件付き分割で次の条件を使用して 3 行目をスキップしようとしました

電話番号!=""

条件付き分割の上記の条件により、次のエラーが発生します。

「出力 "PhoneNumber" (282)」の式 "PhoneNumber != """ は NULL に評価されますが、"コンポーネント "PhoneNumber Check" (262)" にはブール値の結果が必要です。出力のエラー行の配置を変更して、この結果を False として扱う (失敗を無視する) か、この行をエラー出力にリダイレクトする (行をリダイレクトする) ようにします。式の結果は、条件分岐のブール値である必要があります。NULL 式の結果はエラーです。

クエリ列で同じ条件を使用すると、すべての行がスキップされます

では、条件付き分割を使用して日時列に数字がある行をスキップするにはどうすればよいですか?

編集:

アップロードしようとしているファイルは次の形式です

ID 日付 PhoneNumber クエリ
1 05/01/2013 15:40 9879879877 Sometext
2 05/12/2013 8:30 9879879877 Sometext
3 2
4 05/12/2013 8:30 9879879877 Sometext
5 Some 05/12/2013 8:37 98778text
6 2013/05/12 8:30 9879879877 何らかのテキスト
7 3
8 2013/05/12
8:30 9879879877 何らかのテキスト

すべてのファイルには、スキップする必要がある約 3 ~ 4 個の障害のある行がありますが、何らかの理由で上記の例の形式では、 の行ID 3がスキップされ、の行ID 7が次のように読み取られます3" "8(数値を混同または結合する方法の一部です)。Date行 withの列ID 7は、次の行全体、行 with ID 8) および行 with のすべての列は、単一の行ID 8で行 with 行と読み取られ、行 withID 7のすべての空白列ID 7はスキップされます。すでにメモ帳でファイルを開き、その特定の行のコンマの数を確認しましたが、それらは正しいです。ファイルに問題がありますか、それともパッケージ自体に何か問題がありますか?

4

1 に答える 1

2

Null条件もチェックする必要があります

ISNULL([PhoneNumber]) || [PhoneNumber] != ""

また

ISNULL([PhoneNumber]) || LEN[PhoneNumber] != 0

それは私のために働いています

サンプルの日付:-

ここに画像の説明を入力

retain NULL value from the Sourceフラット ファイル ソース コンポーネントでオプション オプションを選択していません

条件付こぼれ式

ここに画像の説明を入力

結果 :

ここに画像の説明を入力

上の画像では 3 行目が破棄されています。

ところで、無効な DateTime 値を含む行を単純に無視したい場合は、以下の提案に従ってください

単に日付列を検証したい場合は、3 つの方法があります:-

1. 列の種類をフラット ファイル ソースDatetimeの代わりに変更し、エラー行をファイルまたはテーブルに変更します。stringredirect

2. を使用しderived transformationて列をキャストしDT_DBTIMESTAMP、再度エラー行をリダイレクトします。

3.scriptコンポーネントを使用し、C# または Vb コードを記述して [date] 列を次のように解析します。

row.ValidDate = DateTime.Parse(row.Date);

で出力列ValidDateを作成しますScript component

于 2013-05-23T06:18:33.973 に答える