Eileen Sauer completed a 400-hour Business Intelligence Masters Program covering Microsoft SQL Server 2005, Integration Services, Analysis Services, Reporting Services, SharePoint Server 2007, and PerformancePoint Server. For her capstone project, she designed and built a BI solution for a construction company tracking employee, customer, job, and timesheet data. Key aspects of the project included ETL processes, an SSAS cube with MDX queries and KPIs, SSRS reports, and dashboards in SharePoint and PerformancePoint.
on SQL Managment studio(For the following exercise, use the Week 5.pdfformaxekochi
on SQL Managment studio
(For the following exercise, use the Week 5 DB Design Excel file. Place the completed file in the
zip folder with your .sql files)
A landscaping firm has tasked you with developing a database for their company. You have
gathered requirements and have come up with the following list of data elements to construct a
basic data structure:
Client name Invoice number Equipment description
Invoice date Job description Payment total
Client city Equipment purchase date Employee name
Invoice total Client address
Client phone Employee payrate
Client zip code Client state
a. Using the DB Design Excel file, do the following:
Name the tables using the drop down menu above each table grid
Add the appropriate fields to each table using the drop down menus within the fields of each
table
Choose the correct data type for each field using the drop down menus within the data type
column next to the field.
Example:
(Vendors) (Invoices) (InvoiceLineItems) VendorID InvoiceID InvoiceSequence
VendorName VendorID (FK to Vendors) InvoiceID (FK to Invoices)
VendorAddress InvoiceDate InvoiceLineItemAmount
VendorAddress2 InvoiceTotal
VendorCity
New Database:
Create a new database named Finances.
Write a script that creates the following tables with the listed attributes. Reference foreign keys
where indicated. Be sure to create the tables in order of their dependencies (if you attempt to
create a table with a reference to another table that hasn’t been created, the script will fail).
Register table
RegisterID INT PK IDENTITY NOT NULL
TransactionID
Transactions table INT FK NOT NULL
TransactionID INT PK IDENTITY NOT NULL
AccountID VARCHAR(25) FK NOT NULL
TransactionDate SMALLDATETIME NOT NULL
TransactionAmount
Account table MONEY NOT NULL
AccountID VARCHAR(25) PK NOT NULL
AccountName VARCHAR(50) NOT NULL
AccountAddress VARCHAR(30) NULL
AccountCity VARCHAR(25) NULL
AccountState CHAR(2) NULL
AccountZip VARCHAR(10) NULL
AccountPhone VARCHAR(14) NULL
Create a database diagram of the Finances database. Take a screenshot of the diagram and save
it as a png file.
if you receive an error message informing you that you don’t have permission for the database,
run the following query:
ALTER AUTHORIZATION ON DATABASE::Finances TO sa
GO
Write a script that creates non-clustered indexes on the foreign keys in the Register and
Transactions tables.
Write an ALTER TABLE statement that adds check constraints to the following columns (use
NOCHECK):
AccountPhone (NOT NULL)
TransactionAmount ( > 0 )
Write an ALTER TABLE statement that adds the follow columns to these tables:
Register table:
ReferenceNo
Transactions table: VARCHAR(15) NULL
TransactionType VARCHAR(15) NOT NULL
TransactionCredit BIT NULL
In the Object Explorer, do the following
Expand the Finances database
Expand the Tables folder
Expand each table
Expand the Columns folder for each table
Expand the Constraints folder for the Account and Transactions tables
Expand the Indexes folder for the Register and Tr.
Presentacion sobre Analysis Services en SQL Server 2008
Ing. Eduardo Castro Martinez, PhD
Microsoft SQL Server MVP
http://ecastrom.blogspot.com
http://comunidadwindows.org
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