0

(以前同様の質問を投稿しましたが、人事部が今日条件を変更しました)

当社の人事部門は、SAP システムからフラット ファイルの形式で自動エクスポートを行っています。フラットファイルの情報はそのように見えます。

G/L Account 4544000 Recruiting/Job Search
Company Code 0020

-------------------------- 
| Posting Date| LC amnt|
|------------------------|
| 01/01/2013 | 406.25 |
| 02/01/2013 | 283.33 |
| 03/21/2013 |1,517.18 |
--------------------------
G/L Account 4544000 Recruiting/Job Search
Company Code 0020

-------------------------- 
| Posting Date| LC amnt|
|------------------------|
| 05/01/2013 | 406.25 |
| 06/01/2013 | 283.33 |
| 07/21/2013 |1,517.18 |
--------------------------

SSIS フラット ファイル ソース接続のデータを見ると、すべての情報が 1 つの列に表示されています。デリミタをパイプに設定して使用しようとしましたが、ファイルの上部と中央にある重要でない情報が原因で、データが分離されません。

上部と中央のデータを削除してから、日付と合計を 2 つの別々の列に分割する必要があります。

これの目標は、データを分離して、実行中の年の単一の SUM を取得できるようにすることです。

Year    Total
2013    $5123.25

私はSSISでこれをやろうとしましたが、列を分離したりデータを削除したりすることはできません. そのコンポーネントのコードや操作に慣れていないため、スクリプト タスクは避けたいと考えています。

任意の支援をいただければ幸いです。

4

3 に答える 3

1

フラットファイル全体をインポートできる一時テーブルを作成し、その後SQLレベルでフィルタリングします

  1. TABLE tmp を作成します (txtline VARCHAR(MAX))

  2. BCP または SSIS ファイルを tmp テーブルに

  3. このようにクエリを実行して結果を取得します (フラット ファイルに合わせて文字列の長さを調整する必要がある場合があります)。

    WITH cte AS ( SELECT CAST(SUBSTRING(txtline,2,10) AS DATE) AS PostingDate, CAST(REPLACE(REPLACE(SUBSTRING(txtline,15,100),'|',''),',','') AS NUMERIC(19,4)) AS LCAmount FROM tmp WHERE ISDATE(SUBSTRING(txtline,2,10)) = 1 ) SELECT YEAR(PostingDate), SUM(LCAmount) FROM cte GROUP BY YEAR(PostingDate)

于 2013-08-27T20:13:10.323 に答える
0

おそらく、MS-Excel を使用してフラット ファイルを開き、パイプ文字を区切り記号として使用し、必要に応じてそこから CSV を作成できます。

于 2013-08-27T19:29:45.300 に答える