2016-07-12 8 views
0

私はVSとSSISを初めて使用しています。Visual Studio SSISスクリプト変換:平均と数を取得

日付型秒

2016年7月7日、個人400

2016/07:私は現在、このようになりますスクリプトコンポーネント変換エディタを使用してVisual Studioで持っているデータを統合しようとしています/ 07事業300

2016年7月7日の事業600

、それはこのように見えるように変換:

日付型avgSeconds totalRows

2016年7月7日、個人400 1

2016年7月7日の事業450 2

基本的には、カウントおよびタイプと日付の平均をとります。 VB.netとC#の両方のオプションを試してみました。どのように私はこれを行うことができますについて誰もが考えを持っていますか?

私はVS 2012を使用しています。私はInput0_ProcessInputRowを通過し、最後に出力に書き込むときに、すべての数を維持するためにtempまたはバッファテーブルを作成する必要があると思っています。これを行う方法を理解していない。どんな助けでも大歓迎です!!

+0

実行SQLタスクよりもスクリプトを使用する理由はありますか?これは、AVGとGroup Byを使用した簡単なクエリのようです。 –

+0

ええ、私は2つの別々の場所からデータを取得し、一緒に参加しています。 – tjayne13

+0

結合されたデータをステージングテーブルにロードし、それに対して集約クエリを実行する方法はありますか?私は、手続き型スクリプトを使用することのコーディングと潜在的なメモリの問題を回避する方法を考えています。 –

答えて

0

あなたのコメントに基づいて、これは機能するかもしれません。マージを行いますデータフロータスクを設定

は、ステージング表にデータを送信し、データ https://www.simple-talk.com/sql/ssis/ssis-basics-using-the-merge-join-transformation/

を組み合わせることが参加します。これは、テーブルのドロップダウンの横にある[新規]をクリックすると、oledbの宛先によって自動的に作成されます。このパッケージを再実行する場合は、データフロータスクの前にexecute sqlタスクを追加して、このステージングテーブルを削除するか、またはこのステージングテーブルを切り捨てる必要があります。

集計クエリでexecute sqlタスクを作成します。あなたの状況に応じて、インサートが機能します。何かのように:あなたは、インサートの生産の表では、集約した後、複数の変換を適用する必要がある場合のデータフロータスクでソースとして、上記のクエリを使用して、マイナスができ

Insert ProductionTable 
Select date, type, AVG(Seconds) avgSeconds, Vount(*) totalRows 
    From StagingTable 
    Group By date, type 

+0

大変大変ありがとう、私はこれを試してみるつもりです。ステージングテーブルを入れるためにoledbデータベースを作成する必要があると思いますか? – tjayne13

+0

目的のデータベースにテーブルを作成してください。それ以外の場合は、一時表を使用して調べることができます。 http://stackoverflow.com/questions/5631010/how-to-create-a-temporary-table-in-ssis-control-flow-task-and-then-use-it-in-dat –

関連する問題