2012-11-07 27 views
5

Bên trong luồng dữ liệu, có thể thực hiện tra cứu, chèn các hàng không khớp, tra cứu lại và sau đó tiếp tục với tập dữ liệu đầy đủ (gốc) không?Làm cách nào để tiếp tục quá trình sau khi chèn các hàng tra cứu không phù hợp vào bảng?

Tôi không thể thấy cách bạn nhận/sử dụng lại các hàng được chèn sau khi họ đã đi đến số OLE DB Destination, cũng như tôi không thể thấy chi tiết số Multicast -trong).

Nếu không thể thực hiện được bên trong luồng dữ liệu, tôi có phải lặp lại tất cả logic lọc của mình trong tác vụ luồng dữ liệu trước đó chỉ đơn giản là thực hiện tra cứu lần đầu tiên?

Đây có thể là một câu hỏi rõ ràng/đã được trả lời, nhưng tôi không thể tìm thấy nhiều sau khi tìm kiếm.

+0

Tôi không hiểu. Bạn có Dữ liệu của truy vấn đầu tiên, bạn cũng có dữ liệu bạn muốn chèn. Tại sao bạn không kết hợp chúng và sử dụng chúng một cách riêng biệt? Multicast dữ liệu chèn vào đích OLEDB và đến một điểm đến công đoàn. Gửi dữ liệu gốc cho liên minh này (và phát đa hướng chúng ở bất kỳ nơi nào bạn muốn) và bây giờ bạn có toàn bộ tập dữ liệu. –

+0

Tôi có cần phải chờ cho đến khi quá trình chèn hoàn thành để tôi có thể chạy lại tra cứu và sau đó tiếp tục đường dẫn bình thường không? – PeterX

Trả lời

3

Điều này là không thể trong một luồng dữ liệu duy nhất. Có rất nhiều "giải pháp" xung quanh nếu bạn google đủ nhưng họ bỏ qua thực tế kiến ​​trúc mà các hàng đi xuống một luồng dữ liệu trong bộ đệm/lô, xử lý song song.

Vì vậy, hình ảnh bạn có nhiều hàng "mới" đến trong 2 bộ đệm liền kề. Không có cách nào để đảm bảo rằng việc xử lý dòng "mới" của bạn từ bộ đệm 1 đã được hoàn thành trước khi bộ đệm 2 truy cập tra cứu ngược dòng của bạn. Điều này sẽ dẫn đến nhiều hàng "mới" được chèn vào bảng mục tiêu tra cứu của bạn cho cùng một khóa.

Bạn cần có một Luồng dữ liệu ngược dòng để thực hiện tất cả các yêu cầu tra cứu bắt buộc. Đây sẽ là một giải pháp hiệu quả hơn tổng thể trong thời gian chạy, vì chèn tra cứu của bạn có thể sử dụng Fast Load và Table Lock và Lookup phía dưới của bạn có thể là Full Cache.

+0

Cảm ơn. Vì vậy, có lẽ câu hỏi bây giờ cần phải tập trung vào "làm cách nào để tái sử dụng cùng một logic trước khi tra cứu" trong cả luồng dữ liệu ngược dòng và luồng dữ liệu hướng xuống. Có lẽ một gói có thể tái sử dụng thực hiện các bước tương tự, nhưng tôi không thể nhìn thấy một con đường khả thi với điều đó được nêu ra. – PeterX

+0

Có "tái sử dụng logic" sẽ được tốt đẹp nhưng thực tế - đây là SSIS. Có lẽ bạn có thể di chuyển mã SQL vào Biến, và di chuyển Tra cứu đến một nhiệm vụ lưu lượng dữ liệu tiền nhiệm để xây dựng bộ đệm tra cứu, nhưng đó có thể là về nó để tái sử dụng. –

Các vấn đề liên quan