Εμφάνιση αναρτήσεων με ετικέτα Business Intelligence. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα Business Intelligence. Εμφάνιση όλων των αναρτήσεων

Παρασκευή, 21 Οκτωβρίου 2016

QV Document Analyzer, ένα απαραίτητο εργαλείο για την εργαλειοθήκη κάθε QlikView developer...

Το "QV Document Analyzer" είναι ένα απαραίτητο εργαλείο για όποιον κάνει QlikView development, ιδανικό για fine tuning των εφαρμογών... Έχει δημιουργηθεί από τον Rob Wunderlich, έναν από τους πιο καταξιωμένους QlikView developers/consultants παγκοσμίως, και βρίσκεται στην τρίτη του έκδοση... 

Πρόκειται για ένα application το οποίο έχει φτιαχτεί με την τεχνολογία του QlikView και αυτό που κάνει είναι να αναλύει την δομή και να ποσοτικοποιεί το footprint κάθε QlikView application (*.qvw files) σε memory, storage και calculation time ανά πεδίο και object και επίσης διακρίνει ποια πεδία/objects χρησιμοποιούνται και ποια όχι και υποδεικνύει συγκεκριμένες ενέργειες για την βελτιστοποίηση των εφαρμογών... 

Έχει ένα καλαίσθητο και κατανοητό γραφικό περιβάλλον πλοήγησης στα στοιχεία κάθε application και πραγματικά κάνει τη ζωή πιο έυκολη σε κάθε έναν από εμάς που δουλεύουμε με το QlikView και προσπαθούμε να φτιάξουμε όσο γίνεται καλύτερες εφαρμογές... 

Η εφαρμογή διανέμεται δωρεάν από το blog του  Rob Wunderlich στο section των Tools  όπου θα βρείτε και άλλα χρήσιμα, δωρεάν εργαλεία... Ακολουθούν κάποια screenshots της εφαρμογής από το download site:

QV Document Analyzer screenshot 1


QV Document Analyzer screenshot 2

QV Document Analyzer screenshot 3


Παρασκευή, 5 Αυγούστου 2016

Freebie QlikView app - QvdDependancies ver 1.2 ...

Μπορεί αύριο το πρωί να ξεκινάνε οι διακοπές αλλά κάποια πράγματα δεν πρέπει να μένουν πίσω, ειδικά όταν κάποιοι άνθρωποι μπαίνουν στη διαδικασία να ασχοληθούν με τη δουλειά σου και να σου κάνουν καλοπροαίρετη κριτική, να σου δώσουν τις συμβουλές τους ή να σου κάνουν χρήσιμες προτάσεις... Έτσι λοιπόν το QvdDependancies, ένα QlikView app στο οποίο αναφέρθηκα σε προηγούμενο post, πέρασε σε νέα version (1.2) και απέκτησε επιπλέον functionality... 

Υποστηρίζεται πλέον η δυνατότητα ο χρήστης να μην κάνει πλήρες scan του server/pc για να βρει τα dependencies μεταξύ qvds και qvws αλλά να σκανάρει μόνο συγκεκριμένα directories εφόσον αυτό επιθυμεί... Ο κώδικας και το app βρίσκονται τόσο στο GitHub (Link)  όσο και στο Qlik Community (Download Link) και κάθε feedback θα χαίρει μεγάλης εκτίμησης και θα ληφθεί υπόψην από τον δημιουργό του app ...  :P

Υ.Γ. Καλές διακοπές!!!

Παρασκευή, 29 Ιουλίου 2016

Freebie QlikView app - QvdDependancies...

Το QlikView είναι ένα πολύ καλό εργαλείο για την ανάπτυξη εφαρμογών BI... Έχει μια δική του λογική ως προς τη διαχείριση των δεδομένων η οποία βασίζεται σε αρχεία τύπου .qvd τα οποία αποθηκεύονται στο file system του server ή του υπολογιστή που γίνεται το development... Αν οι εφαρμογές είναι λίγες, οι όγκοι των δεδομένων μικροί και υπάρχει μια στοιχειώδης οργάνωση του file system δεν είναι δύσκολο να εντοπιστούν τα dependencies που έχει ένα .qvd αρχείο, ποιο document το δημιούργησε και από ποια άλλα documents χρησιμοποιείται... Τι γίνεται όμως όταν το περιβάλλον ανάπτυξης είναι μεγάλο, τα .qvds αμέτρητα, οι εφαρμογές το ίδιο και είναι απαραίτητο να γίνουν τροποποιήσεις; Το να θυμάται απλά ο developer τα dependencies κάθε .qvd αρχείου είναι αδύνατον αλλά είναι απαραίτητο να υπάρχει μια καταγραφή κι έλεγχος των dependencies έτσι ώστε να μην γίνουν μετατροπές στις εφαρμογές που θα προκαλέσουν την κατάρρευσή τους...

Το πρόβλημα αυτό προσπαθούν να το λύσουν διάφορες εφαρμογές, freebies συνήθως, φτιαγμένες από QlikView developers, μία από αυτές είναι το QvdDependancies (*)... Η εφαρμογή σκανάρει όλα τα  local physical drives του μηχανήματος που τρέχει, χρησιμοποιώντας τα XML header data τόσο των .qvds όσο και των .qvws (documents), και  βρίσκει για κάθε αρχείο .qvd ποιο είναι το .qvw που το δημιουργεί και ποια είναι τα .qvws που το χρησιμοποιούν ως data source... Η εφαρμογή είναι δωρεάν και για να την χρησιμοποιήσετε πρέπει να έχετε μια εγκατάσταση QlikView (ιδανικά να είναι licensed) και να είναι enabled τα macros... Μπορείτε να την κατεβάσετε από το Qlik Community (Download Link) κι επίσης όλος ο κώδικας είναι ανεβασμένος στο GitHub (Link) ... Μπορείτε να χρησιμοποιήσετε την εφαρμογή, να κάνετε fork το project, να προτείνετε αλλαγές και βελτιώσεις (θα ήταν τέλειο κάτι τέτοιο), η μόνη υποχρέωση που έχετε είναι αν η εφαρμογή γίνει αντικείμενο παρουσίασης σε άλλο μέσο είναι να γίνει mention o δημιουργός και να μπει link είτε προς το GitHub project είτε στο Qlik Community...

(*) Η ορθογραφία του τίτλου της εφαρμογής είναι λάθος, φυσικά, αλλά δεν διορθώθηκε για γούρι... :)

Τρίτη, 26 Ιανουαρίου 2016

Visiting lecture @ New York College, 25/01/2016...

Χθες το απόγευμα είχα την χαρά και την τιμή να δώσω μια διάλεξη μπροστά στους φοιτητές του τμήματος "Internet Engineering and Web Management" του New York College, ως προσκεκλημένος ομιλητής... Η πρόσκληση έγινε από το καθηγητή του συγκεκριμένου τμήματος, Δημήτρη Δημητρέλο, ο οποίος ήταν και δικός μου εκπαιδευτής στο σεμινάριο Scrum που παρακολούθησα πριν από 1,5 μήνα... Αντικείμενο της διάλεξης ήταν η εισαγωγή στις έννοιες του Data Warehouse και του Business Intelligence, το αντικείμενο της δουλειάς μου δηλαδή εδώ και 11 χρόνια... 

Ήταν η πρώτη φορά που θα έδινα μια τέτοια διάλεξη και δεν κρύβω ότι στην αρχή όταν μου έγινε η πρόταση ήμουν λίγο διστακτικός... Έχω κάνει στο παρελθόν εκπαιδεύσεις σε μικρές ομάδες χρηστών για την εκμάθηση συγκεκριμένων εφαρμογών αλλά η ιδέα του να μιλάω μπροστά σε ένα κοινό σχεδόν νεανικό εξηγώντας θεωρητικές έννοιες και μεθοδολογίες μου φαινόταν κάπως τρομακτικό... Από την άλλη όμως η ιδέα του να δώσω μια τέτοιου είδους διάλεξη με δελέαζε οπότε δέχτηκα γρήγορα την πρόταση που μου έγινε... Ο παράγοντας που έπαιξε καθοριστικό ρόλο στο να μου φύγει εντελώς το άγχος της επερχόμενης διάλεξης ήταν μια κουβέντα που μου είπε ένας πολύ καλός μου φίλος και κουμπάρος μου το βράδυ του Σαββάτου που είχαμε βγει... "Εγώ", μου είπε, "όταν κάνω μια παρουσίαση, στήνω στο μυαλό μου και λέω μια ιστορία", έτσι λοιπόν σκέφτηκα κι εγώ να πω τη δική μου ιστορία, την ιστορία της πορείας αυτών των 11 χρόνων δουλειάς... Μια ιστορία που προφανώς γνωρίζω πολύ καλά και μπορώ να την συνδυάσω με την θεωρία και τις μεθοδολογίες που έπρεπε να παρουσιάσω...

Η διάλεξη ξεκίνησε με καθυστέρηση λίγων λεπτών και πήγε πολύ καλύτερα από ότι περίμενα... Προσπάθησα να είναι όσο δυνατόν πιο "out of the box", να έχει καλή ροή και να είναι όσο γίνεται λιγότερο βαρετή, έχω υπάρξει φοιτητής και γνωρίζω πόσο εύκολο είναι να βαρεθείς ακούγοντας μια ομιλία... Ζήτησα από τους φοιτητές να με διακόπτουν αν έχουν απορίες ή θέλουν διευκρινήσεις και το έκαναν κι αυτό με ευχαρίστησε πολύ, δεν βαριόντουσαν, όχι πολύ τουλάχιστον... Συμπεριέλαβα πάρα πολλά παραδείγματα από την επαγγελματική μου εμπειρία, κατέθεσα την προσωπική μου άποψη και τη δική μου ματιά πάνω στην τεχνολογία και τη αγορά, γι' αυτό και με είχαν καλέσει άλλωστε... Στο τέλος πήρα ένα χειροκρότημα και ένα ευχαριστώ από τα παιδιά που θέλω να πιστεύω ότι ήταν κάτι παραπάνω από μια τυπικότητα... Μαζί με τα καλά λόγια που άκουσα από τον Δημήτρη Δημητρέλο όταν με κατευόδωσε, έφυγα για το σπίτι απόλυτα ικανοποιημένος τόσο με τον εαυτό μου όσο και για την εμπειρία που έζησα...

Τρίτη, 24 Νοεμβρίου 2015

Χρήση variables για την περιγραφή των qvd path names - QlikView...

Ένα κοινό "πρόβλημα" στο QlikView development είναι όταν θέλεις να δοκιμάσεις την εφαρμογή σου σε κάποιο άλλο περιβάλλον, test ή live... Λόγω της φύσης του QlikView το να αλλάξεις απλά το connection string στη βάση που διαβάζεις δεν είναι αρκετό διότι θα πρέπει να ορίσεις ξανά το path για όλα τα qvds που φορτώνονται στην εφαρμογή, ένα ένα... Κάτι τέτοιο είναι χρονοβόρο και μη αποδοτικό και αυξάνει τις πιθανότητες λάθους... Η χρήση της επιλογής των Relative Paths δεν λύνει το πρόβλημα διότι προϋποθέτει ότι η εφαρμογή και τα qvds βρίσκονται στο ίδιο folder ή έστω διαφέρουν κατά ένα level κάτι το οποίο προσωπικά θεωρώ αρχιτεκτονικό λάθος... 

Μια πολύ καλή λύση για να αντιμετωπιστεί μια τέτοια κατάσταση είναι η χρήση local variables για την αποθήκευση των path names των διαφόρων qvds... Αυτό γίνεται δηλώνοντας μια μεταβλητή vPathName αμέσως μετά τα αρχικά set statements στο Main tab του script editor η οποία περιέχει το full path προς το qvd repository το οποίο θέλουμε να χρησιμοποιήσουμε... Κατόπιν σε κάθε LOAD statement  αντικαθιστούμε το full path name του qvd με την μεταβλητή συν το όνομα του qvd, όπως φαίνεται στο παρακάτω script:


Με την μέθοδο αυτή μπορούμε να κάνουμε αλλαγή του path των qvds που διαβάζει η εφαρμογή μας αλλάζοντας μόνο μια γραμμή κώδικα...  Έτσι κερδίζουμε χρόνο, ελαττώνουμε τις πιθανότητες λάθους και κάνουμε τις εφαρμογές πιο portable... Η μέθοδος αυτή μπορεί να χρησιμοποιηθεί και για παραπάνω από ένα repositories, δημιουργούμε απλά μια δεύτερη μεταβλητή που να υποδεικνύει στο δεύτερο repository και την χρησιμοποιούμε όπου είναι απαραίτητο...

Παρασκευή, 20 Νοεμβρίου 2015

QlikView variable ως παράμετρος σε SQL query...

Το σημερινό tip είναι κάτι που έφτιαξα πριν περίπου 2 χρόνια, στην αρχή της ενασχόλησής μου με το QlikView, και προέκυψε από την ανάγκη να διαβάσω μια λίστα πελατών από ένα data source και μετά να περάσω αυτή την λίστα σαν παράμετρο σε ένα άλλο data source, μια βάση δεδομένων, για να συλλέξω όλη την πληροφορία που αφορούσε τους πελάτες αυτούς... Μετά από 2 χρόνια εντατικής δουλειάς και εμπειρίας ξέρω ότι υπάρχουν κι άλλοι τρόποι, να κάνεις την ίδια δουλειά, η συγκεκριμένη υλοποίηση όμως είναι ενδιαφέρουσα ως προς την χρήση των variables μέσα στο QlikView script σε συνδυασμό με SQL queries...

Έστω λοιπόν ότι το πρώτο data source είναι ένα Excel αρχείο στο οποίο περιέχονται κωδικοί πελατών τους οποίους θέλουμε να διαβάσουμε και να αναζητήσουμε σε ένα άλλο data source, μια βάση δεδομένων... Για να το καταφέρουμε αυτό θα δημιουργήσουμε μια μεταβλητή η οποία θα περιέχει σαν ένα μεγάλο string, όλους τους κωδικούς πελατών (χωρισμένους με κόμματα και κλεισμένους μέσα σε "αυτάκια") και θα την θέσουμε σαν παράμετρο του WHERE statement του query με το οποίοι θα διαβάσουμε τη βάση... 

Αυτό επιτυγχάνεται, όπως θα δείτε στο πρώτο script πιο κάτω, δημιουργώντας μια μεταβλητή (vNoOfRows) που θα περιέχει τον αριθμό των κωδικών πελατών που φορτώσαμε στο QlikView και τρέχοντας ένα for loop για κάθε ένα CustomerID που βρίσκει, μέχρι τον αριθμό του vNoOfRows ...Σε κάθε λούπα προσθέτουμε το CustomerID στην μεταβλητή vCus η οποία θα περιέχει στο τέλος όλη την λίστα των CustomerIDs χωρισμένων με κόμματα σε μορφή τέτοια ώστε να μπορέσουμε να την ενσωματώσουμε σε ένα SQL Query...



Από αυτό το σημείο και μετά τα πράγματα είναι πολύ απλά... Απλά τρέχουμε το query μας με παράμετρο την μεταβλητή vCus και φορτώνουμε στο QlikView τα στοιχεία μόνο εκείνων των πελατών που μας αφορούν...

Δευτέρα, 9 Νοεμβρίου 2015

Πώς να καθαρίσουμε το workspace με ένα μόνο command - R...

Θα υπάρξουν φορές δουλεύοντας με την R που θα βρεθείτε με ένα workspace γεμάτο variables τις οποίες δεν χρειάζεστε αλλά θέλετε να συνεχίσετε τη δουλειά σας με ένα άδειο workspace... 

Υπάρχουν δυο τρόποι να το κάνετε αυτό...

Ο πρώτος είναι να κλείσετε το session που δουλεύετε χωρίς να σώσετε τα περιεχόμενα του workspace στο .RData file... Ο τρόπος αυτός όμως έχει τα μειονεκτήματα ότι πρέπει να ξαναφορτώσετε από την αρχή όλα τα packages τα οποία είναι απαραίτητα για την ανάλυσή σας και ότι πρέπει να ξαναδηλώσετε το working directory...

Ο δεύτερος τρόπος είναι πιο απλός και σύντομος και περιλαμβάνει μόνο το παρακάτω command:


Το command αυτό διαγράφει μόνο τα variables που περιέχει το workspace αφήνοντας το απολύτως κενό χωρίς όμως να επηρεάζει τα loaded packages ή άλλα preferences που σχετίζονται με το current session θέλει όμως προσοχή στην χρήση του καθώς όπως είπαμε διαγράφει πλήρως το workspace...

Δευτέρα, 2 Νοεμβρίου 2015

Υπολογισμός ελληνικών εργάσιμων ημερών με SQL...

Πολλές φορές δουλεύοντας με δεδομένα θα χρειαστεί να τροποποιήσετε τον κώδικά σας, τον όποιο κώδικα γράφετε, αναλόγως με το αν τα δεδομένα σας αναφέρονται σε εργάσιμες ημέρες ή όχι... Αυτό μπορεί να είναι συχνά μπελάς αν συνυπολογίσεις ότι υπάρχουν κινητές γιορτές και αργίες, όπως το Πάσχα, οι οποίες διαφέρουν κιόλας αναλόγως αν αναφέρεσαι στο Πάσχα των Καθολικών ή των Ορθοδόξων...

Ένας εύκολος τρόπος να υπολογιστούν οι εργάσιμες μέρες του ελληνικού εορτολογίου είναι το παρακάτω T-SQL script το οποίο αφού τρέξετε σε κάποιο SQL Server instance, παράγει για το διάστημα το οποίο έχετε ορίσει, ένα table το οποίο περιέχει ανά ημερομηνία, τον μήνα και το έτος που ανήκει αυτή, την ονομασία της ημέρας, ένδειξη αν είναι εργάσιμη ή όχι και ένδειξη αν είναι η τελευταία εργάσιμη κάθε μήνα ή όχι.... Το script αυτό μπορείτε να το χρησιμοποιείτε είτε σε stored procedures ή common table expressions για πιο ad hoc χρήση, είτε one off υπολογίζοντας τις εργάσιμες μέρες για ένα μεγάλο χρονικό διάστημα και αποθηκεύοντας το table είτε στη βάση είτε σε κάποιο άλλο αρχείο για μελλοντική χρήση, όπως έχω κάνει εγώ... 

Η επιλογή δικής σας...

Παρασκευή, 23 Οκτωβρίου 2015

Η επιστροφή μου στα θρανία...

Δεν έκανα ποτέ μου μεταπτυχιακό και δεν κρύβω ότι υπάρχουν φορές που το μετανιώνω... Όχι τόσο για τα skills που θα μπορούσα να κερδίσω, από αυτά κέρδισα πάρα πολλά στα 10+ χρόνια που εργάζομαι, συχνά υπό πολύ αντίξοες συνθήκες, όσο για το πως να βλέπεις τα πράγματα και με μια διαφορετική οπτική, διαφορετική από αυτή που αποκτάς από το πανεπιστήμιο στο προπτυχιακό και διαφορετική από αυτή που αποκτάς από την day to day "τριβή" στη δουλειά...

Η επαγγελματική αλλαγή που μου συνέβη πριν από 2 περίπου χρόνια, αν και δεν έγινε οικειοθελώς, αποδείχτηκε εξαιρετικά ενδιαφέρουσα κι εγώ χώρεσα πολύ καλά στο καινούργιο μου κοστούμι... Τόσο καλά που, σε συνδυασμό με κάποια τυχαία ερεθίσματα που είχα εκείνη την περίοδο, με έκαναν να αποφασίσω τον περασμένο Ιανουάριο, να επενδύσω χρόνο και χρήμα στο να παρακολουθήσω μια σειρά μαθημάτων on line από το Coursera που θα μου εξασφαλίσουν με την επιτυχή τους ολοκλήρωση ένα δίπλωμα εξειδίκευσης από το John Hopkins University και τον τίτλο του Data Scientist... Τα μαθήματα έχουν συνολική διάρκεια ένα περίπου χρόνο, συμπεριλαμβανομένης και μιας "πτυχιακής" εργασίας που παραδίδεται με την ολοκλήρωση των μαθημάτων ως ξεχωριστή ενότητα... Προς το παρόν βρίσκομαι στα μισά του δρόμου, έχω παρακολουθήσει με επιτυχία τις 6 πρώτες θεματικές ενότητες και μου μένουν ακόμα 3 καθώς και η "πτυχιακή" εργασία... Μέχρι τώρα οι εντυπώσεις μου από τα μαθήματα είναι πολύ καλές, η πλατφόρμα e-learning του Coursera εξαιρετική κι έστω και εικονικά, νιώθω σαν να είμαι και πάλι φοιτητής... Εδώ να πω ότι δεν είναι πάντα εύκολο για όλους εμάς που έχουμε μια full οικογενειακή και επαγγελματική ζωή να ανταποκρινόμαστε με επιτυχία σε ακαδημαϊκές υποχρεώσεις αλλά η ευχαρίστηση από την επίτευξη των στόχων που θέτεις σε αποζημιώνει...

Σκεφτόμουν επίσης ότι έχει έρθει ο καιρός να αρχίζω να μοιράζομαι κομμάτια από την γνώση που έχω αποκομίσει από τη δουλειά μου τόσα χρόνια στον χώρο του Business Intelligence και των Analytics... Μικρά tips, χρήσιμα resources, best practices, πράγματα που ίσως κάνουν τη ζωή κάποιου άλλου ευκολότερη... Είχα σκεφτεί και παλιότερα να κάνω κάτι τέτοιο αλλά δίσταζα διότι δεν ήθελα να χάσει το blog τον προσωπικό χαρακτήρα που έχει, μια τέτοια σκέψη όμως είναι λάθος αφού και η δουλειά μου είναι κομμάτι του εαυτού μου, όπως και τα hobbies ή τα ενδιαφέροντα μου, και αν κάποιος επωφεληθεί από τις γνώσεις μου ή την εμπειρία μου στη δουλειά τόσο το καλύτερο...