2017-09-13 4 views
0

Je suis dans une situation où je souhaite trouver une valeur en double où toutes les données de colonne ne sont pas identiques dans SSIS.Suppression de Duplicate dans SSIS où toutes les colonnes ne sont pas identiques dans SSIS

Je suis conscient de le faire en utilisant la méthode de tri et d'agrégats, mais je suppose que cela peut être fait dans le cas où toutes les données de la colonne est même

ID    | Start Date | End Time | Queue Time | Talk Time| 
===============|============|==========|============|==========| 
33000017670 |9/4/2017 |9/4/2017 |0:00:10  |0:03:30 | 
33000017672 |9/4/2017 |9/4/2017 |0:00:10  |0:03:30 | 
33000017672 |9/4/2017 |9/4/2017 |0:00:12  |0:00:00 | 
33000017673 |9/4/2017 |9/4/2017 |0:00:12  |0:05:00 | 
33000017674 |9/4/2017 |9/4/2017 |0:00:12  |0:12:00 | 

Comme vous pouvez le voir ici id est à venir deux fois et c'est une clé primaire dans la table que je charge ces données. La source est Excel. Je suis conscient de supprimer cet enregistrement avant le chargement, mais je veux supprimer ce processus.

Maintenant, toutes les données de la colonne d'enregistrement ne sont pas identiques. Je veux trouver un tel dossier supprimer id qui n'ont temps de parole est 0

quelqu'un peut me aider comment je peux le faire dans SSIS

+0

s'il y a des doublons où les deux lignes ont temps de parole supérieur à 0? Voulez-vous supprimer toutes les lignes avec 0 temps de conversation même s'il ne s'agit pas d'un doublon? –

+0

Seuls les doublons qui ont un temps de conversation de 0. Et il n'y aura pas de doublons avec Talk Time supérieur à 0 –

Répondre

0

Ainsi, la méthode très simple et je pense que la meilleure pratique est aussi que vous mettez en scène toutes vos données sur une table. Et sur cette table, vous faites votre logique. De cette façon, vous aurez toujours la vérité à partir de la source, et vous pourrez ensuite ajouter autant de logique que vous le souhaitez après. Il ne sert à rien de rendre votre SSIS trop complexe. Je l'ai fait comme un fichier plat, parce que je déteste Source EXCEL, mais c'est à peu près la même chose.

enter image description here

Et puis je veux appliquer ma logique - Vous pouvez l'utiliser dans un nouveau flux de données Tâche avec une source OLDB après votre mise en scène Dataflow tâche.

Select * from (
SELECT [ID] 
    ,[StartDate] 
    ,[EndTime] 
    ,[Qtime] 
    ,[Ttime] 
    ,ROW_NUMBER() Over(partition by ID order by TTime desc) as RN 
FROM [LegOgSpass].[dbo].[TTimeTable] 
) x 

where x.RN = 1 

Résultat

enter image description here

+0

Il n'y a pas d'autre moyen de le faire. –

+0

Je ne vois pas pourquoi vous mettriez une telle logique dans ssis. C'est la meilleur façon – plaidDK