Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng SSIS, Làm cách nào để tìm các thành phố có dân số đông nhất?

Hoàn toàn đồng ý với @PaulStock rằng các tập hợp tốt nhất là để lại cho hệ thống nguồn. Tổng hợp trong SSIS là một thành phần chặn hoàn toàn giống như một loại sắp xếp và tôi đã đã đưa ra lập luận của tôi về điểm đó .

Nhưng đôi khi thực hiện các thao tác đó trong hệ thống nguồn sẽ không hoạt động. Điều tốt nhất mà tôi có thể nghĩ ra là về cơ bản xử lý dữ liệu gấp đôi. Đúng vậy, nhưng tôi không bao giờ có thể tìm ra cách để vượt qua một cột mà không bị ảnh hưởng. Đối với các tình huống Tối thiểu / Tối đa, tôi muốn điều đó như một tùy chọn nhưng rõ ràng một cái gì đó giống như một Tổng sẽ khiến thành phần khó biết hàng "nguồn" mà nó gắn với.

2005

Một triển khai năm 2005 sẽ giống như thế này. Hiệu suất của bạn sẽ không được tốt, trên thực tế có một số mức độ lớn từ mức tốt vì bạn sẽ có tất cả các chuyển đổi chặn này ngoài việc phải xử lý lại dữ liệu nguồn của mình.

Hợp nhất tham gia

2008

Trong năm 2008, bạn có tùy chọn sử dụng Trình quản lý kết nối bộ nhớ cache điều này sẽ giúp loại bỏ các chuyển đổi chặn, ít nhất là ở những nơi nó quan trọng, nhưng bạn vẫn sẽ phải trả chi phí xử lý gấp đôi dữ liệu nguồn của mình.

Kéo hai luồng dữ liệu vào canvas. Đầu tiên sẽ điền trình quản lý kết nối bộ nhớ cache và phải là nơi quá trình tổng hợp diễn ra.

Bây giờ bộ nhớ đệm có dữ liệu tổng hợp trong đó, hãy thả tác vụ tra cứu vào luồng dữ liệu chính của bạn và thực hiện tra cứu đối với bộ nhớ đệm.

Tab tra cứu chung

Chọn trình quản lý kết nối bộ nhớ cache

Ánh xạ các cột thích hợp

Thành công lớn

Tác vụ tập lệnh

Cách tiếp cận thứ ba mà tôi có thể nghĩ ra, 2005 hoặc 2008, là viết nó theo cách của riêng bạn. Theo nguyên tắc chung, tôi cố gắng tránh các tác vụ kịch bản nhưng đây là một trường hợp mà nó có thể có ý nghĩa. Bạn sẽ cần đặt nó thành chuyển đổi tập lệnh không đồng bộ nhưng chỉ cần xử lý các tập hợp của bạn trong đó. Nhiều mã hơn để duy trì nhưng bạn có thể tránh gặp rắc rối khi xử lý lại dữ liệu nguồn của mình.

Cuối cùng, như một lời cảnh báo chung, tôi sẽ điều tra xem tác động của các mối quan hệ sẽ ảnh hưởng gì đến giải pháp của bạn. Đối với tập dữ liệu này, tôi mong đợi thứ gì đó giống như Guelph sẽ bất ngờ phình to và buộc Toronto nhưng nếu nó xảy ra, thì gói phải làm gì? Ngay bây giờ, cả hai sẽ dẫn đến 2 hàng cho Ontario nhưng đó có phải là hành vi dự định không? Tất nhiên, script cho phép bạn xác định điều gì sẽ xảy ra trong trường hợp ràng buộc. Bạn có thể chịu được giải pháp năm 2008 trên đầu của nó bằng cách lưu vào bộ nhớ đệm dữ liệu "bình thường" và sử dụng dữ liệu đó làm điều kiện tra cứu của bạn và sử dụng tổng hợp để kéo lại chỉ một trong các mối quan hệ. 2005 có thể làm điều tương tự chỉ bằng cách đặt tổng hợp làm nguồn bên trái cho phép liên kết hợp nhất

Chỉnh sửa

Jason Horner đã có một ý tưởng hay trong nhận xét của mình. Một cách tiếp cận khác sẽ là sử dụng phép biến đổi đa hướng và thực hiện tổng hợp trong một luồng và đưa chúng trở lại với nhau. Tôi không thể tìm ra cách làm cho nó hoạt động với một liên minh nhưng chúng tôi có thể sử dụng các loại và hợp nhất liên kết giống như ở trên. Đây có lẽ là một cách tiếp cận tốt hơn vì nó giúp chúng ta tiết kiệm được rắc rối khi xử lý lại dữ liệu nguồn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt cơ sở dữ liệu mặc định trong Sql Server từ mã?

  2. Tại sao câu lệnh Sql này (với 2 phép nối bảng) mất 5 phút để hoàn thành?

  3. Chọn nhóm hàng phù hợp với tất cả các mục trong danh sách

  4. Xóa các hàng trùng lặp trong SQL Server

  5. SQL Server Fulltext tìm kiếm không tìm thấy hàng của tôi