Data Quality Services – Domain management

Każdy z nas zdaje sobie sprawę z tego jak ważna jest jakość danych w organizacjach. Nawet najbardziej wyrafinowane algorytmy nie będą skuteczne jeśli dane wejściowe będą zanieczyszczone – bardzo dobrze podsumowuje to stwierdzenie “garbage in – garbage out” czyli mając śmieciowe dane na wejściu zawsze otrzymamy śmieciowe rezultaty bez względu na to co będzie pomiędzy. Dlatego też niezmiernie ważne jest to aby zadbać o jakość danych przeznaczonych do analizy raportowania czy bardziej wyszukanych zastosowań uczenia maszynowego. Przeglądając literaturę czy też kursy związane właśnie z uczeniem maszynowym czy też eksploracją danych prawie zawsze rozpoczynają się one od tematu przygotowania danych – myślę, że oprogramowanie które będziemy omawiać z całą pewnością może być w takim wypadku użyteczne. Na rynku znajdziemy bardzo dużo różnych produktów służących do zarządzania jakością danych, jako że w większości niniejszy blog poświęcony jest technologiom Microsoft to przyjrzymy się temu co ten dostawca oferuje w tym obszarze – chodzi mianowicie o Data Quality Services. Artykuł będzie miał formę tutoriala gdzie konkretne funkcjonalności oprogramowania będę omawiał dając przy okazji wskazówki jak coś takiego skonfigurować. Ze względu na fakt, iż opis takiego oprogramowania jak DQS wykracza poza normy pojedynczego artykułu podzielę go na kilka logicznych części – póki co zapraszam do lektury!

Na wstępie powiedzmy sobie jak w ogóle zabrać się do pracy z DQS, jakie są jego składniki i skąd je wziąć. Narzędzie to jest częścią platformy danych Microsoft, która jest ściśle zintegrowana z SQL Server już od wersji 2012. Do pracy z tym oprogramowaniem trzeba skorzystać z instalatora SQL Server i tam wybrać odpowiednią usługę tak jak zostało to przedstawione na poniższym zrzucie ekranowym:

Od strony klienckiej do pracy z omawianym oprogramowaniem przeznaczone jest specjalne narzędzie o nazwie Data Quality Client, które zostanie zainstalowane wraz z usługą i to właśnie w nim spędzimy większość czasu. Wcześniej wspomniałem, że DQS ściśle współpracuje z SQL Server – dzieje się tak dlatego, że właśnie w SQL Server stworzone zostaną trzy bazy używane przez usługę tj.:

  • DQS_MAIN
  • DQS_PROJECTS
  • DQS_STAGING_DATA

O każdej z tych baz powiemy sobie w późniejszym czasie – na ten moment pamiętajmy, że coś takiego istnieje i jest niezbędne do pracy z DQS. Mając zainstalowaną usługę uruchomimy Data Quality Client – pierwszą rzeczą jaką zobaczymy będzie okno logowania gdzie musimy wskazać instancję SQL Server gdzie zainstalowana została nasza usługa:

Po poprawnym zalogowaniu naszym oczom ukarze się główne okno programu Data Quality Client:

W ramach niniejszego artykułu zajmiemy się pierwszą opcją tj. Knowledge Base Management – pozostałym opcjom poświęcę odrębne wpisy – kliknijmy zatem New Knowledge Base aby stworzyć tak zwaną bazę wiedzy. Obiekt ten jest niczym innym jak określonym bytem biznesowym posiadającym określone charakterystyki – możemy je utożsamiać z tabelami wymiarów w hurtowniach danych. Stwórzmy zatem naszą pierwszą bazę wiedzy poświęconą klientom. Ze względu na fakt, iż dopiero tworzymy naszą bazę w sekcji aktywności wybieramy Domain Management:

Nasza baza została utworzona – kolejnym krokiem jest stworzenie domeny lub domen w ramach bazy. Domena to nic innego jak atrybut charakteryzujący się określonymi regułami jeśli chodzi o wartości i mogący mieć powiązania z innymi atrybutami. Aby stworzyć domenę musimy kliknąć przycisk Create a domain tak jak zostało to przedstawione na poniższym zrzucie ekranowym:

Podstawowa konfiguracja domemy polega na podaniu jej nazwy, opisu, typu oraz dodatkowych samoopisującyh właściwości, których opis możemy poznać po najechaniu na znak zapytania. Każdą z tych właściwości możemy modyfikować w dowolnym czasie oprócz typu danych, który raz nadany nie może później być zmieniony:

Konfiguracja domeny sprowadza się do nadania powyższych właściwości oraz konfiguracji poszczególych zakładek:

Na zakładce Reference Data możemy dodać dane z usługi Data Market – na ten moment nie jest to dla nas interesujące.

Dużo bardziej interesująca jest zakładka Domain Rules gdzie definiujemy zasady jakie muszą spełniać wartości naszej domeny – kliknijmy przycisk z plusem aby dodać nową regułę o nazwie “City length between 2 and 20”.

Z listy możemy wybrać warunek naszej reguły – do wyboru jest ich całkiem dużo – w naszym wypadku opieramy się na długości wartości dlatego też wybieramy warunek “Length is greater than or equal to” następnie znakiem plusa w prawym górnym rogu dodajemy kolejny warunek tym razem “Length is less than or equal to”. Pomiędzy oboma warunkami możemy ustawić operator AND lub OR w zależności od tego czy chcemy łączyć warunki czy też stworzyć alternatywę. Zapis który można zobaczyć na powyższym zrzucie oznacza, iż wartości w tej domenie muszą mieć wartość od 2 do 20 znaków. Oczywiście możliwe jest tworzenie reguł w oparciu o inne warunki tj:

  • Length is equal to – długość jest równa podanej liczbie
  • Length is greater than or equal to – długość jest większa lub równa podanej liczbie
  • Length is less than or equal to – długość jest mniejsza lub równa podanej liczbie
  • Value is equal to – wartość jest równa podanej
  • Value is not equal to – wartość nie jest równa podanej
  • Value contains – wartość zawiera podaną
  • Value does not contain – wartość nie zawiera podanej
  • Value begins with – wartość zaczyna się na podaną
  • Value ends with – wartość kończy się na podaną
  • Value is numeric – wartość jest numeryczna
  • Value is date/time -wartość jest typu datowego
  • Value is in – wartość jest równa jednej z podanych
  • Value is not in – wartość nie jest równa żadnej z podanych
  • Value matches pattern – wartość jest zgodna z podanym wzorcem
  • Value does not match pattern – wartość nie jest zgodna z podanym wzorcem
  • Value contains pattern – wartość zawiera wzorzec
  • Value does not contain pattern – wartość nie zawiera wzorca
  • Value matches regular expression – wartość jest zgodna z podanym wyrażeniem regularnym
  • Value does not match a regular expression – wartość nie jest zgodna z podanym wyrażeniem regularnym

Jak widać do wyboru mamy całkiem pokaźną liczbę warunków. Warto w tym miejscu zaznaczyć jak działają wzorce wbudowane w DQS, przede wszystkim każda litera podana we wzorcu zastępuje dowolną literę, każda cyfra we wzorcu zastępuje dowolną cyfrę, każdy znak specjalny wskazuje na użycie tego właśnie znaku specjalnego. Dodatkowo możliwe jest użycie nawiasów kwadratowych dla elementów opcjonalnych – przedstawmy to na kilku przykładach:

Wzorzec Poprawne wartości Niepoprawne wartości
AA11 AB16,ZY43,GU88 AA,AAA,AAAA,AA1,ZYG3
AA:11 AB16,ZY43,HG:88 ABA,HHJS,HHH:00
[A1-]0000

 

Wzorce napisane w ten sposób są dosyć mocno ograniczone, jednakże w wielu przypadkach znajdą zastosowanie, a gdy potrzebujemy bardziej wyszukanych warunków to możemy użyć wyrażeń regularnych, które jak wiemy mają ogromne możliwości.

Kolejną interesującą nas zakładką jest Domain Values gdzie możemy wprowadzić wartości jakie może przyjmować definiowana domena. Na poniższym zrzucie ekranowym można zauważyć że dodane zostały wartości Katowice, Kraków, Warszawa. Ponadto to każda domena posiada wartość DQS_NULL czyli wartość pustą

Ponadto każda z tych wartości może być odpowiednio zaklasyfikowana- mamy możliwość ustawienia jednego z trzech typów:

  • Correct – czyli wartość poprawna
  • Invalid – wartość niepoprawna
  • Error – wartość błędna

Patrząc na te wartości możecie pytać jaka jest różnica pomiędzy statusem Invalid i Error? Różnica jest drobna i najlepiej ją zrozumieć na przykładzie – przypuśćmy, że mamy domenę Miasto i w ramach tej domeny mamy wartość “Kraków”, która ma status Correct, wartość “Krakow” mająca status Invalid ze względu na brak polskich znaków oraz “śląskie” mająca status Error ze względu na fakt, iż wartość ta nie jest miastem. Wartości niepoprawne i błędne można skorygować i przypisać tak jak zostało to przedstawione poniżej:

W przypadku gdy w głównym oknie konfiguracyjnym zaznaczyliśmy opcję Speller to błędne wartości będną podkreślone czerwonym wężykiem – możemy kliknąć na nie prawym przyciskiem myszy i z menu kontekstowego wybrać właściwą podpowiedź (jeżeli takowa istnieje) w analogiczny sposób mechanizm ten działa w każdym edytorze tekstu.

Oczywistym jest fakt, że ręczne wprowadzanie wartości może być uciążliwe dlatego też możemy z menu wybrać możliwość importu wartości z Excel (lub csv):

Wartości w Excelu muszą przybrać standardową formę tabeli z nagłówkami lub bez – nie ma niestety możliwości podłączenia się bezpośrednio do bazy SQL Server – ale nie stanowi to problemu i możemy szybko dane eksportować z tabeli do pliku Excel używając np. Import Export Wizard.

Oprócz wprowadzania wartości można również zdefiniować synonimy – na poniższym zrzucie ekranowym można zauważyć, że watość KR została zdefiniowana jako synonim dla wartości Kraków:

DQS automatycznie wartość ustaloną jako synonim będzie korygowało do wartości oznaczonej jako wiodącą (ang. Leading). Określoną wartość możemy ją ustawić jako wiodącą klikając prawym przyciskiem myszy i z menu kontekstowego wybrać Set as Leading:

Definiowanie wartości polega właśnie na tego typu działaniach – oczywiście to wcale nie znaczy, że musimy dodać wszystkie możliwe wartości do domeny – automatyczny proces ETL doda je do domeny wtedy gdy pojawią się nowe wartości to zostaną one dodane jako nowe – jak coś takiego zaimplementować powiemy sobie o tym w następnym artykule.

Adrian Chodkowski
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

Leave a Comment

Your email address will not be published. Required fields are marked *