More Related Content
Similar to Agnes's BI Portfolio Handout Version
Similar to Agnes's BI Portfolio Handout Version (20)
Agnes's BI Portfolio Handout Version
- 1. 9/22/2009
Business Intelligence
Portfolio
Agnes Tetter
agnes_tetter@yahoo.com
August 22, 2009
TABLE OF CONTENTS
This portfolio includes examples of my development skills
in Business Intelligence Area
Data Modeling
SQL Server T-SQL Programming
SQL Server Integration Services (SSIS)
SQL Server Analysis Services (SSAS)
MDX Programming
SQL Server Reporting Services (SSRS)
Performance Point Server (PPS) - Dashboard
MS Office SharePoint Server (MOSS)
© Agnes Tetter 2009
1
- 2. 9/22/2009
DATA MODELING
© Agnes Tetter 2009
RELATIONAL MODEL FOR
EMPLOYEE SELF-SERVICE SYSTEM
SELF-
This relational model was used for
the development of an Automated
Equipment check-in/check-out and
tracking system (AECTS) that will
streamline equipment check-in and
check-out, its availability, and will
keep track of the current location of
equipment (if borrowed, the
expected date of return can be
viewed and the job site location of
the employee who borrowed it can
also be viewed).
© Agnes Tetter 2009
2
- 3. 9/22/2009
RELATIONAL MODEL FOR
STI CLASS SCHEDULING SYSTEM
This relational data model was used for
the class scheduling of STI-Cagayan De
Oro. I used ER Assistant Software for
designing the schema and this project
was developed using MS Access.
© Agnes Tetter 2009
RELATIONAL DATA MODEL FOR
ALLWORKS DATABASE
This is the relational database that
we used in our first project. The
schema was created from MS
Visio and the T-SQL script that
was generated was run in MS SQL
Server Management Studio for the
creation of the staging database.
© Agnes Tetter 2009
3
- 4. 9/22/2009
BOOK SALE DATA WAREHOUSE
DIMENSIONAL MODEL
This data model was built in MS
Visio, a combination of snowflakes
and star schema.
In this model we have two fact
tables, these are the
FactBookSales and
FactBookEval.
FactBookSales is built for each
state, customers, date, sales type,
and book.
FactBookEval is built for each
book and date.
We also used MS Visio to
generate the T-SQL script to
create the staging database.
© Agnes Tetter 2009
SQL SERVER
T-SQL PROGRAMMING
© Agnes Tetter 2009
4
- 5. 9/22/2009
THIS QUERY WILL DISPLAY ALL THE RECORDS WITH A TOTAL GREATER
THAN OR EQUAL TO 5. THE HOTTEST ITEM WAS LISTED FIRST.
DECLARE @txtMinimumTotal int
SET @txtMinimumTotal=5
SELECT oi.ISBN, bo.Title, SUM(oi.QuantityOrdered) Total
FROM OrderItems oi
INNER JOIN Books bo
ON oi.ISBN=bo.ISBN
GROUP BY oi.ISBN, bo.Title
Sample Output
HAVING SUM(oi.QuantityOrdered)>= @txtMinimumTotal
ORDER BY Total DESC, bo.Title
© Agnes Tetter 2009
THIS QUERY RETURNS BOOKS THAT ARE CURRENTLY AVAILABLE FOR AND
WITH AN ISBN OF 500 OR 1000 AND
Sample Output
SELECT co.ISBN, co.Copy_no, co.On_loan, ti.Title, it.Translation,
it.Cover
FROM dbo.copy co
INNER JOIN dbo.item it
ON co.isbn=it.isbn
INNER JOIN dbo.title ti
ON co.title_no=ti.title_no
WHERE co.ISBN IN (500, 1000) and
lower(co.on_loan) = 'n'
ORDER BY it.cover, co.copy_no, ti.title
© Agnes Tetter 2009
5
- 6. 9/22/2009
THIS QUERY RETRIEVE A SINGLE LIST OF MEMBERS BOTH ADULT AND
JUVENILE, WHO HAVE RESERVED ISBN NUMBER 288.
Sample Output
SELECT re.ISBN, Title, me.Member_no, lastname+',
'+firstname 'Name', 'Adult' AS 'Adult or Juvenile'
FROM dbo.reservation re
INNER JOIN dbo.member me
ON me.member_no=re.member_no
INNER JOIN dbo.adult ad
ON me.member_no=ad.member_no
INNER JOIN dbo.item it
ON re.isbn=it.isbn
INNER JOIN dbo.title ti
ON it.title_no=ti.title_no
WHERE re.ISBN = 288
UNION
SELECT re.ISBN, Title, me.Member_no, lastname+',
'+firstname 'Name', 'Juvenile' AS 'Adult or Juvenile'
FROM dbo.reservation re
INNER JOIN dbo.member me
ON me.member_no=re.member_no
INNER JOIN dbo.juvenile ju
ON me.member_no=ju.member_no
INNER JOIN dbo.item it
ON re.isbn=it.isbn
INNER JOIN dbo.title ti
ON it.title_no=ti.title_no
WHERE re.ISBN = 288
ORDER BY Name
© Agnes Tetter 2009
SQL SERVER
INTEGRATION SERVICES
(SSIS)
© Agnes Tetter 2009
6
- 7. 9/22/2009
DATA FLOW FOR CLIENT GROUPINGS
TO CLIENT XREF TABLE
This data flow read the contents
from the spreadsheet and add
them to SQL Server AllWorks
Database (refer to Slide 6 for the
relational database destination
that was used in this project).
Multiple lookups were included to
ensure database integrity. All
rows that are invalid were log and
save to csv file for review and
correction.
© Agnes Tetter 2009
CONTROL FLOW FOR JOB TIME SHEET PACKAGE
This ETL processes multiple csv
files containing Job Time Sheet
and loads them into the staging
database (AllWorks.mdb), refer to
slide 6 for the relational database
destination that was used in this
project.
Upon completion a status email is
sent for the result of the package.
Success email include counts of
rows inserted, updated, and invalid.
© Agnes Tetter 2009
7
- 8. 9/22/2009
VB.NET SCRIPT WAS USED FOR THE PACKAGE
This VB.net script was used in this
package to keep a running the
number of rows that were
processed (inserted and updated),
total of invalid rows, and the total
number of rows processed from
each CSV files in the Timesheet
folder.
© Agnes Tetter 2009
DATA FLOW FOR THE JOB TIME SHEET PACKAGE
This is the dataflow of the control flow that was shown
from slide 14.
This will read multiple Job time sheet csv from one
folder and load them to the staging database. Multiple
lookups are included to ensure data integrity.
This dataflow insert, update and logs all invalid jobs,
employee and timesheet to csv file for review and
correction.
© Agnes Tetter 2009
8
- 9. 9/22/2009
MASTER PACKAGE
This master package includes all
eight the package for this project
and they are arrange in
according to their dependencies.
This include maintenance task to
the database, it include the
following:
Back-up database
Shrinking database
Rebuilding index.
Email notification is sent if any of
the maintenance task fails and if
the maintenance task were
processed successful.
© Agnes Tetter 2009
SQL SERVER
ANALYSIS SERVICES
(SSAS)
SSAS)
© Agnes Tetter 2009
9
- 10. 9/22/2009
THE DEVELOPMENT AND DEPLOYMENT
OF ALLWORKS CUBE
In this cube we have four fact
tables and five dimension tables
created out of nine dimensions.
This shows the cube structure of
AllWorksCube. Only the five
dimensions (AllWorksCalendar,
JobMaster, Overhead,
MaterialType, and Emplooyes)
with direct relationship with the
four fact tables were shown in the
solution explorer. The four
dimension tables (client, division,
client grouping , and county) that
had no direction were hidden
under JobMaster Table.
© Agnes Tetter 2009
BROWSING THE ALLWORKS CUBE DATA
This SSAS browser shows the Clients Name, Total Labor Cost, Total Material
Cost, Total Overhead, and Total labor Profit for each quarter in 2005.
© Agnes Tetter 2009
10
- 11. 9/22/2009
CUBE PARTITIONING AND AGGREGATION
In this project we used MOLAP for SSAS
data storage. Queries to MOLAP data
execution are significantly faster than
queries against other two storage modes
(ROLAP and HOLAP). For our cube
performance optimization we used two
partitions for each fact table. One partition
was from year 2005 down and the second
partition was from 2006 up.
Partitions allow the server to detect which
partition can be simply ignored for a query.
For example, if a query is querying the
month January for the year 2006, with this
partition, there is no need for the query to
scan the data from 2005. The following are
the names of the partition created for each
fact table.
© Agnes Tetter 2009
DEFINITION OF THE CALCULATED MEMBERS
In the Calculation Tab of AllWorks Cube,
we created eleven calculations or
measures that were used in the KPI (Key
Performance Indicator).
© Agnes Tetter 2009
11
- 12. 9/22/2009
DEFINITION OF THE
KEY PERFORMANCE INDICATORS (KPI)
Five KPIs were used in the Project. In this
example, we have the
KPITotalCostPctOverhead. This KPI uses
the TotalCostPctOverhead Measure to
determine the status:
We based the Status expression in this
condition :
0 – 10% OK
Greater than 10%, less than or equal to
15%, Warning
Greater than 15% - bad
© Agnes Tetter 2009
MDX PROGRAMMING
© Agnes Tetter 2009
12
- 13. 9/22/2009
THIS QUERY SHOW THE JOB AND THE TOP THREE EMPLOYEES WHO
WORKED THE MOST HOURS ON THAT JOB.
Sample Output
With Set [MainSet] as
Generate ( [Job Master].[Description].children,
([Job Master].[Description].currentmember,
TopCount ( [Employees].[Full Name].children, 3 ,
[Measures].[Hoursworked] )
))
Select [Measures].[Hoursworked]
on columns,
non empty
[MainSet]
on rows
From [All Works Cube]
Where [All Works Calendar].[FY Calendar].[Year].&[2005]
© Agnes Tetter 2009
THIS QUERY SHOW THE OVERHEAD BY CATEGORY IN ALPHABETICAL
ORDER. WITH COMPUTED VALUES FOR WEEKLY OVERHEAD COST FOR THE
CURRENT MINUS THE PREVIOUS OVER THE PREVIOUS VALUES.
With Member [Measures].[Current] as
-- currentmember function will returns the current member along a
Sample Output
specified hierarchy during iteration
([All Works Calendar].[FY
Calendar].currentmember,[Measures].[Weekly Over Head])
--return the value of the previous member specified in the hierarchy
Member [Measures].[Previous] as
--prevmember function will return the previous member in the level that
contains a specified member.
([Measures].[Weekly Over Head],[All Works Calendar].[FY
Calendar].prevmember)
Member [Measures].[%Change] as
--will check if the [Measures].[Previous] is equal to zero or if it empty
then it will return N/A
IIF( IsEmpty([Measures].[Previous]) or [Measures].[Previous] = 0,
'N/A',
([Measures].[Current]-
[Measures].[Previous])/[Measures].[Previous]),
format_string= '0.00%;;;;'
Select
{[Measures].[Current],[Measures].[Previous],[Measures].[%Change]
}
on columns,
[Overhead].[Description].members
on rows
From [All Works Cube]
Where [All Works Calendar].[Qtr].&[2005 Q4]
© Agnes Tetter 2009
13
- 14. 9/22/2009
THIS QUERY SHOW THE PRODUCT CATEGORIES SORTED BY PRODUCT PRICE RANGE
RANGE
IN DESCENDING ORDER. AVERAGE SALE PRICE, MAX AVERAGE PRICE AND THE
THE
DIFFERENCE BETWEEN THE TWO ARE COMPUTED.
With Member [Measures].[Avg Sales Price] as
[Measures].[Dollar Sales]/[Measures].[Unit Sales],
Sample Output
format_string = 'currency'
Member [Measures].[MaxAvgPrice] as
Max (Filter ( [Customer].[Customer].[City], [Measures].[Unit Sales] >
([Customer].[Customer].prevmember,[Measures].[Unit Sales]))
AS [CustomerFilteredCities],[Measures].[Avg Sales Price] )
Member [Measures].[MinAvgPrice] as
Min( Filter ( [Customer].[Customer].[City], [Measures].[Unit Sales] >
([Customer].[Customer].prevmember,[Measures].[Unit Sales]))
AS [CustomerFilteredCities],[Measures].[Avg Sales Price] )
Member [Measures].[Product Price Range] AS
[Measures].[MaxAvgPrice] - [Measures].[MinAvgPrice]
Select
{[Measures].[Avg Sales Price],[Product Price Range],
[MaxAvgPrice],[Measures].[MinAvgPrice]}
on columns,
Order ( [Product].[Category].[Rt Prod Category],[Measures].[Product Price
Range],bdesc)
Having [Measures].[Unit Sales] > ([Measures].[Unit
Sales],[Time].[Quarter].prevmember)
on rows
From [Sales]
Where [Time].[Quarter].lastchild
© Agnes Tetter 2009
SQL SERVER
REPORTING SERVICES
(SSRS)
SSRS)
© Agnes Tetter 2009
14
- 15. 9/22/2009
THIS REPORT RETRIEVE KPI’S GRAPHICALLY USING SSRS.
SSRS.
Sample Output
This report shows the Product
Category, the sale, return, return
percentage for the current yean and
last year. This report also indicate a
status if it currently doing good or
bad based on it’s goal.
In this report the user can sort the
report in ascending or descending
order based on the columns that he
selected.
“Even if an organization doesn’t use
SharePoint/Performance Point, we
can still render KPIs graphically in an
SSRS report.
“
© Agnes Tetter 2009
THIS REPORT SHOWS A TREND LINE CHART WITH
A TWELVE-MONTH MOVING AVERAGE USING MDX
TWELVE-
Sample Output
This report shows revenue
as a column bar and the 12
month moving average as a
horizontal line.
The trend line helps to
visually assess if monthly
revenue is above or below
the 12 month average (at that
month)
© Agnes Tetter 2009
15
- 16. 9/22/2009
THIS REPORT SHOWS THE RANKING BY REGION AND THE RANKING OF THE
PRODUCTS IN EACH REGION BASED ON DOLLAR SALE
Sample Output
This report uses MDX code that
generates a nested TOPCOUNT and
Ranking over a user-defined date
range.
In this report the user can specify
what top count in region and in
product category that he is interested
in to look at.
© Agnes Tetter 2009
PERFORMANCEPOINT
PERFORMANCEPOINT
SERVER (PPS)
DASHBOARD DESIGNER
© Agnes Tetter 2009
16
- 17. 9/22/2009
THIS REPORT CAN GENERATE THE KPI RETURNS PERCENTAGE
BOTH FOR CURRENT PERIOD AND FOR LAST YEAR
Sample Output
In this dashboard we selected the
year 2005 then – showing KPI
Returns % from WareMart (both for
current period, and for Last Year)
In this dashboard the user can select
a date from Year to Quarter to Month.
The user can also select a Product
Type, and the scorecard will show
that product, plus all the products that
belong in that type.
We used MDX code based on the
date and product selected.
© Agnes Tetter 2009
THIS REPORT WAS IMPORTED FROM SSRS
TO PERFORMANCE POINT SERVER 2007
Sample Output
This Pie Report is filter by year, the
user can select what product category
that interest him from the document
map then it will show a Pie Graph
showing the percentage in each
region for that particular product.
© Agnes Tetter 2009
17
- 18. 9/22/2009
MS OFFICE SHAREPOINT
SERVER (MOSS) 2007
© Agnes Tetter 2009
THIS REPORT WAS CREATED FROM PERFORMANCEPOINT SERVER(PPS)
AND DEPLOYED TO MS OFFICE SHAREPOINT SERVER (MOSS)
Sample Output
Employee Labor Analysis Report shows the employee
labor dollar by quarter, along with the percentage of
labor for the jobs the employee worked.
© Agnes Tetter 2009
18
- 19. 9/22/2009
THIS REPORT WAS CREATED FROM SQLSERVER REPORTING SERVICES (SSRS)
AND DEPLOYED TO MS OFFICE SHAREPOINT SERVER (MOSS)
Sample Output
Employee Jobs in Date Range Report incorporate a
cascading parameters based on the employee. Based
on the employee, we can only dropdown for week
ending dates that the employee worked.
© Agnes Tetter 2009
THIS REPORT WAS CREATED AS PIVOT TABLE FROM MS EXCEL, LINKED THE
SPREADSHEET IN PPS, AND THEN DEPLOYED TO
MS OFFICE SHAREPOINT SERVER (MOSS)
Sample Output
Job Profitability Chart Report
is filtered by County. The pivot
table uses Profit in Dollar,
Profit Percentage, and
Quarter.
The pivot table uses the
AllWorks-Project Labor Cube
as the source of data.
In this report, the user can
have a multi selection of the
counties that they are
interested to look at.
© Agnes Tetter 2009
19