1
SSIS에서 파생 열 변환 내에서 스칼라 반환 함수를 실행할 수있는 방법이 있습니까?SSIS에서 스칼라 값 함수 호출
-Scenario-
나는 기록의 UOM 열에서 UOM 값을 기준으로 가중치를 변환 내 소스 DB의 기능을 가지고있다. ETL 프로세스에서이 기능을 활용하여 내 체중 측정을 항상 파운드 화하고 싶습니다. 파생 열에서이 함수를 호출 할 수 있습니까? 그렇지 않은 경우 데이터 흐름 내에서 활용할 수있는 또 다른 변환 작업이 있습니까 (준비 열을 방지하려고합니까?).
dbo.Tasks 테이블
id | Name | netWeight | grossWeight | UOM
12 Task12 30000 50000 10
dbo.MeasurementUnits 테이블
id | Name | Shortname | Type | Precision
12 Kilogram kg 3 10000
14 Pound lb 3 10000
dbo.GetConvertedWeight 기능
ALTER FUNCTION [dbo].[GetConvertedWeight](@iWeight money, @ifromUOM int, @iToUOM int)
RETURNS money
AS
BEGIN
DECLARE @lConvertedWeight money,
@lKgToGrams money,
@lLbToGrams money,
@lOzToGrams money,
@lWeightInGrams money
--convert the weight to grams first.
SELECT @lWeightInGrams = CASE WHEN @iFromUOM = 12 THEN (ISNULL(@iWeight,0) * 1000)
WHEN @iFromUOM = 14 THEN (ISNULL(@iWeight,0) * 453.5924)
WHEN @iFromUOM = 15 THEN (ISNULL(@iWeight,0) * 28.3495)
WHEN @iFromUOM = 13 THEN (ISNULL(@iWeight,0))
ELSE ISNULL(@iWeight,0)
END
--Convert the converted weight to grams to the desired weight
SELECT @lConvertedWeight = CASE WHEN @iToUOM = 12 THEN (ISNULL(@lWeightInGrams,0)/1000)
WHEN @iToUOM = 13 THEN ISNULL(@lWeightInGrams,0)
WHEN @iToUOM = 14 THEN (ISNULL(@lWeightInGrams,0)/453.5924)
WHEN @iToUOM = 15 THEN (ISNULL(@lWeightInGrams,0)/28.3495)
ELSE (ISNULL(@lWeightInGrams,0)/453.5924)
END
RETURN @lConvertedWeight
예 함수 호출
dbo.GetConvertedWeight(dbo.Tasks.netWeight, dbo.Tasks.weightUOM, 14) AS netWeight
작업을 마친 후 (그리고 마지막으로 그 기능을 수정하고 프로 시저로 변경) 마침내이 솔루션을 사용할 수있게되었습니다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다 ;-) – rrydman