ΠΑΝΕΠΙΣΗΜΙΟ ΠΕΙΡΑΙΩ ΣΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗ ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΣΑ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ Νίκος Γιατράκος (ngiatrak@unipi.gr) 1. SQL Server Reporting Services (SSRS) Component - Συνοπτικά Σο συστατικό SSRS του SQL Server αποτελεί ένα σύνολο από εργαλεία και προγραμματιστικές διεπαφές που υποστηρίζουν τη δημιουργία και διάθεση/δημοσίευση αναφορών δεδομένων διαφόρων τύπων. Σα βασικά συστατικά του SSRS καθώς και η μεταξύ τους επικοινωνία παρουσιάζονται στην ακόλουθη εικόνα. Εικόνα 1: SSRS - Γενικό Αρχιτεκτονικό Σχήμα (Πηγή: SQL Server 2005 Books Online (November 2008)-Reporting Services Component Overview) Ο Report Server αποτελεί τον πυρήνα των Reporting Services του SQL Server και είναι υλοποιημένος υπό μορφή Windows Service και Web Service. Η πρώτη από αυτές τις υπηρεσίες παρέχει δυνατότητες αρχικοποίησης και διανομής των αναφορών, ενώ η δεύτερη διαθέτει σειρά προγραμματιστικών διεπαφών που μπορούν να χρησιμοποιηθούν από τις εφαρμογές πελάτες (clients) προκειμένου να έχουν πρόσβαση στις διαθέσιμες αναφορές. Νίκος Γιατράκος 1
Ο Report Manager του SSRS αποτελεί Web-based διαχειριστική πηγή για τις υπηρεσίες αναφορών, ενώ οι Report Designer και Report Builder αποτελούν εργαλεία ανάπτυξης reports. Η ReportServer database χρησιμοποιείται από τον Report Server προκειμένου να διατηρεί πληροφορίες μετα-δεδομένων και ορισμούς αναφορών (report definitions). Επιπροσθέτως, κατά την εγκατάσταση του SSRS δημιουργείται συμπληρωματικά η ReportServerTempDB database για την κάλυψη απαιτήσεων προσωρινής αποθήκευσης. Οι προαναφερθείσες (default) βάσεις δεδομένων που χρησιμοποιούνται από το Report Server δε θα πρέπει να συγχέονται με τις πηγές δεδομένων (data sources, κάτω δεξιά μέρος στην Εικόνα 1) καθώς τα δεδομένα που χρησιμοποιούνται και παρουσιάζονται από τις αναφορές αντλούνται από οποιεσδήποτε (μία ή περισσότερες) βάσεις δεδομένων. 2. Δημιουργία Απλής Αναφοράς Για τη δημιουργία μιας πρώτης, απλής αναφοράς εκτελούμε τα εξής βήματα: Βήμα 1: Εκκινούμε το Business Intelligence Development Studio του SQL Server Start> All Programs> Microsoft SQL Server 2005> SQL Server Business Intelligence Development Studio Βήμα 2: Από το menu επιλέγουμε File> New> Project. το παράθυρο που εμφανίζεται προχωρούμε στην επιλογή Report Server Project Wizard. Έπειτα δίνουμε όνομα στο υπό δημιουργία project και καθορίζουμε την τοποθεσία όπου θα αποθηκευτούν τα σχετικά αρχεία. Εικόνα 2: Δημιουργία Report Server Project Νίκος Γιατράκος 2
Βήμα 3: Ακολούθως ανοίγει ο Report Wizard, στην πρώτη σελίδα του οποίου απλώς επιλέγουμε Next, οπότε και καλούμαστε να ορίσουμε την πηγή δεδομένων για την αναφορά που πρόκειται να δημιουργήσουμε. Καθορίζουμε το όνομά του data source και το αλφαριθμητικό σύνδεσης με αυτό. Εικόνα 3: Καθορισμός ονόματος πηγής δεδομένων την περίπτωσή μας θα εργαστούμε επί της sample db AdventureWorks οπότε αποδίδουμε αντίστοιχο όνομα στην πηγή δεδομένων. Έπειτα, προκειμένου να καθορίσουμε το αλφαριθμητικό σύνδεσης επιλέγουμε το πλήκτρο Edit. το παράθυρο που ανοίγει προβαίνουμε σε ρυθμίσεις αντίστοιχες με αυτές που δείχνει η Εικόνα 4 Εικόνα 4: Καθορισμός ιδιοτήτων σύνδεσης Νίκος Γιατράκος 3
Επιλέγουμε «ΟΚ» και επιστρέφοντας στο αρχικό παράθυρο ενεργοποιούμαι το checkbox Make this a shared data source. Με τον τρόπο αυτό σε περίπτωση δημιουργίας πολλαπλών αναφορών στο project, αυτές θα μπορούν να μοιράζονται την εν λόγω πηγή δεδομένων AdventureWorks. τη συνέχεια επιλέγουμε Next. Βήμα 4: ε αυτό το βήμα θα πρέπει ν α πληκτρολογήσουμε το SQL ερώτημα, βάσει του οποίου θα αντληθούν τα δεδομένα από την AdventureWorks που θα περιληφθούν στην αναφορά. ε αυτή την πρώτη, απλή αναφορά θα δώσουμε το ακόλουθο ερώτημα: Και επιλέγουμε Next SELECT * FROM Sales.SalesOrderHeader WHERE OnlineOrderFlag=1 Βήμα 5: τόχος μας αποτελεί η απλή αναφορά που δημιουργούμε να περιέχει μια κατάσταση με τις παραγγελίες που έχουν πραγματοποιηθεί μέσω web όπως υποδηλώνει το ερώτημα του βήματος 4. Επομένως στην οθόνη που καλούμαστε να επιλέξουμε τύπο αναφοράς, αφήνουμε τον προεπιλεγμένο Tabular τύπο και επιλέγουμε Next. Βήμα 6: Κάνουμε τις επιλογές χαρακτηριστικών όπως δείχνει η επόμενη Εικόνα 5 Εικόνα 5: Επιλογές πεδίων της Tabular Αναφοράς Νίκος Γιατράκος 4
Βήμα 7: Επιλογή του Table Style. Επιλέξτε κάποιο και έπειτα Next Βήμα 8: Καθώς έχουμε ολοκληρώσει τα βασικά βήματα δημιουργίας της αναφοράς μας, στο επόμενο στάδιο του οδηγού μας ζητείται να καθορίσουμε την τοποθεσία όπου θα γίνει deploy το project αναφορών που δημιουργήσαμε και από όπου θα μπορούμε να δούμε την μοναδική (προς το παρόν) αναφορά που περιλαμβάνει. Σο default deployment location είναι http://ip_address/reportserver (π.χ http://localhost/reportserver). Αφήνουμε τα default Report Server και Deployment Paths και επιλέγουμε Next. Σέλος, δίνουμε όνομα στην αναφορά (π.χ BasicReport ) και επιλέγουμε Finish. Έπειτα από αυτά έχουμε ολοκληρώσει τη δημιουργία της αναφοράς και επιστρέφουμε στην αρχική οθόνη του SQL Server Business Intelligence Development Studio. το Solution Explorer μπορούμε να δούμε το.rdl file που αντιστοιχεί στην αναφορά που μόλις ολοκληρώθηκε. Εικόνα 6: Το αρχείο.rdl της αναφοράς Ακόμη από το tab Layout μπορούμε να δούμε τα συστατικά της αναφοράς και να επέμβουμε στη μορφοποίησή της. Με το tab Preview μας δίνεται η δυνατότητα να έχουμε εικόνα για την παρουσίασή της αναφοράς πριν το τελικό deployment. Εικόνα 7: Design View - Layout Tab Νίκος Γιατράκος 5
Για να κάνουμε deploy το project με την αναφορά που δημιουργήσαμε, στον Solution Explorer κάνουμε δεξί κλικ επί του BasicReportProject και επιλέγουμε Deploy. Εικόνα 8: BasicReportProject>Deploy Δίνοντας σε κάποιον Browser το URL του Report Manager (π.χ http://localhost/reports/ ) μπορούμε να δούμε τα Data Sources και το project που μόλις δημιουργήσαμε. Εικόνα 9: Το BasicReportProject και τα Datasources του παραδείγματος στον Report Manager Επιλέγοντας το φάκελο BasicReportProject > BasicReport έχουμε τη δυνατότητα να δούμε το τελικό report. Νίκος Γιατράκος 6
Εικόνα 10: Το τελικό report στον Report Manager 3. Roll Up και Drill Down σε Reports τη συνέχεια θα δημιουργήσουμε ένα Report το οποίο θα μας επιτρέπει να εκτελέσουμε λειτουργίες Roll up και Drill Down επί αυτού. τόχος, λοιπόν είναι η παραγωγή αναφοράς που θα παρέχει τη δυνατότητα παρουσίασης της πληροφορίας σε διαφορετικά επίπεδα λεπτομέρειας για την ιεραρχία κάποιας διάστασης. Για το σκοπό αυτό θα θεωρήσουμε την ιεραρχία: Region ----------- Country ---------- Territory Για τη δημιουργία της σχετικής αναφοράς αρχικά θα προσθέσουμε ένα ακόμη Report στο υπάρχον Report Project. Έτσι στο Solution Explorer κάνουμε δεξί κλικ στο φάκελο Reports> Add New Report. Έπειτα επαναλαμβάνουμε τα Βήματα 1-3 της προηγούμενης παραγράφου (μπορούμε να επιλέξουμε το shared data source AdventureWorks που έχουμε ορίσει προηγουμένως), έως ότου φτάσουμε στο σημείο καθορισμού του ερωτήματος που θα αντλεί τα δεδομένα της αναφοράς. Σο ερώτημα που θα χρησιμοποιήσουμε για τις ανάγκες του παραδείγματος είναι: SELECT T.[Group] Region, T.CountryRegionCode Country, T.[Name] Territory, YEAR(H.OrderDate) [Year], H.TotalDue FROM Sales.SalesOrderHeader H LEFT OUTER JOIN Sales.SalesTerritory T ON H.TerritoryID = T.TerritoryID τη συνέχεια του Report Wizard, επιλέγουμε αυτή τη φορά Report Type: Matrix και έπειτα Next. το σχεδιασμό της αναφοράς επιλέγουμε στη διάταξη γραμμών τα πεδία της ιεραρχίας, ως στήλες το πεδίο του έτους *Year+ και ως στοιχεία της πινακοειδούς Νίκος Γιατράκος 7
διάταξης το πεδίου του συνολικού χρέους *TotalDue]. Ακόμη ενεργοποιούμε την επιλογή Enable drilldown. Οι ενέργειες αυτές συνοψίζονται στην Εικόνα 11. Εικόνα 11: Διάταξη των πεδίων της Matrix Report Σέλος, επιλέγουμε το Report Style και δίνουμε όνομα στο Report που δημιουργήσαμε. Έπειτα από το deploy στον Report Server έχουμε την επόμενη εικόνα παρουσίασης των δεδομένων. Νίκος Γιατράκος 8
Εικόνα 12: Drilling Down Εικόνα 13: Rolling Up 4. Report με γραφήματα ε συνέχεια του προηγούμενου παραδείγματος θα δούμε τον τρόπο με τον οποίο μπορούμε να ενσωματώσουμε ένα απλό διάγραμμα στην αναφορά που δημιουργήσαμε στην ενότητα 2. Για το σκοπό αυτό θα επιλέξουμε από το menu: View> Toolbox > Chart και στη συνέχεια θα σχηματίσουμε την περιοχή του γραφήματος στον Report Designer. Νίκος Γιατράκος 9
Εικόνα 14: Η περιοχή του γραφήματος στον Report Designer τόχος μας είναι να παρουσιάσουμε διαγραμματική απεικόνιση του Total Due ανά χώρα και έτος. Για το σκοπό αυτό επιλέγουμε View>Datasets και : 1) Κάνουμε drag and drop το πεδίο TotalDue στην περιοχή Drop data fields here όπως φαίνεται στην Εικόνα 14. 2) Ομοίως, για το πεδίο Country και την περιοχή Drop category fields here της Εικόνα 14. 3) Ομοίως για το πεδίο Year και την περιοχή Drop Series fields here της Εικόνα 14. Για την τελική μορφοποίηση του γραφήματος κάνουμε δεξί κλικ στην περιοχή γραφήματος και επιλέγουμε Properties. Από εκεί μπορούμε να δώσουμε όνομα στο γράφημα και τους άξονές του, καθώς και να προβούμε σε οποιαδήποτε περαιτέρω μορφοποίηση επιθυμούμε. Η αναφορά έπειτα από την προσθήκη του γραφήματος (και κάνοντας εκ νέου deploy) λαμβάνει τη μορφή που παρουσιάζεται από την επόμενη εικόνα. Νίκος Γιατράκος 10
Εικόνα 15: Εμφάνιση του διαγράμματος στην τελική αναφορά 5. Slicing σε Report Η επιλογή ορισμένων μόνο στοιχείων μιας αναφοράς (θυμηθείτε την αντιστοιχία με τα cross-tabs) ονομάζεται «τεμαχισμός - slicing». τα παραγόμενα reports υπάρχει η δυνατότητα να καθορίσουμε δυναμικά την επιλογή των στοιχείων που θα περιληφθούν σε μια τέτοια λειτουργία, καθορίζοντας κατά τη διάρκεια του χρόνου εκτέλεσης το εκάστοτε slice. Για τους σκοπούς του παραδείγματος θεωρούμε ότι ο υπό εξέταση κύβος δεδομένων περιλαμβάνει τις εξής διαστάσεις : (Territory, Year, ShipMethod) Για τη δημιουργία της σχετικής αναφοράς αρχικά θα προσθέσουμε ένα ακόμη Report στο υπάρχον Report Project. Έτσι στο Solution Explorer κάνουμε δεξί κλικ στο φάκελο Reports> Add New Report. Ακολουθούμε και εδώ τα βήματα 1-3 της ενότητας 1 και στη συνέχεια δίνουμε το ακόλουθο ερώτημα στο Report Wizard: Νίκος Γιατράκος 11
SELECT T.[Name] Territory, YEAR(H.OrderDate) [Year], PS.Name, H.TotalDue FROM Sales.SalesOrderHeader H LEFT OUTER JOIN Sales.SalesTerritory T ON H.TerritoryID = T.TerritoryID LEFT OUTER JOIN Purchasing.ShipMethod PS ON H.ShipMethodID = PS.ShipMethodID WHERE PS.Name=@Slice και επιλέγουμε Next. Παρατηρήστε ότι η μεταβλητή @Slice στην where clause είναι αυτή που θα πρέπει να καθοριστεί από το χρήστη κατά τη διάρκεια του χρόνου εκτέλεσης της αναφοράς προκειμένου να διενεργηθεί ο επιθυμητός τεμαχισμός. την επόμενη οθόνη καθορίζουμε τη θέση εμφάνισης των πεδίων της αναφοράς όπως παρουσιάζει η Εικόνα 16. Εικόνα 16: H διάταξη των πεδίων της αναφοράς Νίκος Γιατράκος 12
την ακολουθία των βημάτων επιλέγουμε και πάλι Matrix ως Report Type. Ολοκληρώνουμε τον οδηγό καθορίζοντας το Report Style και δίνοντας όνομα στην αναφορά, κατά τα γνωστά. Η τελική εμφάνιση της αναφοράς στον Report Manager (αφού γίνει deploy) παρουσιάζεται στην επόμενη εικόνα. Εικόνα 17: Η αρχική εμφάνιση της αναφοράς πριν τον καθορισμό του επιθυμητού slice Είναι φανερό πως η αναφορά παραμένει κενή έως ότου καθοριστεί η επιθυμητή, από τον αναλυτή, τιμή του πεδίου slice. Αποδίδοντας τιμή στο σχετικό πεδίο και επιλέγοντας το πλήκτρο View Report έχουμε την παραγωγή αντίστοιχου Report. Νίκος Γιατράκος 13
Εικόνα 18: Sliced Report 6. Εν κατακλείδι Παρουσιάσαμε συνοπτικά τα βασικά χαρακτηριστικά του SQL Server Reporting Services Component. Εκκινώντας από την παραγωγή μιας απλής αναφοράς προχωρήσαμε στη δημιουργία περισσότερo σύνθετων πινακοειδών αναφορών, επιδεικνύοντας τον τρόπο με τον οποίο μπορούν να εκτελεστούν OLAP λειτουργίες επί αυτών. Επιπροσθέτως, παρουσιάστηκε ο τρόπος με τον οποίο μπορεί κανείς να αποκομίσει διαγραμματικές απεικονίσεις των περιεχομένων κάποιου report. Ως μια τελική παρατήρηση, σημειώνεται ότι οι παραγόμενες αναφορές μπορούν να εξαχθούν σε πληθώρα επιθυμητών μορφών και εγγράφων. Ο αναλυτής έχει τη δυνατότητα να επιλέξει τον κατάλληλο τύπο παραγόμενου εγγράφου, στον Report Manager μέσω του Export. Νίκος Γιατράκος 14
Εικόνα 19: Επιλογές εξαγωγής report σε κάποιο τύπο εγγράφου Νίκος Γιατράκος 15