이 섹션에서는 여러 연산자와 함수를 결합하는 고급 식의 예를 제공합니다. 선행 제약 조건 또는 조건부 분할 변환(Conditional Split Transformation)에 식이 사용되는 경우, 그 식은 반드시 부울로 평가되어야 합니다. 그러나 이 제한은 속성 식, 변수, 파생 열 변환 또는 For 루프 컨테이너에 사용되는 식에는 적용되지 않습니다.
다음 예제에서는 AdventureWorks 및 AdventureWorksDW2012Microsoft SQL Server 데이터베이스를 사용합니다. 각 예제는 사용하는 테이블을 식별합니다.
부울 식
이 예제에서는 Product 테이블을 사용합니다. 식은 SellStartDate 열의 월 항목을 평가하고 월이 6월 이상인 경우 TRUE를 반환합니다.
DATEPART("mm",SellStartDate) > 6이 예제에서는 Product 테이블을 사용합니다. 식은 ListPrice 열을 StandardCost 열로 나눈 반올림된 결과를 평가하고 결과가 1.5보다 크면 TRUE를 반환합니다.
ROUND(ListPrice / StandardCost,2) > 1.50이 예제에서는 Product 테이블을 사용합니다. 이 식은 세 가지 작업이 모두 TRUE로 평가되면 TRUE를 반환합니다. Size 열과 BikeSize 변수에 호환되지 않는 데이터 형식이 있는 경우 두 번째 예제와 같이 식에 명시적 캐스트가 필요합니다. DT_WSTR로의 변환은 문자열의 길이를 포함합니다.
MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize MakeFlag == TRUE && FinishedGoodsFlag == TRUE && Size != (DT_WSTR,10)@BikeSize이 예제에서는 CurrencyRate 테이블을 사용합니다. 식은 테이블과 변수의 값을 비교합니다. FromCurrencyCode 또는 ToCurrencyCode 열의 항목이 변수 값과 같고 AverageRate의 값이 EndOfDayRate의 값보다 큰 경우 TRUE를 반환합니다.
(FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate이 예제에서는 Currency 테이블을 사용합니다. Name 열의 첫 번째 문자가 a 또는 A가 아니면 식이 TRUE를 반환합니다.
SUBSTRING(UPPER(Name),1,1) != "A"다음 식은 동일한 결과를 제공하지만 한 문자만 대문자로 변환되므로 더 효율적입니다.
UPPER(SUBSTRING(Name,1,1)) != "A"
부울이 아닌 식
부울이 아닌 식은 파생 열 변환, 속성 식 및 For 루프 컨테이너에 사용됩니다.
이 예제에서는 연락처 테이블을 사용합니다. 이 식은 FirstName, MiddleName 및 LastName 열에서 선행 및 후행 공백을 제거합니다. Null이 아닌 경우 MiddleName 열의 첫 글자를 추출하고, FirstName 및 LastName의 값과 중간 이니셜을 연결하고, 값 사이에 적절한 공백을 삽입합니다.
TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)이 예제에서는 연락처 테이블을 사용합니다. 식은 인사말 열의 항목의 유효성을 검사합니다. 인사말 항목 또는 빈 문자열을 반환합니다.
(Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""이 예제에서는 Product 테이블을 사용합니다. 이 식은 색 열의 첫 번째 문자를 대문자로 변환하고 나머지 문자를 소문자로 변환합니다.
UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))이 예제에서는 Product 테이블을 사용합니다. 이 식은 제품이 판매된 개월 수를 계산하고 SellStartDate 또는 SellEndDate 열에 NULL이 포함된 경우 "Unknown" 문자열을 반환합니다.
!(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"이 예제에서는 Product 테이블을 사용합니다. 이 식은 StandardCost 열의 마진을 계산하고 결과를 소수점 이하 두 자리로 반올림합니다. 결과는 백분율로 표시됩니다.
ROUND(ListPrice / StandardCost,2) * 100
관련 작업
관련 내용
기술 자료, SSIS 식 요약집, pragmaticworks.com 웹사이트