Κάνοντας ETL με το QlikView, ένα case study...

Κάθε εργαλείο φτιάχνεται με ένα συγκεκριμένο σκοπό άσχετο με το αν εμείς μπορεί να το χρησιμοποιούμε και κάπως αλλιώς για να καλύψουμε τις ανάγκες μας... Κατά την άποψή μου το QlikView δεν είναι ένα εργαλείο κατάλληλο για να φτιάξεις ETL processes, έλα όμως που πολλές φορές αναγκάζομαι για λόγους που δεν είναι της παρούσης, να το κάνω... Έχω σιχτιρίσει κάθε μια από αυτές, όντας SQL και Data Warehouse oriented, το να κάνω ETL μέσα από το script του QlikView δεν είναι το καλύτερό μου διότι πιστεύω ότι σε πολλές περιπτώσεις αναγκάζεσαι να ανακαλύψεις ξανά τον τροχό για θέματα που είναι από καιρό λυμένα για τα ETL tools και την SQL...

Το συγκεκριμένο case αφορά μια περίπτωση όπου έπρεπε να εντοπίσω ανά πελάτη ποια είναι τα καταστήματα με το μεγαλύτερο μέσο υπόλοιπο και αν είναι περισσότερο από ένα να διαλέξω αυτό στο οποίο έχει ανοιχθεί πιο πρόσφατα λογαριασμός... Με παίδεψε αρκετά καθώς το πρώτο πράγμα που θα έρθει στο μυαλό μου σε αυτές τις περιπτώσεις είναι μια SQL προσέγγιση με τη δημιουργία κάποιων temp tables όπου θα έχω πολλαπλά κλειδιά αν το χρειάζομαι κ.ο.κ., που όμως στην προκειμένη περίπτωση δεν μας κάνει... Κατέληξα σε μια ξεκάθαρα QlikView υλοποίηση η οποία δεν είναι η βέλτιστη καθώς παρουσιάζει αρκετό delay όταν οι όγκοι των δεδομένων αυξάνονται αλλά σε μικρούς και μεσαίους όγκους το performance είναι πολύ καλό...  Το δηλώνω από τώρα ότι δεν πρόκειται να μπω στη διαδικασία να δουλέψω παραπάνω πάνω στο script διότι αφενός δεν το χρειάζομαι πια καθώς έφτιαξα και δεύτερη λύση η οποία είναι πολύ μακροσκελέστερη αλλά με πολύ καλύτερο performance και αφετέρου διότι εξακολουθώ να πιστεύω ότι το QlikView δεν είναι φτιαγμένο για ETL, ο σωστός προγραμματιστής πρέπει να είναι τεμπέλης και να μην γράφει ποτέ περισσότερο κώδικα από όσο είναι απολύτως απαραίτητο... :)  

Σκέφτηκα να βάλω αυτό το script στο Gist διότι σκέφτηκα ότι μπορεί να είναι χρήσιμο για κάποιους καθώς γίνεται ένα πολύ ωραίο loop σε αυτόν τον κώδικα, και για να το θυμάμαι κι εγώ, ποτέ δεν ξέρεις πού θα χρησιμοποιηθεί τελικά...

Σχόλια