Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Business Intelligence Portfolio


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Business Intelligence Portfolio

  1. 1. Business Intelligence Portfolio Eileen Sauer Birmingham, AL 35243 (205) 746-5599
  2. 2. SetFocus Business Intelligence Masters Program The SetFocus Master's Program is 400 hours of project-based experience in the entire Microsoft BI Stack. This program is equivalent to about two years of work experience. Core technologies covered:  Microsoft SQL Server 2005  Microsoft SQL Server 2005 Integration Services (SSIS)  Microsoft SQL Server 2005 Analysis Services (SSAS)  Microsoft SQL Server 2005 Reporting Services (SSRS)  Microsoft Office SharePoint Server 2007 (MOSS)  Microsoft Office Performance Point Server Introduction: Project Summary Design and build a Business Intelligence solution for a simulated construction company to track employee, customer, job order, and timesheet information. Audience  Business executives.  Information workers.  IT managers. Project Goals  Create an ETL solution to update the SQL Server 2005 database from Excel and flat file sources using SSIS.  Create a cube with SSAS, using the snowflake architecture.  Implement a variety of MDX queries to slice and sort data in various ways.  Implement business critical Key Performance Indicators (KPIs) in SSAS.  Use Excel 2007 to display the data in the cube as well as the KPIs, displaying statuses and trends.  Produce detail and summary reports using SSRS.  Implement business intelligence dashboards using MOSS 2007.  Create score cards using MS Office Performance Point. Eileen Sauer – Page 2 of 28
  3. 3. Integration Services  Create packages to transfer the data from different raw data sources (Excel, CSV). Data sources are both normalized and non-normalized.  Do a full load of data into MS SQL Server 2005.  Run scheduled packages nightly to import/update any additional information.  Perform validation to detect errors (e.g. child records with invalid parent records).  Generate emails with the results, including rows inserted, updated. Errors are redirected to logfiles which become email attachments.  Create a separate package to reindex and shrink the database, as well as perform nightly backups of the database. Screenshots: This particular package required reading multiple CSV files and totalling record counts for all files. Following are the control flow and data flow screenshots. Control flow for a package Eileen Sauer – Page 3 of 28
  4. 4. Data flow for a package: Here is the VB code used to keep track of the totals: ' Microsoft SQL Server Integration Services Script Task ' Write scripts using Microsoft Visual Basic ' The ScriptMain class is the entry point of the Script Task. Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Runtime Public Class ScriptMain ' The execution engine calls this method when the task executes. ' To access the object model, use the Dts object. Connections, variables, ' events, and logging features are available as static members of the Dts ' class. ' Before returning from this method, set the value of Dts.TaskResult to ' indicate success or failure. ' ' To open Code and Text Editor Help, press F1. ' To open Object Browser, press Ctrl+Alt+J. Eileen Sauer – Page 4 of 28
  5. 5. Public Sub Main() ' ' Accumulate grand totals for all source files processed ' Dts.Variables("TotalInsertedRowCount").Value = _ CInt(Dts.Variables("InsertedRowCount").Value) + _ CInt(Dts.Variables("TotalInsertedRowCount").Value) Dts.Variables("TotalUpdatedRowCount").Value = _ CInt(Dts.Variables("UpdatedRowCount").Value) + _ CInt(Dts.Variables("TotalUpdatedRowCount").Value) Dts.Variables("TotalInvalidEmployeeRowCount").Value = _ CInt(Dts.Variables("InvalidEmployeeRowCount").Value) + _ CInt(Dts.Variables("TotalInvalidEmployeeRowCount").Value) Dts.Variables("TotalInvalidJobRowCount").Value = _ CInt(Dts.Variables("InvalidJobRowCount").Value) + _ CInt(Dts.Variables("TotalInvalidJobRowCount").Value) Dts.Variables("TotalJobAlreadyClosedRowCount").Value = _ CInt(Dts.Variables("JobAlreadyClosedRowCount").Value) + _ CInt(Dts.Variables("TotalJobAlreadyClosedRowCount").Value) Dts.Variables("TotalSourceRowCount").Value = _ CInt(Dts.Variables("TimeSheetSourceRowCount").Value) + _ CInt(Dts.Variables("TotalSourceRowCount").Value) Dts.TaskResult = Dts.Results.Success End Sub End Class Eileen Sauer – Page 5 of 28
  6. 6. Main package which runs all of the packages: Eileen Sauer – Page 6 of 28
  7. 7. Analysis Services Create an SSAS solution in BIDS, screenshot of the DSV: Some sample MDX labs and query results: -- For the last two quarters of available data, and for Product -- Action Figures and all the SIBLINGS as rows, show the dollar -- sales, and the dollar sales as a % of the dollar sales for the -- “parent” product. WITH MEMBER [PctOfParent] AS [Measures].[Dollar Sales] / ([Measures].[Dollar Sales], [Product].[byCategory].Parent), FORMAT_STRING = 'Percent' SELECT LastPeriods (2, [Time].[Quarter].LastChild) * {[Measures].[Dollar Sales], [PctOfParent]} on columns, [Product].[ByCategory].[Action Figures].Siblings on rows FROM Sales Eileen Sauer – Page 7 of 28
  8. 8. -- For all 12 months of 2005 as rows, show Monthly Sales, QTD -- Sales, YTD Sales, and the cumulative sales going all the way -- back to the beginning of time. WITH MEMBER [Monthly Sales] AS ([Measures].[Dollar Sales],[Time].[Month]), FORMAT_STRING = 'Currency' MEMBER [QTD Sales] AS SUM (PeriodsToDate ([Time].[YQMD].[Quarter], [Time].[YQMD].CurrentMember), [Measures].[Dollar Sales]), FORMAT_STRING = 'Currency' MEMBER [YTD Sales] AS SUM (PeriodsToDate ([Time].[YQMD].[Year], [Time].[YQMD].CurrentMember), [Measures].[Dollar Sales]), FORMAT_STRING = 'Currency' MEMBER [SalesAllTimes] AS SUM ( {OpeningPeriod ([Time].[YQMD].CurrentMember.Level, [Time].[YQMD].[2004]) : [Time].[YQMD].CurrentMember}, [Measures].[Dollar Sales]), FORMAT_STRING = 'Currency' Eileen Sauer – Page 8 of 28
  9. 9. SELECT {[Monthly Sales], [QTD Sales], [YTD Sales], [SalesAllTimes]} on columns, [Time].[Month].Children on rows FROM Sales WHERE ([Product].[Electronics], [Customer].[Region].[Central], [Time].[2005]) -- For all Product Family members across the top, show Dollar -- Sales and Unit Sales. For the rows, show 2005 down to Month. SELECT ([Product].[Family] * {[Measures].[Dollar Sales],[Measures].[Unit Sales]}) on columns, DESCENDANTS ( {[Time].[2005]}, [Time].[YQMD].[Month] , SELF_AND_BEFORE) on rows FROM Sales -- For the last month of the database, show Product SubCategories -- down the left. For columns, show Dollar Sales, the Eileen Sauer – Page 9 of 28
  10. 10. -- AveragePrice, the Dollar Sales for the previous period, and the -- % of Price Increase from the previous month to the “current” -- month. WITH MEMBER [Avg Price] AS [Measures].[Dollar Sales] / [Measures].[Unit Sales], FORMAT_STRING = 'Currency' MEMBER [PriceLastPeriod] AS ([Time].[YQMD].PrevMember, [Avg Price]), FORMAT_STRING = 'Currency' MEMBER [PctPriceIncrease] AS ([Avg Price] - [PriceLastPeriod]) / [PriceLastPeriod], FORMAT_STRING = 'Percent' SELECT {[Measures].[Dollar Sales], [Avg Price], [PriceLastPeriod], [PctPriceIncrease]} on columns, ORDER( Filter ( [Product].[Rt Prod Subcategory].Children, [PctPriceIncrease] > .10), [PctPriceIncrease], BDESC) on rows FROM Sales WHERE [Time].[Month].LastChild Eileen Sauer – Page 10 of 28
  11. 11. KPIs in Analysis Services Creating KPIs (Key Performance Indicators) in SSAS involved:  Creating calculated members in the Calculations tab  Creating KPIs to use the calculated members  Testing the KPIs in an Excel spreadsheet. Screenshot of calculated member to show Open Receivables as a % of the Invoice Amount. Eileen Sauer – Page 11 of 28
  12. 12. Screenshots for corresponding KPI which uses this calculated member: Screenshot of status expression for this KPI: Eileen Sauer – Page 12 of 28
  13. 13. Screenshot of KPI rendered in Excel: Screenshot of calculated member to show increase in the number of jobs from the previous quarter to the current quarter: Eileen Sauer – Page 13 of 28
  14. 14. Screenshot of second KPI rendered in Excel: Eileen Sauer – Page 14 of 28
  15. 15. Reporting Services Creating reports in SSRS involves creating datasets and determining the layout. Screenshot for a dataset to retrieve the previous quarter relative to the parameter selected. Eileen Sauer – Page 15 of 28
  16. 16. Screenshot of some of the code in the Layout tab to handle the fact that for trend based data, the oldest quarter/year/unit of time will not have data. Eileen Sauer – Page 16 of 28
  17. 17. This code was used to handle divide by zero issues, as well as handle the business requirements for displaying % change in overhead. Eileen Sauer – Page 17 of 28
  18. 18. Screenshot of the report output to show the % change in overhead between the previous quarter and current quarter. Eileen Sauer – Page 18 of 28
  19. 19. Screenshot of the report output to show the oldest quarter is handled gracefully, since there is no previous quarter of data. Eileen Sauer – Page 19 of 28
  20. 20. Report Subscriptions Screenshot that shows setting up a report subscription: Eileen Sauer – Page 20 of 28
  21. 21. Screenshot of the generated report output from the subscription: Eileen Sauer – Page 21 of 28
  22. 22. PerformancePoint Server 2007 Build a chart in PerformancePoint to chart the overhead dollar amount and overhead category description, by quarter. Eileen Sauer – Page 22 of 28
  23. 23. Screenshot of Filter Link editor: Eileen Sauer – Page 23 of 28
  24. 24. Screenshot of the output using PerformancePoint Preview: Eileen Sauer – Page 24 of 28
  25. 25. SharePoint Services SharePoint allowed us to create site collections and document repositories to deploy PerformancePoint dashboards, SSRS reports, and Excel documents (including client sites that didn't have Excel installed). We were also able to set up scheduled subscriptions to create generated reports. Eileen Sauer – Page 25 of 28
  26. 26. Screenshot of the same PerformancePoint dashboard displayed before, but now deployed in SharePoint and showing a dual Y-axis chart. Eileen Sauer – Page 26 of 28
  27. 27. Recommendations David Tufte, BI Specialist, SetFocus worked directly with Eileen at SetFocus “Eileen is a person that knows how to get the job done. I have witnessed her abilities to solve challenging problems, often going the extra mile to do additional research to find the best solution to the problem. She is looked upon as a leader; other team members would rely on her for help with a problem, and Eileen would never fail to help them resolve the issue. Eileen is generous with her knowledge and often shared information that was helpful to the rest of the team. Eileen would be an asset to any team.” February 12, 2009  Dean Barthuly, Microsoft BI Developer, SetFocus worked directly with Eileen at SetFocus “Eileen has an incredible depth of knowledge on how systems actually work and how that impacts the results of a given project. This gives her an ability to see issues before they become problems as you are developing. She is also a great "coach" in helping you understan a problem and allowing you to get the "AH-HA!" moment by your own skill.” January 27, 2009  Michelle White, PHR Worked with Eileen at The Middleware Company “What can I say - Eileen is capable, intelligent, hard-working, pleasant, and up to the challenge. The IT world can be so dry, but Eileen adds a much needed dose of personality and competency that outshines the rest. Working with her via The Middleware Company was always enjoyable, and her work ethic is to be admired.” April 21, 2005 Eileen Sauer – Page 27 of 28
  28. 28. Chris Bull, Graduate, SetFocus studied with Eileen at SetFocus Master's Program “Eileen exhibited a strong technical background from day one. She possesses a vast wealth of experience which she used to assist others in learning these advanced topics. She quickly learned and applied new concepts even serving as a team lead bringing her project in on time and budget. I was deeply impressed by her willingness to capture and share information with others. Eileen would be a valuable addition to any organization and I would gladly work with her again. Sincerely, Chris Bull” February 9, 2009  Roger Mabry, Student, SetFocus studied with Eileen at SetFocus Master's Program “Eileen demonstrated a superb ability to grasp technically complex concepts quickly and apply them. When faced with difficult situations such as a server outage she persevered and ensured that her team finished their project on time and within budget. Eileen will make an excellent addition to any organization. I would personally work with Eileen anytime” February 5, 2009 Eileen Sauer – Page 28 of 28