2011-11-23 8 views
6

Robię niektóre ETL w SSIS, aby zbudować niektóre zestawy danych wymiarowych. Jednym z nich jest data. Podczas generowania zestawu dat dla wymiaru mogę użyć wyszukiwania względem tego, co już jest w wymiarze daty i przekierować wszystkie, które się nie powiodą, które są przyjmowane jako nowe daty, a następnie dodawane do tabeli.Odfiltrować duplikaty z załadowanego zestawu danych w SSIS

Problem to zbiór danych, które mam, może sam zawierać zduplikowane daty. Spowoduje to błędy z unikalnymi kluczami daty podczas wstawiania do tabeli wymiarów. Tak więc szukam sposobu filtrowania wewnątrz zestawu danych, który jest załadowany w potoku SSIS.

Mogę użyć DISTINCT przy początkowym załadowaniu daty, ale data w tym przypadku to DATETIME. Muszę użyć transformacji konwersji danych później, aby zmienić ją na DATE, po prostu biorąc składnik daty. Szukam wyjątkowych dni, a wyraźne o DATETIME nie dadzą mi tego.

Nie mogę używać wyszukiwania SSIS tak jak wcześniej, ponieważ wymaga menedżera połączeń, który wskazuje na bazę danych.

Mogę powiedzieć, że miejsce docelowe OLE DB, aby nie korzystać z wkładki luzem, ignoruje wszelkie błędy. Zakłada się jednak, że jedynymi błędami będą zduplikowane daty.

Jestem całkiem nowy dla SSIS i nie byłem w stanie znaleźć narzędzia do transformacji, które pozwoli mi na porównanie z innymi wierszami w zestawie.

+0

Czy masz dostęp do indeksów wymuszających klawisz? Jeśli tak, możesz włączyć opcję 'IGNORE_DUP_KEY', która odrzuci duplikaty wstawek zamiast wygenerować błąd. – JNK

+1

Podczas przechowywania datetime, czy element czasu wyzerował lub wymusił na wspólną wartość? Biorąc pod uwagę "2011-10-10 00: 00: 00.000" i "2011-10-10 12: 12: 12.012" proces powinien wysłać tylko jeden wiersz z 2011-10-10. Czy ma znaczenie, który z nich jest wybrany? Czy możemy zrzucić komponent czasu? – billinkc

Odpowiedz

7

Można użyć transformacji sortowania i wybrać opcję usuwania duplikatów lub użyć transformacji Agregacja i używać tylko grupy według (która będzie mniej więcej taka jak DISTINCT). Zauważ, że te operacje są asynchroniczne, co oznacza, że ​​wszystkie wiersze muszą wchodzić w to zadanie, zanim będą kontynuowane, w przeciwieństwie do zadań synchronizacji, które po prostu jedzą i wypróżniają bufory wierszy, kiedy wchodzą.

Powiązane problemy