sqlschool.gr logo

articles

Articles of SQLschool.gr Team

Design, Implementing and Discovery Data Quality before importing them on DW using SSIS Data Profiling Task.

Antonios Chatzipavlis
Sunday 01 April 2012

Αφού έχουμε στύψει αρκετά το μυαλό μας μέχρι τώρα και έχουμε καταφέρει να σχεδιάσουμε και να υλοποιήσουμε το DW μας και το αίσθημα της ικανοποίησης μας έχει κυριεύσει, θα πρέπει να κάνουμε το επόμενο μεγάλο βήμα πίστης που δεν είναι άλλο από το γεμίσουμε αυτό με δεδομένα. Είμαστε στο σημείο που πρέπει να σχεδιάσουμε και να υλοποιήσουμε μια ή περισσότερες διαδικασίες ETL (Extract-Transform-Load). Όλες αυτές οι διαδικασίες θα πρέπει να αποτελέσουν ένα Data Integration System το οποίο θα πρέπει να δίνει λύσεις σε όλα τα προβλήματα που σχετίζονται με τα δεδομένα που θα εισαχθούν στο DW. Είναι μια εργασία που θα πρέπει να λάβουμε πολλές παραμέτρους υπόψη μας. Παραμέτρους που έχουν να κάνουν αρχικά με την ποιότητα των δεδομένων και έπειτα με την αξιοπιστία, την κλιμάκωση και την διαχείριση της λύσης που θα δημιουργηθεί. Σίγουρα δεν είναι μια εύκολη δουλειά αν και αρχικά φαίνεται εύκολη καθώς έχουμε στα χέρια μας τα SQL Server Integration Services που μας βοηθάνε στο μέγιστο βαθμό, όμως ένα εργαλείο από μόνο του δεν είναι πανάκεια. Αφού έχουμε εντοπίσει τις πηγές από όπου θα διαβάσουμε τα δεδομένα που θα μεταφερθούν στο DW θα πρέπει να προβούμε σε ένα ενδελεχή έλεγχο σε αυτά με απώτερο σκοπό να διασφαλίσουμε ότι αυτά είναι ποιοτικά σωστά. Η ποιότητα είναι κάτι στο οποίο θα πρέπει να δώσουμε ιδιαίτερο βάρος καθώς το τι σημαίνει ποιότητα δεδομένων ιδιαίτερα σε ένα DW είναι τελείως διαφορετική από την ποιότητα των δεδομένων που ένα OLTP σύστημα έχει. Το δεδομένα ενός OTLP συστήματος μπορεί για αυτό να είναι ποιοτικά, καθώς οι ανάγκες τους είναι παντελώς διαφορετικές από ένα OLAP σύστημα. Έτσι οι ισχυρισμοί που αρκετοί προβάλλουν ότι εφόσον έχω ποιοτικά δεδομένα στην πηγή θα έχω ποιοτικά και στο DW είναι αβάσιμοι. Αυτό θα πρέπει να αποδειχθεί, και για να γίνει αυτό θα πρέπει να βρούμε του μηχανισμούς και τις διαδικασίες που θα το κάνουν ικανοποιώντας πάντα την αρχή που λέει ότι τα δεδομένα είναι σωστά εφόσον ικανοποιούν τις απαιτήσεις που η χρήση τους επιβάλλει.

Data Analyzing and Profiling

Μια τέτοια διαδικασία σε ορολογία DW λέγεται data analyzing and profiling και πρέπει να γίνεται πριν αρχίσουμε να δημιουργούμε ETL διαδικασίες που θα περιέχουν τα δεδομένα αυτά καθώς έτσι θα μας δοθεί η δυνατότητα να:
  • Επιβεβαιώσουμε ή να απορρίψουμε την πηγή
  • Να δούμε σε τι βαθμό χρειάζεται να κάνουμε data cleansing.
  • Να δούμε το βαθμό δυσκολίας που θα έχουν τα τυχόν transformations που θα γίνουν.
  • Να βρούμε business rules που ήταν κρυμμένα κατά την φάση του σχεδιασμού ή ακόμα και data relations και να επικοινωνήσουμε αυτά με τους ανθρώπους του business.
Μια τέτοια διαδικασία όμως κρύβει και παγίδες, που μπορεί να την κάνουν άχρηστη ή να χρειαστεί μεγάλος χρόνος για να βγει αποτέλεσμα. Για να αποφευχθούν και τα δύο θα πρέπει πριν αυτή ξεκινήσει να:
  • Υπάρχει σαφής γνώση και κατανόηση των απαιτήσεων σε συνάρτηση με το πώς τα δεδομένα θα χρησιμοποιηθούν για την ικανοποίηση αυτών (απαιτήσεων).
  • Θα πρέπει να έχουμε μελετήσει κάθε διαθέσιμο documentation που αφορά τα δεδομένα.
  • Θα πρέπει να έχουμε έρθει σε επαφή με αυτούς που δημιουργούν τα δεδομένα αυτά ώστε να κατανοήσουμε πλήρως αυτά.
  • Και τέλος θα πρέπει να έχουμε σαφώς ορίσει το scope της όλης διαδικασίας.

SSIS Data Profiling Task

Οι τρόποι για να μπορέσεις να φτιάξεις μια τέτοια διαδικασία ποικίλουν. Μπορείς να το κάνεις με το να γράψεις T-SQL queries ή να χρησιμοποιήσεις advanced data profiling tools. Από τον SQL Server 2008 στα SQL Server Integration Services υπάρχει το Data Profiling Task. clip_image002 Με αυτό μπορούμε γρήγορα να βρούμε τα τυχόν προβλήματα που υπάρχουν στα δεδομένα. Αν και έχει κάποιους περιορισμούς εντούτοις είναι ένα εργαλείο που προσωπικά εμπιστεύομαι και πάντα χρησιμοποιώ. Οι περιορισμοί που ανέφερα δεν είναι κάτι το τραγικό. Παρόλα αυτά υπάρχουν αλλά υπάρχουν και workarounds για να τους προσπεράσουμε.
  • Ένας από αυτούς είναι το γεγονός ότι διαβάζει δεδομένα μόνο από SQL Server Databases. Αυτό σημαίνει ότι εάν η πηγή μου είναι σε κάτι διαφορετικό θα πρέπει να μεταφέρω τα δεδομένα που με ενδιαφέρουν σε SQL Server. Τώρα ξέρω θα μου πει κάποιος ότι αυτό είναι αδύνατο να γίνει καθώς δεν μπορώ να μεταφέρω όλη την βάση σε SQL Server. Αν και πρακτικά αυτό γίνεται απλά απαιτεί χρόνο, θα πρέπει να επισημανθεί ότι δεν χρειάζεται να μεταφερθεί όλη η βάση αλλά μόνο το δεδομένα που χρειάζονται και αυτά μπορεί να είναι κάποιοι πίνακες ή κάποιο view. Άρα δεν είναι και μεγάλο θέμα μπροστά σε αυτά που θα μου δείξει στο τέλος η διαδικασία.
  • Κάποιοι διαμαρτύρονται ότι το αρχείο που περιέχει το αποτέλεσμα είναι σε XML format και τους φαντάζει βουνό αυτό για την περίπτωση που θέλω να δω τα αποτελέσματα σε μια διαφορετική μορφή. Αλλά και αυτό εύκολα ξεπερνιέται καθώς υπάρχει στα SSIS το XML Task με το οποίο μπορώ να γυρίσω το XML σε tabular format και είτε να αποθηκεύσω τα δεδομένα σε ένα πίνακα είτε να βγάλω ένα report.
  • Βέβαια δεν χρειάζεται να κάνω τίποτα από τα παραπάνω καθώς ήδη υπάρχει ο Data Profile Viewer.
clip_image004
  • Αλλά και εδώ κάποιοι γκρινιάζουν καθώς για να το έχω διαθέσιμο θα πρέπει να έχω κάνει εγκατάσταση τα SQL Server Client Tools και το πρόβλημα τους εγγυείται στο πως θα μοιράσουν την πληροφορία αυτή σε αυτούς που δεν έχουν εγκαταστήσει τα tools.
Με το Data Profiling Tasks έχω την δυνατότητα να κάνω profiling σε επίπεδο μεμονωμένου πεδίου
  • Column Length Distribution Profile
  • Column Null Ratio Profile
  • Column Pattern Profile
  • Column Statistics Profile
  • Column Value Distribution Profile
αλλά και σε επίπεδο σχέσης πεδίου με άλλους πίνακες
  • Candidate Key Profile
  • Functional Dependency Profile
  • Value Inclusion Profile
clip_image006 Περισσότερες λεπτομέρειες και οδηγίες χρήσης για το Data Profiling Task μπορείτε να βρείτε στα BOL εδώ. /*antonch*/ Υ.Γ Για όσους θέλουν να μελετήσουν την θεωρία γύρω από το θέμα Data Quality υπάρχει το βιβλίο του Jack E. Olson με τίτλο «Data Quality, The Accuracy Dimension»

Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.

Tip

What's New in SQL Server 2022 - Episodes

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn


sqlschool.gr © 2010-2024 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.