Trong tác vụ dataflow SSIS, chúng tôi có một chuyển đổi cột dẫn xuất với khoảng 100 cột (về cơ bản chuyển đổi dữ liệu chuỗi đầu vào thô thành các biến được nhập). Khi nhiệm vụ này thất bại, liệu có cách nào để nói mà cột gây ra sự thất bại, để đăng nhập vào mục đích? Các lựa chọn thay thế khác mà tôi có thể nghĩ đến là một tác vụ tập lệnh tùy chỉnh để thực hiện từng chuyển đổi riêng lẻ (yuck) hoặc một chuyển đổi cột dẫn xuất riêng cho từng điểm dữ liệu (gấp đôi yuck).
Về cơ bản tôi chỉ muốn có thể định hướng lại các hàng thất bại và biết tại sao chúng thất bại.
Vì vậy, một ví dụ. Gói của chúng tôi đang được sử dụng để cho phép người dùng tải lên hàng loạt vào cơ sở dữ liệu của chúng tôi bằng bảng tính Excel. Vì vậy, giả sử bảng tính trải rộng trông như thế này (ngoại trừ có hàng trăm cột):
+--------+-----------------+---------+------------+---------+
| Text1 | Number1 | Number2 | DateTime1 | Text2 |
+--------+-----------------+---------+------------+---------+
| Spring | 1 | 1 | 1/1/0001 | Flowers |
| Summer | 2 | 2 | 6/1/2015 | Sweaty |
| Fall | N/A | 3 | 10/31/2099 | Crunchy |
| Winter | This is garbage | 4 | 12/12/2020 | Icy |
+--------+-----------------+---------+------------+---------+
Trong trường hợp này, chúng tôi muốn Mùa xuân, Mùa hè và Mùa thu thành công. Mùa thu có giá trị null cho Number1
. Cột dẫn xuất sẽ có logic trông giống như thế này (không phải cú pháp hợp lệ, chỉ là logic)
sanitizedNumber1 = Number1 == "N/A" ? null : cast(Number1 as int)
Winter
sẽ được chuyển hướng xuống đường dẫn lỗi và đăng nhập. Có cách nào để biết cột dẫn xuất không thành công? Một lần nữa, chúng ta có khoảng 100 đầu vào đang được xử lý trong chuyển đổi này theo cách tương tự. Tôi muốn có thể đăng nhập một cái gì đó như:
Bản ghi nhập "Mùa đông" không thành công do dữ liệu không hợp lệ trong "Number1"
Nó không nhất thiết phải là định dạng này, nhưng bất cứ điều gì cho phép người dùng có thể xác định duy nhất điểm dữ liệu xấu sẽ được chấp nhận. Tôi biết điều này có thể sử dụng thành phần tập lệnh và thực hiện chuyển đổi theo cách thủ công (đó là điều chúng tôi sẽ phải làm nếu không có tùy chọn nào tốt hơn) nhưng nếu có thể chỉ cần sửa đổi Chuyển đổi cột có nguồn gốc để cung cấp một cái gì đó dọc theo các dòng này Tôi muốn làm điều đó thay vì thực hiện lại toàn bộ thành phần trong một tập lệnh.