2016-05-02 1 views
1

Dans un projet SSIS, je crée des expressions pour créer des chaînes de connexion avec des dates du jour de la semaine précédent. Par exemple, si aujourd'hui c'est lundi, je récupère les fichiers de vendredi. Si aujourd'hui c'est mardi, je récupère les fichiers de lundi, et ainsi de suite.Problème d'expression avec la logique conditionnelle dans SSIS 2008

Pour l'exemple lundi où je viens chercher des fichiers à partir il y a 3 jours, j'ai créé l'expression réussie suivante:

(DT_WSTR, 2)DATEPART("mm", GETDATE())==(DT_WSTR, 2)DATEPART("mm",DATEADD("dd" , -3, GETDATE())) ? "\\\\Sfa14\\tsibwdfa$\\EPSI Extracts\\Daily_Rec_Counts\\BWH_EPSI_Rec_Cnt_"+(DT_WSTR, 4) DATEPART("yyyy",GETDATE())+Right("0"+(DT_WSTR, 2)DATEPART("mm", DATEADD("dd" , -0, GETDATE())),2)+Right("0"+(DT_WSTR, 2)DATEPART("dd", DATEADD("dd" , -3, GETDATE())) ,2): "\\\\Sfa14\\tsibwdfa$\\EPSI Extracts\\Daily_Rec_Counts\\BWH_EPSI_Rec_Cnt_"+(DT_WSTR, 4) DATEPART("yyyy",GETDATE())+Right("0"+(DT_WSTR, 2)DATEPART("mm", DATEADD("mm" , -1, GETDATE())),2)+Right("0"+(DT_WSTR, 2)DATEPART("dd", DATEADD("dd" , -3, GETDATE())) ,2)+".txt"   

Il évalue à \ Sfa14 \ tsibwdfa $ \ EPSI Extraits \ Daily_Rec_Counts \ BWH_EPSI_Rec_Cnt_20160429.txt.

Pour l'exemple où je ne regarde que le jour précédent, j'ai utilisé la même structure pour créer le code suivant, où les -3 ont été changés en -1s.

(DT_WSTR, 2)DATEPART("mm", GETDATE())==(DT_WSTR, 2)DATEPART("mm",DATEADD("dd" , -1, GETDATE())) ? "\\\\Sfa14\\tsibwdfa$\\EPSI Extracts\\Daily_Rec_Counts\\BWH_EPSI_Rec_Cnt_"+(DT_WSTR, 4) DATEPART("yyyy",GETDATE())+Right("0"+(DT_WSTR, 2)DATEPART("mm", DATEADD("dd" , -0, GETDATE())),2)+Right("0"+(DT_WSTR, 2)DATEPART("dd", DATEADD("dd" , -1, GETDATE())) ,2): "\\\\Sfa14\\tsibwdfa$\\EPSI Extracts\\Daily_Rec_Counts\\BWH_EPSI_Rec_Cnt_"+(DT_WSTR, 4) DATEPART("yyyy",GETDATE())+Right("0"+(DT_WSTR, 2)DATEPART("mm", DATEADD("mm" , -1, GETDATE())),2)+Right("0"+(DT_WSTR, 2)DATEPART("dd", DATEADD("dd" , -1, GETDATE())) ,2)+".txt" 

Ce à \ Sfa14 évalue \ tsibwdfa $ \ EPSI Extraits \ Daily_Rec_Counts \ BWH_EPSI_Rec_Cnt_20160501, sans l'extension txt. Je ne sais pas pourquoi je perds le .txt.

En essayant d'isoler, j'ai trouvé que mon problème se situe seulement dans la partie booléenne du conditionnel. Changer le -3 en -1 est ce qui déclenche le retrait du fichier .txt.

J'ai essayé d'autres valeurs numériques -2 à -9 et ils créent tous la chaîne correcte. -0 et -1 sont les seuls à laisser tomber le fichier .txt. J'ai vérifié que les deux côtés de l'expression booléenne évaluent à 5, pas NULLS. Comme les autres valeurs numériques semblent fonctionner correctement, je me demande s'il existe une restriction de syntaxe pour -0 ou -1 en fonction de la façon dont j'ai configuré le booléen.

Ceci est mon premier article; S'il vous plaît laissez-moi savoir si j'ai besoin d'inclure de la documentation supplémentaire. Merci beaucoup!

Répondre

0

J'ai finalement trouvé le problème. J'avais omis le + ". Txt" pour le vrai morceau de l'expression.