# Friday, June 04, 2010

If so then my team would like to know as we are looking for another business intelligence consultant.

Full details on our careers web site: SQL / BI Consultant (722749).

You can either post your details directly on the site or send me your CV at [jsnape at microsoft.com] and I’ll enter it for you (disclosure: if you send it via me I will get a bounty when you are hired).

Good luck.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Friday, June 04, 2010 12:18:29 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback
# Saturday, November 07, 2009

Let your mind wander

I’ve been an Application Development Consultant since I joined Microsoft in March 2006. Over the 3+ years I’ve had a lot of fun on this team and particularly enjoyed the shear breadth of skills and knowledge required to tackle whatever the customer requires. My CV is now a recruiter’s dream with all the keywords I can check off.

You may have noticed from the posts to this blog over the last year or so that I’ve been spending more time specialising in both development process and our business intelligence products, Analysis Services and PerformancePoint Server. I’ve certainly been finding more and more interesting work in this area; enough to start looking for new challenges.

To that end I’m pleased to say that this week I have accepted a role with the Microsoft Business Solutions team as a Business Intelligence Consultant. The team roughly comprises of SharePoint, Dynamics, BI and other related functions such as architecture and test skills.

There are lots of challenges ahead – in particular I believe to be successful the “business” part of BI must come before the technology. Also I’m really looking forward to getting into data analysis, visualisation and seeing how customer businesses make use of the information I’ll be able to give them.

So watch this space…

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, November 07, 2009 1:58:09 PM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback
# Thursday, April 16, 2009

Every data warehouse needs a date dimension and at some point it needs to be populated. Most use some sort of a SQL script that loops though the dates and add rows to the destination table but this is pretty slow to execute. You might even try cross joining a year, month and day temporary tables to produce a set based solution but don’t forget to filter out the illegal days.

I prefer to fill my date tables by generating the correct stream of values from a SQL Server Integration Services script source component. This has a number of benefits:

  • It executes very quickly
  • The data can be bulk loaded
  • CultureInfo supplies the correct translations of day and month names
  • It is easy to add custom columns such as fiscal years and quarters

I haven’t wrapped this in a pre-compiled component as it is so easy to do in script from. Also, I haven’t got around to generalizing the fiscal date offsets for different companies so they usually have to be custom coded.

Script Component Type Dialog

First drop a “Script Component” onto your Data Flow.

Select “Source” as the Script Component Type and click OK.

Then double-click the newly added component to edit the properties.

Note that you need to add the correct output columns before adding the script or else it won’t compile.


Script Source Outputs

I’ve renamed the output here to “Dates” to help further down the Data Flow.

Click the “Add Column” button to add new columns as show here. Note that I’ve also changed the data type of each column to match my source table. It required casts in script but it’s easier than conversions in the data pipeline.

Finally go back to the script part of the dialog and click the “Edit Script” button to launch Visual Studio for Applications.

In the resulting window, add your code to generate the date stream to the CreateNewOutputRows() function.
The general form is of:

var output = this.DatesBuffer;  // Get the output buffer

while (/*loop though your dates*?)
{

output.AddRow();

// Set the various column values e.g.
output.CalendarYear = date.Year

// Increment the date
date = date.AddDays(1);
}

The full script is in the attached sample package where I’ve also added a script destination that does nothing with the data. Attach a data viewer to see what output is generated.

Date Data

From here you can manipulate the data, and pipe it to your dimension table from within the pipeline.

DateSourceSample.zip (27.08 KB)

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, April 16, 2009 7:52:34 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback
DateSourceSample.zip (27.08 KB)
# Tuesday, April 07, 2009

This is the second part in a series of data warehouse presentations I’ve been giving. This one concentrates on the physical design of the underlying SQL Server database, some information on the SQL Server Fast Track Data Warehouse and finally a one slide guide to tuning the storage engine performance. The tuning slide is only really a first step and I plan a more in depth session some time in the future.

Also I apologize, this deck is a little word heavy. I prefer more graphics in a presentation but there is a lot of specific guidance to list here.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Tuesday, April 07, 2009 12:02:55 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback
# Tuesday, March 17, 2009

I recently gave a presentation at our community event on Dimensional Modeling. It covers the logical design and user model phase of a data warehouse project.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Tuesday, March 17, 2009 6:17:24 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Tuesday, February 24, 2009

One of the big problems I have with some new customers is the knowledge gap between where they are and where they need to be in order to be successful. Given that people can read much faster than they can receive presented information it makes sense to have a reading list.

I’ve blogged previously some Analysis Services resources but new and better content is appearing all the time. In addition to that article here are my current reading recommendations for anyone planning a BI or Analysis Services project. Know this lot backwards and you should have a good head start.

Everyone

SQL Performance Tuning with Waits and Queues

Analysis Services Performance Guide

Identifying and Resolving MDX Query Performance Bottlenecks in SQL Server 2005 Analysis Services

The Data Loading Performance Guide

Report Server Catalog Best Practices

Reporting Services Performance Optimizations

New Data Warehouse Scalability Features in SQL Server 2008

Scaling Up Your Data Warehouse with SQL Server 2008

Architects and Developers

OLAP Design Best Practices for Analysis Services 2005

Best Practices for Data Warehousing with SQL Server 2008

Analysis Services Processing Best Practices

Top 10 SQL Server Integration Services Best Practices

Top 10 Best Practices for Building a Large Scale Relational Data Warehouse

Operations and Support

Storage Top 10 Best Practices

SQL Server Best Practices

IIS Performance Tuning

Resolving Common Connectivity Issues in SQL Server 2005 Analysis Services Connectivity Scenarios

In fact pretty much anything on the sqlcat website is pure gold.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Tuesday, February 24, 2009 10:15:39 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Monday, December 22, 2008

There are no hard and fast rules but the goal is to reduce the time taken to extract data from a source system and reduce the amount of work you have to do with the extracted data. The numbers quoted here are the ones I use as a starting point but you need to measure to determine the best values.

Don't do an incremental extract if:

  • There isn't much data in the source table (less than 100k rows)
  • There is enough change in the source table to require that you read most of it each time (for example if more than half the rows change between extracts)
  • The data in the source table is used for periodic snapshots (for example a balance sheet) and you need to track how a table changes at particular points in time

Do an incremental extract if:

  • There is a lot of data in the source table
  • Rows are only ever added to the source table (i.e. rows are not updated)
  • You need to track each and every change to a source row
  • The source data is updated a number of times before being closed and once closed is never updated again (also known as an accumulating snapshot)

In general dimension tables match the first set of rules and are not extracted incrementally where as fact tables normally match the second set of rules.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, December 22, 2008 6:51:04 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Wednesday, August 01, 2007

TechReady 5 It's been a few weeks since my last post and I've been busy with customers and Outlook add-ins. Last week, however, I was at Microsoft's internal conference. It's like a TechEd proving ground where presenters get to try out their talks on an internal audience. There is some amazing stuff coming down the line in Windows Server, Visual Studio and SQL Server. I'm really pleased about the data warehousing enhancements across the SQL Server product line.

Way back in 2004 I went to TechEd and blogged a series of articles about new features that would arrive in SQL Server 2005. I plan to do a similar series for SQL Server 2008 but since a lot of stuff we saw last week is still internal I'll only blog about bits in publicly released CTP's.

duck Finally, the Popfly mashup site is now allowing invitations so the first five people to leave a comment telling me what you plan to do with your mashup gets an invite. You need to leave me your e-mail address as well.

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Wednesday, August 01, 2007 1:33:24 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback
# Tuesday, June 05, 2007

I'm spending today and tomorrow working with DPE on a lab for ISV's working with the Microsoft BI stack (SQL, SSIS, SSAS, Excel, BSM, PPS etc). Basically each customer brings along an application they are working on and we help on everything from architecture to solving any problems they might be having. It's a lot of fun and I even learned a few things. Because customers turn up with their own applications and problems you never really know what to expect. In the mix today we had:

  • A stock trading system
  • A very cool spreadsheet based query designer
  • A tool to automatically create cubes based on Dynamics customizations
  • Someone working with SharePoint, Business Scorecard Manager and Reporting Services

I'm not sure when the next lab will be but keep an eye on Eric Nelson as he runs most ISV events in the UK.

On a similar note, I'm taking on a new customer. It seems you never escape your past - the customer has a number of call centers they develop applications for... 

by This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Tuesday, June 05, 2007 9:26:09 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] Trackback