2009-01-19 6 views
0

J'essaie d'extraire la sous-chaîne trackingCode au point du délimiteur ~~. Ainsi, par exemple:cette transformation de flux de données ssis est-elle correcte?

www.test.com~~34235645463544563554

Je voudrais revenir:

www.test.com

J'utilise:

SUBSTRING(trackingCode,1,FINDSTRING(trackingCode,"~~",1) - 1)

Mais il ne fonctionne pas et je reçois une erreur:

Erreur: 0xC0049067 à aw import from file, Colonne dérivée [1562]: Une erreur s'est produite lors de l'évaluation de la fonction.

des idées? si je remplace le FINDSTRING par un numérique, cela fonctionne. Etes-vous sûr que chaque ligne a un numéro final?

Répondre

2

Vos données ne sont probablement pas conformes à vos attentes.

Faites confiance mais vérifiez. J'éviterais une transformation de colonne dérivée pour autre chose que des transformations triviales sur des données que vous savez (par des tests directs) seront toujours conformes aux attentes. Les formules sont difficiles à lire dans le format de ligne unique dans les colonnes xforms dérivées et vous avez très peu de contrôle et la possibilité d'essayer différentes options d'analyse et quelques modes d'échec/récupération.

Je recommanderais une tâche de script pour celle-ci. Vous pouvez router des lignes qui ne correspondent pas à un chemin différent et utiliser un visualiseur de données pour voir ce qui se passe avec elles.

0

Sinon, quelque chose comme ceci pourrait aider:

SUBSTRING(trackingCode+"~~",1,FINDSTRING(trackingCode,"~~",1) - 1) 
+0

le problème semble être la "-1" partie. Je ne peux pas trouver le début du délimiteur et reculer d'un espace. – thiswayup

+0

peut-être certaines des données commence par ~~ – HLGEM

+0

le délimiteur est définitivement vers la fin de la chaîne – thiswayup

1

Cela devrait fonctionner:

SUBSTRING([trackingCode],1,(FINDSTRING([trackingCode],"\~~",1) - 1))

Questions connexes