2013-07-14 45 views
0

在數據流中,我通過查詢Web服務的腳本組件獲取數據。輸出是一個包含客戶付款的表格。SSIS 2012:通過聚合獲取每個組的行

| PaymentId | CustomerId | Amount | PaymentDate | 
| 2   | 1   | 10  | 01/01/2009 | 
| 5   | 1   | 15  | 08/07/2013 | 
| 1   | 2   | 20  | 05/08/2007 | 
| 3   | 2   | 18  | 07/03/2011 | 
| 6   | 2   | 32  | 02/09/2013 | 
| 4   | 3   | 70  | 04/06/2012 | 
| 7   | 3   | 61  | 02/03/2013 | 

別的不說,我要篩選出以下每個客戶行:

  • 與量最大
  • 用最小量
  • 首付款
  • 的支付付款最近的付款

併爲每個我需要PaymentId,CustomerId,金額和PaymentDate爲以後處理。

我知道如何使用Aggregate Transforamtion,按CustomerId分組,並使用適當的最小/最大函數來獲取請求的值。

但是獲得完整ROWS的最佳方法是什麼?

在此先感謝!

回答

1

如果您的數據源是一個SQL數據庫,請在使用SSIS之前儘可能使用SQL。這通常會給你最好的表現。

否則,建議將Web服務中的數據轉儲到RAW文件中。原始文件對於將數據轉換爲各種轉換非常有用。 more on RAW files

+0

儘管我目前可以訪問基礎的SQL Server數據庫,但在將來遷移到ISV託管版本時,這可能會發生變化。然後我只能通過webservice-api訪問。因此,我想設計獨立於直接訪問數據庫的ETL,接受性能損失。 –

+0

對不起,我專注於問題的最後部分,忘記了提到Web服務的第一句話。另一條路徑是從Web服務器提取數據並將其放入「RAW」文件中。我發現RAW文件非常方便在進行各種轉換時對數據進行分級。 [鏈接到原始文件的信息](http://www.jasonstrate.com/2011/01/31-days-of-ssis-raw-files-are-awesome-131/) –

+0

只是爲了確保如果我採取您的觀點:我將從Web服務檢索到的數據放入RAW文件,然後將此文件用作數據流源。然後,我可以針對此文件編寫適當的SQL語句以獲取所需的行。 如果根據您的經驗,這是我的案例最有效的解決方案,我會試試看! –