Más contenido relacionado
Similar a Chris Bull's Bi Portfolio (20)
Chris Bull's Bi Portfolio
- 2. Contents
This portfolio contains examples of my development
skills in the Business Intelligence arena.
Contents Page
Data Modeling 3
SQL Programming 6
SQL Server Integration Services (SSIS) 9
SQL Server Analysis Services (SSAS) 14
MDX Programming 19
SQL Server Reporting Services (SSRS) 22
Performance Point Server (PPS) 26
SharePoint Server 30
Experience Summary 33
Recommendations 34
2
© Chris Bull 2009
- 4. This relational physical
model was created for a
mobile dispatching
application for telecom
Technicians
4
© Chris Bull 2009
- 5. This model is for a book sales data
warehouse
5
© Chris Bull 2009
- 6. SQL Server
TSQL Programming
6
© Chris Bull 2009
- 7. This query joins the Item and Reservation tables to produce
a list of books where there are ten copies or less and more
than 50 reservations.
Sample Output
SELECT ti.title_no
, ti.title
, rs.isbn
, COUNT(*)
FROM Title ti
JOIN item itm ON ti.title_no = itm.title_no
JOIN reservation rs ON rs.isbn = itm.isbn
WHERE
11 > (SELECT count(cp.copy_no)
FROM copy cp
WHERE cp.isbn = itm.isbn)
AND itm.isbn IN (SELECT DISTINCT rs1.isbn
FROM reservation rs1
WHERE 50 < (SELECT COUNT(*)
FROM Reservation rs2
WHERE rs1.isbn = rs2.isbn))
GROUP BY ti.title_no, ti.title, rs.isbn
ORDER BY ti.title_no
7
© Chris Bull 2009
- 8. This script loads the Date Dimension of an Analysis Services
staging database. This script could easily be converted into
a Stored Procedure with Start and End date parameters.
USE B4_TeamE_Staging
go
DECLARE @StartDate As Datetime,
@EndDate As Datetime
SET @StartDate = '1/1/2002'
Sample Output
SELECT @EndDate = CONVERT ( varchar(20) , MAX(CreationDate), 101 ) FROM Applicant
PRINT 'Start Loop'
WHILE @StartDate <= @EndDate
BEGIN
INSERT INTO dimDate (CreationDate
,Year
,WeekEnding
,MonthValue
,MonthDesc
,QtrValue
,QtrDesc)
VALUES( @StartDate,
year(@StartDate),
@StartDate + ( 7 - datepart(weekday,@StartDate)),
-- Compute Weekending Date
Convert(Varchar(5),year(@StartDate)) +
Right(('0'+ convert(Varchar(50),datepart(m,@StartDate))),2),
-- ex. 200501, 200502..
datename(m,@StartDate), -- set name of the month
Convert(Varchar(5),year(@StartDate)) +
Convert(Varchar(4),datepart(q, @StartDate)),
-- ex. 20051, 20052, 20053, 20054
Datename(yyyy,@StartDate) + ' Q' + datename(q,@StartDate) -- ex. 2005 Q1...
)
SET @StartDate = Dateadd(d,1,@StartDate)
PRINT @startdate
END
PRINT 'End Loop'
8
© Chris Bull 2009
- 9. SQL Server
Integration Services (SSIS)
9
© Chris Bull 2009
- 10. This ETL process imports multiple CSV files containing Job Time Sheets and
loads them into a staging database. Upon completion, a status email is sent
indicating job statistics and if errors occurred the error log file is attached.
10
© Chris Bull 2009
- 11. This data flow task for the Job Time Sheets package processes
through a single CSV file doing multiple lookups to ensure
database integrity. It logs any rows that error out for review
and correction.
11
© Chris Bull 2009
- 12. This VB.Net script was used in this package to keep a
running total of the rows processed and the rows that
contained errors.
' 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.
Public Sub Main()
Dts.Variables(quot;TotalFilesProcessedCountquot;).Value = CInt(Dts.Variables(quot;TotalFilesProcessedCountquot;).Value) + 1
Dts.Variables(quot;TotalErrorRowCountquot;).Value = _
CInt(Dts.Variables(quot;TotalErrorRowCountquot;).Value) + CInt(Dts.Variables(quot;ErrorRowCountquot;).Value)
Dts.Variables(quot;TotalInsertRowCountquot;).Value = _
CInt(Dts.Variables(quot;TotalInsertRowCountquot;).Value) + CInt(Dts.Variables(quot;InsertRowCountquot;).Value)
Dts.Variables(quot;TotalUpdateRowCountquot;).Value = _
CInt(Dts.Variables(quot;TotalUpdateRowCountquot;).Value) + CInt(Dts.Variables(quot;UpdateRowCountquot;).Value)
Dts.Variables(quot;TotalRowCountquot;).Value = _
CInt(Dts.Variables(quot;TotalRowCountquot;).Value) + CInt(Dts.Variables(quot;FileRowCountquot;).Value)
Dts.TaskResult = Dts.Results.Success
End Sub
End Class
12
© Chris Bull 2009
- 13. This is a complex package that reads in a distinct list of
values from a table and then combines them into a smaller
standardized list based on predefined business rules.
13
© Chris Bull 2009
- 14. SQL Server
Analysis Services (SSAS)
14
© Chris Bull 2009
- 20. The query computes Weekly Overhead costs for the currently
selected period, previous period, and the percent change over
the previous period
WITH
Sample Output
MEMBER [Current Period] as
[Measures].[Weekly Over Head]
MEMBER [Previous Period] as
([Measures].[Weekly Over Head]
,[All Works Calendar].[FY Calendar].PrevMember)
,FORMAT_STRING = 'Currency'
MEMBER [Pct Change] AS
CASE
WHEN ([Current Period] = NULL AND [Previous Period] = NULL)
THEN NULL
WHEN [Previous Period] <> 0 THEN
([Current Period] - [Previous Period]) / [Previous Period]
ELSE 'N/A'
END
,FORMAT_STRING = 'Percent'
SELECT {[Current Period],[Previous Period],[Pct Change]}
ON COLUMNS,
NON EMPTY
[Overhead].[Description].Members ON ROWS
FROM [All Works Cube]
WHERE ([All Works Calendar].[2005 Q4])
20
© Chris Bull 2009
- 21. This query produces a list of Jobs and within Job the
top three employees who worked the most hours
SELECT [Measures].[Hoursworked] ON COLUMNS,
NON EMPTY
ORDER (generate ([Job Master].[Description].Children,
([Job Master].[Description].CurrentMember,
Topcount ([Employees].[Full Name].Children
,3
,[Measures].[Hoursworked]))),
[Measures].[Hoursworked],DESC) ON ROWS
FROM [All Works Cube]
Sample Output
WHERE [All Works Calendar].[Fy Year].[2005]
21
© Chris Bull 2009
- 23. This report shows an employee’s labor by week ending
date and job using grouping and cascading parameters
23
© Chris Bull 2009
- 24. Here is an example of an
Exploded Pie Chart with document map
24
© Chris Bull 2009
- 25. A complex matrix report using data
from an Analysis Services cube
25
© Chris Bull 2009
- 28. Custom MDX query for the top chart on the
previous slide
28
© Chris Bull 2009
- 29. Score card has hot link to graph for Sales Dollars
29
© Chris Bull 2009
- 33. Experience Summary
14 years of I.T. experience
Requirements gathering
Data Modeling - Logical, Physical, Star, Snowflake
Full life cycle systems development
SQL - Queries, Stored Procedures, Triggers, Query
Optimization
MS Business Intelligence
SQL Server 2005
Integration Services (SSIS)
Analysis Services (SSAS)
MDX Programming
Reporting Services (SSRS)
Excel & Excel Services
Performance Point Server
SharePoint Server
33
© Chris Bull 2009
- 34. Recommendations
Roger Mabry,
Student, SetFocus (academic)
studied with you
“Chris is a dynamic individual who leads by example. His insight to issues & projects are phenomenal. Chris acted as
Team leader for the final project. With systems down, Chris persevered as though there were no obstacles to overcome.
With 25% of his teams resources eliminated, His team came through on time & under budget. Chris is a quot;GO TOquot; guy
& comes quot;Highlyquot; Recommended.” February 5, 2009
Robert Witkowski,
Dean of Students, SetFocus (academic)
advised you
“To Whom It May Concern: It is my pleasure to provide a recommendation for Chris Bull. Graduating from the
SetFocus Master’s Program, Chris Bull excelled in our intense, integrated, in-depth, full time Business Intelligence
Training Program. I was impressed by Chris’s ability to work with many technologies during his time with SetFocus.
Chris has gained experience with the latest Microsoft BI Technologies, including but not limited to: • Microsoft SQL
Server Integration Services (SSIS) • Microsoft SQL Server Analysis Services (SSAS) • Microsoft SQL Server Reporting
(SSRS) • Microsoft Office SharePoint Server 2007 In addition, Chris has established competency with defining business
requirements, designing the Business Process Model and developing, deploying, and managing a BI System. I found
Chris’s excellent work ethic was demonstrated by his ability to work in an environment with firm deadlines, very large
workloads, and complex specifications. Chris delivers projects in a time efficient manner, is flexible with specification
changes and is able to work within teams on assigned projects. I recommend Chris as a solid addition to your Business
Intelligence staff. If you would like more information, I’d be happy to provide it.
Sincerely,
Robert Witkowski Dean of Students rwitkowski@setfocus.com” February 6, 2009
34
© Chris Bull 2009