2009-11-06 24 views
5

Đây là câu hỏi về các câu lệnh SQL Server Integration Services (SSIS) (tôi khá mới với nó).Làm thế nào để viết SSIS chuyển đổi/biểu hiện trường hợp?

Tôi muốn viết biểu thức chuyển đổi/trường hợp trong biến đổi Cột có nguồn gốc - về cơ bản cột mới có thể có 5 giá trị có thể khác nhau, dựa trên giá trị của cột đầu vào. Tất cả những gì tôi nhận được từ Google là (điều kiện)? (giá trị thực): kỹ thuật (giá trị sai), nhưng điều này chỉ cung cấp cho hai giá trị có thể. Các biểu thức SSIS có biểu thức kiểu chuyển đổi/kiểu chữ không?

Tôi đã nghĩ đến việc sử dụng các biến đổi cột có nguồn gốc tuần tự hoặc tạo bảng tra cứu tạm thời, nhưng điều đó có vẻ phức tạp hơn.

Cảm ơn.

Trả lời

13

Tôi đã sử dụng câu lệnh if-elseif-else tương đương để giải quyết vấn đề, như sau:

(condition1)? (giá trị thực 1): (điều kiện 2)? (true value2): (false value)

3

Mặc dù, về mặt kỹ thuật, câu trả lời của avesse sẽ hoạt động, viết/duy trì biểu thức không phải là nhiệm vụ thú vị nhất.

Để tránh viết các biểu thức phức tạp trong phép chuyển đổi cột có nguồn gốc, tôi khuyên bạn nên sử dụng chuyển đổi tập lệnh. Làm điều đó cho phép bạn sử dụng mã .NET để viết một tuyên bố switch, đẹp hơn rất nhiều để viết và duy trì. Đồng nghiệp của bạn sẽ đánh giá cao nó!

+2

Tôi không nghĩ như vậy. Bạn có thể viết và duy trì các biểu thức phức tạp như bạn muốn, điều kiện, bạn nên hiểu nó. Điều gì xảy ra nếu nhà phát triển ETL là một newbie thành C#? Tôi sẽ tránh biến đổi kịch bản càng nhiều càng tốt. (Chỉ quan điểm của tôi). – Aditya

+1

@Aditya Thành thật mà nói, tôi sẽ không tin tưởng một nhà phát triển ETL không hiểu các biểu thức logic cơ bản trong C#/VB.NET. Hãy tưởng tượng rằng cùng một nhà phát triển phải thêm điều kiện thứ sáu vào ..? ..: ..? ..: ..? ..: (và vân vân) biểu hiện. Rất có thể là kết quả này trong một lỗi. Nhưng tất cả mọi người được hưởng ý kiến ​​riêng của họ tất nhiên! :) –

2

Đơn giản chỉ cần cấu trúc của bạn: báo cáo như xếp chồng lên nhau

@[User::SomeVariable] == 2 ? "SomeVariable is 2" 
: 
@[User::SomeVariable] == 3 ? "SomeVariable is 3" 
: 
@[User::SomeVariable] == 4 ? "SomeVariable is 4" 
: 
"SomeVariable is not 2,3,4 is actually" + @[User::SomeVariable] 
Các vấn đề liên quan