Appel d'une fonction d'une valeur Scalar dans SSIS
-
13-09-2019 - |
Question
Est-il possible d'exécuter une fonction scalaire à valeur à partir d'une transformation de colonne dérivée en SSIS?
scénario du type -
J'ai une fonction dans ma source DB qui convertit des poids sur la base d'une valeur UOM dans la colonne UOM de l'enregistrement. Je veux utiliser cette fonction dans le processus ETL pour faire en sorte que mes mesures de poids sont toujours livres. Puis-je appeler cette fonction à partir d'une colonne dérivée? Sinon, est-il une autre tâche de transformation que je pourrais utiliser dans le flux de données (tente d'éviter les colonnes de mise en scène)?
table dbo.Tasks
id | Name | netWeight | grossWeight | UOM
12 Task12 30000 50000 10
table dbo.MeasurementUnits
id | Name | Shortname | Type | Precision
12 Kilogram kg 3 10000
14 Pound lb 3 10000
Fonction 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
Exemple appel de fonction
dbo.GetConvertedWeight(dbo.Tasks.netWeight, dbo.Tasks.weightUOM, 14) AS netWeight
La solution
Non. Qu'est-ce que vous voulez est un OLE DB commande pour le faire. Envoyer les résultats à une colonne de sortie et de la vie devrait être vif pour vous Peachy -. Au moins en ce qui concerne SSIS