Your SlideShare is downloading. ×
SSAS Project Profile
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

SSAS Project Profile


Published on

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Business IntelligenceSSAS Development Terry Thompson
    For phase II of the Business Intelligence project I was responsible developing a Microsoft SQL Services Analysis Services (SSAS) solution in BIDS that involved creation of a cube from four Fact tables for use in development of MDX queries and KPI reporting solutions.
    Project Goals:
    • Standard named Views and Cubes for easier query and reporting development
    • 2. Modified relationships in the Data Source View to support the required reporting structures
    • 3. Required hierarchies with meaningful naming conventions created in dimensions to support required reporting
    • 4. Partitioning of the fact tables to enhance query performance
    • 5. Efficient MDX query development with standard and meaningful script documentation and easy code readability
    • 6. Development of 5 KPIs using BIDS Calculated members and KPI functions reported in Excel.
    Data Source view generated from Database selecting following tables.
    • JobSummaryFactsCountyJobOverheadSummaryFactsDivisionJobMaterialFactsEmployeesJobLaborFactsJobMasterAllWorksCalendarMaterial TypeClientsOverheadClientGroupings
    In the Data Source view, created the following relationships:
    • Allworks Calendar targeted for 4 relationships on Week ending Date from JobOverheadSummaryFacts, JobMaterialFacts, and JobLaborFacts (on week ending date) and JobSummaryFacts (on JobClosedDate)
    • 7. Employees target of relationship from JobLaborFacts (on EmployeePK)
    • 8. MaterialTypes target of relationship from JobMaterialFacts (on MaterialTypePK)
    • 9. Overhead target of relationship from (JobOverheadSummaryFacts (on OverheadPK)
    • 10. JobMasterPK is target of 4 relationships from JobOverheadSummaryFacts, JobMaterialFacts, JobLaborFacts, and JobSummaryFacts (all on JobMasterPK)
    • 11. JobMasterPK is related to Clients, on ClientPK
    • 12. Clients is related to County, which in turn is related to Division (based on CountypK, and DivisionPK)
    • 13. Clients is related to ClientGroupings, on ClientGroupingPK
    Create a cube and dimensions using the cube wizard.
    • one cube with four fact tables
    • 14. Five dimensions
    Dimension Hierarchies
    Use of the NameColumn property was set for each hierarchy levels to display the appropriate description instead of the integer key values (e.g. DivisionName).
    Partitioning was implemented based on year to enhance performance.
    Sample Archived Source Query: Pre 2005 data
    SELECT [dbo].[JobSummaryFacts].[JobMasterPK],[dbo].[JobSummaryFacts].[Description]
    FROM [dbo].[JobSummaryFacts]
    join [dbo].[AllWorksCalendar]
    on ([dbo].[JobSummaryFacts].[JobClosedDate] = [dbo].[AllWorksCalendar].[WeekEndDate])
    where [dbo].[AllWorksCalendar].[FyYear] < '2005'
    A sample of MDX Queries developed utilizing the cube, measures and dimensions generated by the SSAS solution.
    Query 1:
    Retrieve and calculate the total costs, the total profit, and total profit %, for each individual job.

    The three are calculated as follows:
    Total costs = total labor cost + total material cost + total overhead cost
    Total profit = labor profit + material profit + additional labor overhead
    Total profit % = (total profit / (total cost + total profit))
    Company: Setfocus
    Author: Terry Thompson
    Create Date: 6/15/2009
    member [Total Costs] as
    ([Measures].[Total Labor Cost]+ [Measures].[Total Material Cost]+[Measures].[Total Overhead]), solve_order = 10
    Member [Total Profit] as
    ([Measures].[Total Labor Profit]+[Measures].[Total Material Profit]+[Measures].[Additional Labor Profit]), solve_order = 20
    Member [ProfitPCT] as
    iif(([Total Costs] + [Total Profit]),([Total Profit] / ([Total Costs] + [Total Profit])),1)
    , solve_order = 30, format_string = 'Percent'
    Set [MemberSet] as ({[Total Costs],[Total Profit],[ProfitPCt]})

    Select [MemberSet]
    on columns,
    non empty filter ([Job Master].[Description].members,
    ([Total Costs] + [Total Profit]) > 0)
    on rows
    From [All Works]
    Query 2:
    Show Overhead by Overhead Category for Q3 and Q4 2005,
    and also show the % of change between the two
    Company: SetFocus
    author: Terry THompson
    Create Date: 6/15/2009
    Member [2005 Q4] as
    ([Measures].[Weekly Over Head], [All Works Calendar].[Fy Year - Fy Qtr].[Fy Year].&[2005].&[2005 Q4]), solve_order = 10
    Member [2005 Q3] as
    ([Measures].[Weekly Over Head], [All Works Calendar].[Fy Year - Fy Qtr].[Fy Year].&[2005].&[2005 Q3]), solve_order = 20
    member [PctChg] as
    (iif (( [2005 Q3] > 0), (([2005 Q4]/[2005 Q3]) - 1)," N/A" )
    ), solve_order = 30, format_string = 'percent'
    set [columnset] as ({[2005 Q4], [2005 Q3], [PctChg]})
    Select [columnset]
    on columns,
    on rows
    from [All works]
    Query 3:
    Show jobs in order of purchase amount and then show the
    breakdown in each job of material type (for instance,
    Job A, total purchase amount, amount for fuel, amount for materials,
    amount for petty cash, etc.)
    The general order should be by total purchase amount, so that the top of the result set shows the jobs that required the highest purchase amounts
    Company: SetFocus
    Author: Terry Thompson
    Create Date: 6/15/2009
    member [Material Purchases] as
    [Measures].[Purchase Amount], format_string = " Currency"
    set [JobSet] as
    order ([Job Master].[Description].children, [Material Purchases], desc)
    select [Material Purchases]
    on columns,
    non empty [JobSet] * [Material Types].[Description].members
    on rows
    from [All Works]
    Query 4:
    For 2005, show the job and the top three employees who worked the most hours. Show the jobs in job order, and within the job show the employees in hours worked order
    Company: SetFocus
    Author: Terry Thompson
    Create Date: 6/16/2009
    set [GenSet] as
    Generate (
    [Job Master].[Description].children,
    crossjoin (
    {[Job Master].[Description].currentmember},
    topcount (
    [Employees].[Full Name].children,
    Select [Measures].[Hoursworked]
    on columns,
    non empty [genset]
    on rows
    From [All Works]
    where [All Works Calendar].[Fy Year].&[2005]
    KPI Development
    The following KPI reports the percent increase in overhead category of total costs from one quarter to the next. (Total Overhead divided by Total Job Costs). Two calculated members were created in the Cube prior to building KPI.
    Total costs Percent of Overhead
    KPI Creation and Reporting
    The calculated member for percent of overhead is evaluated against the KPI goal of 10%. The status indicator for the KPI reporting will be a Traffic Light. The indicators will be set based on the following guidelines.
    • Greater than 15% then Red (BAD)
    • 15. Greater than 10% and less than or equal to 15% then yellow (Warning)
    • 16. Less than 10% then green (Good) desired range
    KPI Excel Report using Pivot Table Formatting
    Percent overhead from Q2, 2006 to Q1, 2006.