Τρίτη, 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 και την χρησιμοποιούμε όπου είναι απαραίτητο...

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

"Νέμεσις" του Jo Nesbo

"Νέμεσις" του Jo Nesbo
Νέμεση, η θεά της εκδίκησης, το πιάτο που τρώγεται κρύο, περιγράφει ένα από τα πιο χαμηλά αλλά και αρχέγονα ένστικτα του ανθρώπου... Είναι η κεντρική έννοια γύρω από την οποία περιστρέφεται αυτό το βιβλίο...

Μια αιματηρή ληστεία συμβαίνει στο κέντρο του Όσλο... Ο ληστής φεύγει με τα χρήματα αφού πρώτα έχει εκτελέσει εν ψυχρώ την ταμία... Την υπόθεση αναλαμβάνει ο Harry Hole ο οποίος βρίσκεται με την σειρά του μπλεγμένος σε μια άλλη υπόθεση καθώς μια πρώην ερωμένη του βρίσκεται δολοφονημένη την επομένη της νύχτας που ο Harry είναι προσκαλεσμένος στο σπίτι της αλλά ο ίδιος δεν θυμάται απολύτως τίποτα από την νύχτα αυτή... Οι ληστείες στο Όσλο συνεχίζονται, ο Harry νιώθει τον κλοιό γύρω του να σφίγγει και ένοχος μπορεί να είναι ο οποιοσδήποτε...

Σε αυτό το βιβλίο ο Nesbo  μας παρουσιάζει πρώτη φορά την Beate Lønn, την συνεργάτιδα και φίλη του Harry με την υπερανεπτυγμένη ατρακτοειδή έλικα που δεν ξεχνάει ποτέ πρόσωπα... Εμφανίζεται και πάλι ο  Tom Waaler, ο άσπονδος εχθρός του Harry που τόσο κρίσιμο ρόλο είχε παίξει στο προηγούμενο βιβλίο, τον "Κοκκινολαίμη"...  Ο Nesbo , όπως και στα προηγούμενα βιβλία του, ξέρει να πλέκει εκπληκτικά την πλοκή του, χτίζοντας την μεθοδικά... Η συγκεκριμένη παρουσιάζει μια αυξημένη πολυπλοκότητα καθώς ο Harry για να λύσει τις υποθέσεις θα πρέπει να ψάξει πολύ και να σκαλίσει σκελετούς θαμμένους σε ντουλάπες, να κάνει συμφωνίες με το διάβολο για να φτάσει στον σκοπό του... Πολλές φορές ο αναγνώστης, μαζί με τον Harry, θα νομίσει ότι βρήκε την άκρη του νήματος αλλά σύντομα θα καταλάβει ότι βρίσκεται και πάλι στην αρχή... Οι ανατροπές είναι πολλές και καλά δουλεμένες και τεκμηριωμένες αν και σε κάποια σημεία ένιωσα ότι κάποια πράγματα ήταν "τραβηγμένα από τα μαλλιά" χωρίς όμως να νιώσω ότι το αποτέλεσμα ήταν φτηνό ή γελοίο... Οι χαρακτήρες είναι καλά δουλεμένοι, ακόμα και κάποιοι όχι πρωταγωνιστικοί, όπως της Astrid Monsen, αν και κάποιοι όπως της Beate, δεδομένης και της σημαντικότητάς της, θα μπορούσε να είναι χτισμένοι με μεγαλύτερη σχολαστικότητα... Πολύ ενδιαφέρων είναι ο χαρακτήρας του Tom Waaler, γοητευτικός και τρομακτικός ταυτόχρονα, τον οποίο ελπίζω να εξελίξει περισσότερο στο επόμενο βιβλίο της σειράς, "Το Αστέρι του Διαβόλου", το οποίο ξεκίνησα χθες να διαβάζω... Για άλλη μια φορά στο "Νέμεσις"  ο Nesbo επιδεικνύει την δεξιοτεχνία του στις σκηνές δράσης και στον καταιγιστικό ρυθμό περιγραφής που σε κάνει να νιώθεις ότι βλέπεις τα πάντα σαν σε κινηματογραφική ταινία....

Το "Νέμεσις" είναι συνολικά ένα πολύ καλό βιβλίο και όποιος το διαβάσει καταλαβαίνει απόλυτα το πόσο σημαντικό ρόλο έπαιξε στο χτίσιμο της δημοτικότητας γύρω από τον Harry Hole και τον Jo Nesbo ... Ανήκει στην κατηγορία των page turners, κάποιες από τις σκηνές που περιγράφει απλά δεν μπορούσα να τις αφήσω μισοτελειωμένες όσο και νύσταζα ή βιαζόμουν... 

Παρασκευή, 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 τα στοιχεία μόνο εκείνων των πελατών που μας αφορούν...

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

Ου γαρ έρχεται μόνον...

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

Σάββατο, 14 Νοεμβρίου 2015

Αντιφάσεις...

Οι αντιφάσεις της a la carte ευαισθησίας των social media είναι τεράστιες... Από το πρωί το Facebook μας προτείνει να αλλάξουμε την εικόνα του προφίλ μας με την tricolore για συμπαράσταση στα θύματα των τρομοκρατικών επιθέσεων στη Γαλλία... Δεν έδειξε ποτέ στο παρελθόν την ίδια ευαισθησία για τα θύματα της Συρίας, του Αφγανιστάν, του Ιράκ, της Παλαιστίνης, του Λιβάνου, για τα εκατομμύρια πρόσφυγες που σκοτώνονται καθημερινά στην προσπάθειά τους να ζήσουν μια ζωή μακρυά από τον πόλεμο, τον φόβο και την πείνα... Ίσως γιατί κανένας από αυτούς δεν είναι λευκός και χριστιανός...

Φυσικά και πονάμε και συμπαραστεκόμαστε στους αθώους που πλήρωσαν με τη ζωή τους τον φανατισμό αλλά μην ξεχνάμε τι τον γέννησε... Φυσικά δεν εννοώ το Ισλάμ που μια χαρά πολιτισμένο και κοσμικό ήταν μέχρι που οι Δυτικοί αποφάσισαν να παίξουν κουκλοθέατρο με ανθρώπινες μαριονέτες και απλά τους ξέφυγε το παιχνίδι από τα χέρια... Για τις ευθύνες αυτές πάντα σιωπή κι εθνική ομοψυχία...

Δευτέρα, 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...

Κυριακή, 8 Νοεμβρίου 2015

Αναζητώντας χώρο και χρόνο...

Ο ήλιος λάμπει, η Μεσογείων είναι άδεια και έτοιμη να υποδεχτεί σε λίγες ώρες του πρώτους δρομείς που θα φτάσουν από τον Μαραθώνα... Πριν από δύο χρόνια τέτοια μέρα είχα πάρει το ποδήλατο και κατέβηκα μέχρι το Καλλιμάρμαρο για να δω τον τερματισμό και να νιώσω το vibe της ημέρας, σήμερα είμαι από τις 9 παρά στο Starbucks της Αγίας Παρασκευής και κάνω μια απέλπιδα προσπάθεια να παραδώσω την εργασία μου για την πρώτη εβδομάδα του course Regression Models... Το να βρεις χώρo και χρόνο για επιμόρφωση όταν έχεις δύο μικρά παιδιά, μερικές φορές είναι δύσκολο... :)

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

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

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

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

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