2016-07-12 4 views
0

Ich bin neu in VS und SSIS. Ich versuche, Daten zu konsolidieren, die ich in Visual Studio Editor mit dem Script Component Transformation, die derzeit wie folgt aussieht:Visual Studio SSIS Skriptumwandlung: Get Average und Count

Datumsart Sekunden

2016/07/07 persönliche 400

2016/07/07 Geschäft 300

2016.07.07 Geschäft 600

und verwandeln sie so aussehen:

Datumsart avgSeconds totalRows

2016/07/07 persönliche 400 1

2016/07/07 Geschäft 450 2

Grundsätzlich Zählen und den Durchschnitt für Art und Datum nehmen. Ich habe versucht sowohl VB.net und C# Optionen und offen für beide (neu für beide). Hat jemand irgendwelche Ideen, wie ich das machen kann?

Ich benutze VS 2012. Ich denke, ich muss eine Temp-oder Puffer-Tabelle erstellen, um alles zu zählen, wie ich durch die Input0_ProcessInputRow gehen und dann auf die Ausgabe am Ende schreiben, kann ich einfach ' t herausfinden, wie man das macht. Jede Hilfe wird sehr geschätzt !!

+0

Gibt es einen Grund, warum Sie ein Skript über eine SQL-Task ausführen möchten? Dies sieht wie eine einfache Abfrage mit AVG und Group By aus. –

+0

Ja, ich nehme Daten von zwei verschiedenen Orten und verbinde sie miteinander. – tjayne13

+0

Wie lädt man Daten, die zu einer Staging-Tabelle hinzugefügt wurden, und führt dann eine Aggregat-Abfrage dagegen aus? Ich denke über Möglichkeiten nach, die Codierung und mögliche Speicherprobleme der Verwendung eines prozeduralen Skripts zu vermeiden. –

Antwort

0

Basierend auf Ihren Kommentaren könnte dies funktionieren.

eine Datenflußtask einrichten, die eine Zusammenführung tun kommen Sie mit den Daten zu einem Zwischenspeichertabelle https://www.simple-talk.com/sql/ssis/ssis-basics-using-the-merge-join-transformation/

Senden Sie die Daten zu kombinieren. Dies kann automatisch durch das oledb-Ziel erstellt werden, wenn Sie auf "Neu" neben dem Dropdown-Menü der Tabelle klicken. Wenn Sie dieses Paket erneut ausführen möchten, müssen Sie vor dem Datenflusstask, dem Sie diese Stagingtabelle löschen oder ausschneiden möchten, eine sql-Aufgabe ausführen.

Erstellen Sie eine SQL-Aufgabe ausführen mit Ihrer Aggregationsabfrage. Abhängig von Ihrer Situation könnte ein Einsatz funktionieren. Etwas wie:

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

Sie auch die obige Abfrage verwenden können, minus den Einsatz Produktions Tabelle als Quelle in einem Datenflußtask den Fall, dass Sie mehrere Transformationen nach der Aggregation anzuwenden.

+0

Okay, vielen Dank, ich werde es versuchen. Ich vermute, dass Sie eine OLEDB-Datenbank erstellen müssen, um die Staging-Tabelle zu erstellen? – tjayne13

+0

Hoffentlich können Sie eine Tabelle in der Zieldatenbank erstellen. Andernfalls können Sie prüfen, ob Sie eine temporäre Tabelle verwenden. http://StackOverflow.com/Questions/5631010/how-to-create-a-temporary-table-in-ssis-control-flow-task-and-hen-use-it-in-dat –