Top Banner
Eileen Sauer Birmingham, AL 35243 [email protected] (205) 746-5599 Business Intelligence Portfolio
28
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Business Intelligence Portfolio

Eileen SauerBirmingham, AL 35243

[email protected]

(205) 746-5599

Business Intelligence Portfolio

Page 2: Business Intelligence Portfolio

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 SummaryDesign 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 – Volantec.biz Page 2 of 28

Page 3: Business Intelligence Portfolio

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 – Volantec.biz Page 3 of 28

Page 4: Business Intelligence Portfolio

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 SystemImports System.DataImports System.MathImports 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 – Volantec.biz Page 4 of 28

Page 5: Business Intelligence Portfolio

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 – Volantec.biz Page 5 of 28

Page 6: Business Intelligence Portfolio

Main package which runs all of the packages:

Eileen Sauer – Volantec.biz Page 6 of 28

Page 7: Business Intelligence Portfolio

Analysis ServicesCreate 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 rowsFROM Sales

Eileen Sauer – Volantec.biz Page 7 of 28

Page 8: Business Intelligence Portfolio

-- 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 – Volantec.biz Page 8 of 28

Page 9: Business Intelligence Portfolio

SELECT {[Monthly Sales], [QTD Sales], [YTD Sales], [SalesAllTimes]} on columns, [Time].[Month].Children on rowsFROM SalesWHERE ([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 rowsFROM Sales

-- For the last month of the database, show Product SubCategories-- down the left. For columns, show Dollar Sales, the

Eileen Sauer – Volantec.biz Page 9 of 28

Page 10: Business Intelligence Portfolio

-- 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 rowsFROM SalesWHERE [Time].[Month].LastChild

Eileen Sauer – Volantec.biz Page 10 of 28

Page 11: Business Intelligence Portfolio

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 – Volantec.biz Page 11 of 28

Page 12: Business Intelligence Portfolio

Screenshots for corresponding KPI which uses this calculated member:

Screenshot of status expression for this KPI:

Eileen Sauer – Volantec.biz Page 12 of 28

Page 13: Business Intelligence Portfolio

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 – Volantec.biz Page 13 of 28

Page 14: Business Intelligence Portfolio

Screenshot of second KPI rendered in Excel:

Eileen Sauer – Volantec.biz Page 14 of 28

Page 15: Business Intelligence Portfolio

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 – Volantec.biz Page 15 of 28

Page 16: Business Intelligence Portfolio

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 – Volantec.biz Page 16 of 28

Page 17: Business Intelligence Portfolio

This code was used to handle divide by zero issues, as well as handle the business requirements for displaying % change in overhead.

Eileen Sauer – Volantec.biz Page 17 of 28

Page 18: Business Intelligence Portfolio

Screenshot of the report output to show the % change in overhead between the previous quarter and current quarter.

Eileen Sauer – Volantec.biz Page 18 of 28

Page 19: Business Intelligence Portfolio

Screenshot of the report output to show the oldest quarter is handled gracefully, since there is no previous quarter of data.

Eileen Sauer – Volantec.biz Page 19 of 28

Page 20: Business Intelligence Portfolio

Report Subscriptions

Screenshot that shows setting up a report subscription:

Eileen Sauer – Volantec.biz Page 20 of 28

Page 21: Business Intelligence Portfolio

Screenshot of the generated report output from the subscription:

Eileen Sauer – Volantec.biz Page 21 of 28

Page 22: Business Intelligence Portfolio

PerformancePoint Server 2007

Build a chart in PerformancePoint to chart the overhead dollar amount and overhead category description, by quarter.

Eileen Sauer – Volantec.biz Page 22 of 28

Page 23: Business Intelligence Portfolio

Screenshot of Filter Link editor:

Eileen Sauer – Volantec.biz Page 23 of 28

Page 24: Business Intelligence Portfolio

Screenshot of the output using PerformancePoint Preview:

Eileen Sauer – Volantec.biz Page 24 of 28

Page 25: Business Intelligence Portfolio

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 – Volantec.biz Page 25 of 28

Page 26: Business Intelligence Portfolio

Screenshot of the same PerformancePoint dashboard displayed before, but now deployed in SharePoint and showing a dual Y-axis chart.

Eileen Sauer – Volantec.biz Page 26 of 28

Page 27: Business Intelligence Portfolio

LinkedIn.com Recommendations

David Tufte, BI Specialist, SetFocusworked 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, SetFocusworked 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, PHRWorked 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 – Volantec.biz Page 27 of 28

Page 28: Business Intelligence Portfolio

Chris Bull, Graduate, SetFocusstudied 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, SetFocusstudied 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 – Volantec.biz Page 28 of 28