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 – Volantec.biz Page 2 of 28
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 – Volantec.biz Page 3 of 28
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 – Volantec.biz Page 4 of 28
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 – Volantec.biz Page 5 of 28
6. Main package which runs all of the packages:
Eileen Sauer – Volantec.biz Page 6 of 28
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 – Volantec.biz Page 7 of 28
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 – Volantec.biz Page 8 of 28
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 – Volantec.biz Page 9 of 28
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 – Volantec.biz Page 10 of 28
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 – Volantec.biz Page 11 of 28
12. Screenshots for corresponding KPI which uses this calculated member:
Screenshot of status expression for this KPI:
Eileen Sauer – Volantec.biz Page 12 of 28
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 – Volantec.biz Page 13 of 28
14. Screenshot of second KPI rendered in Excel:
Eileen Sauer – Volantec.biz Page 14 of 28
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 – Volantec.biz Page 15 of 28
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 – Volantec.biz Page 16 of 28
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 – Volantec.biz Page 17 of 28
18. 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
19. 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
21. Screenshot of the generated report output from the subscription:
Eileen Sauer – Volantec.biz Page 21 of 28
22. 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
24. Screenshot of the output using PerformancePoint Preview:
Eileen Sauer – Volantec.biz Page 24 of 28
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 – Volantec.biz Page 25 of 28
26. 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
27. LinkedIn.com 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 – Volantec.biz Page 27 of 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 – Volantec.biz Page 28 of 28