Αφού έχουμε στύψει αρκετά το μυαλό μας μέχρι τώρα και έχουμε καταφέρει να σχεδιάσουμε και να υλοποιήσουμε το 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.
Με αυτό μπορούμε γρήγορα να βρούμε τα τυχόν προβλήματα που υπάρχουν στα δεδομένα. Αν και έχει κάποιους περιορισμούς εντούτοις είναι ένα εργαλείο που προσωπικά εμπιστεύομαι και πάντα χρησιμοποιώ.
Οι περιορισμοί που ανέφερα δεν είναι κάτι το τραγικό. Παρόλα αυτά υπάρχουν αλλά υπάρχουν και workarounds για να τους προσπεράσουμε.
- Ένας από αυτούς είναι το γεγονός ότι διαβάζει δεδομένα μόνο από SQL Server Databases. Αυτό σημαίνει ότι εάν η πηγή μου είναι σε κάτι διαφορετικό θα πρέπει να μεταφέρω τα δεδομένα που με ενδιαφέρουν σε SQL Server. Τώρα ξέρω θα μου πει κάποιος ότι αυτό είναι αδύνατο να γίνει καθώς δεν μπορώ να μεταφέρω όλη την βάση σε SQL Server. Αν και πρακτικά αυτό γίνεται απλά απαιτεί χρόνο, θα πρέπει να επισημανθεί ότι δεν χρειάζεται να μεταφερθεί όλη η βάση αλλά μόνο το δεδομένα που χρειάζονται και αυτά μπορεί να είναι κάποιοι πίνακες ή κάποιο view. Άρα δεν είναι και μεγάλο θέμα μπροστά σε αυτά που θα μου δείξει στο τέλος η διαδικασία.
- Κάποιοι διαμαρτύρονται ότι το αρχείο που περιέχει το αποτέλεσμα είναι σε XML format και τους φαντάζει βουνό αυτό για την περίπτωση που θέλω να δω τα αποτελέσματα σε μια διαφορετική μορφή. Αλλά και αυτό εύκολα ξεπερνιέται καθώς υπάρχει στα SSIS το XML Task με το οποίο μπορώ να γυρίσω το XML σε tabular format και είτε να αποθηκεύσω τα δεδομένα σε ένα πίνακα είτε να βγάλω ένα report.
- Βέβαια δεν χρειάζεται να κάνω τίποτα από τα παραπάνω καθώς ήδη υπάρχει ο Data Profile Viewer.
- Αλλά και εδώ κάποιοι γκρινιάζουν καθώς για να το έχω διαθέσιμο θα πρέπει να έχω κάνει εγκατάσταση τα 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
Περισσότερες λεπτομέρειες και οδηγίες χρήσης για το Data Profiling Task μπορείτε να βρείτε στα BOL
εδώ.
/*antonch*/
Υ.Γ
Για όσους θέλουν να μελετήσουν την θεωρία γύρω από το θέμα Data Quality υπάρχει το βιβλίο του Jack E. Olson με τίτλο «Data Quality, The Accuracy Dimension»