Monday, December 14, 2009

Dec 8th, 2009 ITA BI Roundtable Presentation


On Dec 8th, I was fortunate to present an overview of SQL Server 2008 Integration Services to the Illinois Technology Association's Business Intelligence Roundtable. The actively-involved participants had many questions. Here are links to all of the prerequisite, supplemental, and follow-on resources we discussed:

Dimension Design (aka Star Schema) Methodology:



Code Examples:


While these examples are in SSIS 2005, they can be easily ported to SQL 2008. Most of the main techniques employed are still valid in SSIS 2008.

Development Utilities:

The Presentation:
  • There were only a few slides since I wanted to focus primarily on demonstrations, but you can find the PDF linked here:
If you attended and I missed posting something, please add a blog comment or email me via the contact information in the PDF.

Tom

Thursday, December 10, 2009

Creating great courseware

I was recently surveyed by Microsoft about the Microsoft Learning: Microsoft Certified Trainer program. One of the questions was about the Microsoft Official Curriculum (MOC). I've been using MOC in one form or another for about 15 years. Although I was only answering a question in the moment, I grabbed my comment about how to create courseware into a text file, and it seemed worth keeping. Rather than keep it in a text file, I'll "keep it" on my blog. My comment was: 
Creating great courseware is hard work, but not impossible: 1) Decide on learning objectives 2) Vet learning objectives with MCT's and experienced practitioners 3) CREATE LAB EXERCISES FIRST 4) Test lab exercises 5) Test them again 6) With lab exercises complete and FROZEN, composed supporting slides and course materials
I actually started writing courseware a few years before my first exposure to MOC. The method described above was how we did it. It makes sense because you want the practical exercises to support the learning objective and these are the hardest to get correct. Isn't it irritating when you are learning a new technology and the lab exercises don't work as designed?


I have noticed that there seem to be more problems with MOC courseware lately, especially with how labs work. I wonder if they follow the above methodology.


Don't get me wrong - the MOC courseware is not terrible - I still think there are a lot of good things to be learned and valuable experiences to be had in the courses I teach. But it seems to me that the overall quality used to be higher, and I'd really like to see the quality of the MOC improve. 


BTW, I don't teach every single MOC course. The above comments apply to course: 2778, 2779, 2780, 2784, 2790, 2791, 2792, 2793, 6158, 6231, 6232, 6234, 6235, 6236, 6317 and maybe a few others.

Saturday, November 7, 2009

Fixing "Unexpected error occurred. Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

( If you don’t do hard-core Analysis Services, Reporting Services, or Integration Services development work with Microsoft Business Intelligence Development Studio, you can safely ignore this blog. )

On my workstation there was an incompatibility between Visual Studio and the SQL Server Binaries. Which led to this error:










Symptom:
Certain operations from Business Intelligence Development Studio work as normal, and other return a message: “Unexpected error occurred. Attempted to read or write protected memory. This is often an indication that other memory is corrupt.” (See attached)

This error can occur if there are incompatibilities, between the versions of msmdlocal.dll and msmgdsrv.dll in these two locations:
C:\Program Files\common files\system\ole db
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies

Issue: Make sure the build number of your local binaries matches the build number of the server you are working with. In this case the target server is at 9.0.4035.0, however on my system we were actually running at 2 other build numbers:
In C:\Program Files\common files\system\ole db msmdlocal.dll and msmgdsrv.dll was 9.0.3042.0, but in C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies, msmdlocal.dll and msmgdsrv.dll were at 9.0.1399.0

Solution
My solution was to apply both SQL Server SP3 and Visual Studio SP1 (or whichever versions match your target environment).

References:


Monday, October 26, 2009

Add-ons no MS Business Intelligence Developer should be without

The main two applications that are used for Microsoft-centric development are Business Intelligence Development Studio (BIDS) and SQL Server Management Studio (SSMS). There are a few add-on utilities that increase the power and usefulness of the out of the box applications. I find these invaluable:






  • MDXStudio - the brilliant Mosha Pasumansky's take on how MDX development should take place. Tons of functionality. Worth the download if you only use it to format your MDX (but check out the other capabilities, too):
  • BIDSHelper - An add-in for BIDS that provides great capabilities for validating dimensions, seeing which SSIS objects are affected by configurations, and much more. There are versions for both SQL 2005 and SQL 2008
  • SSMS Tools Pack - (Thanks to Steve for showing me this one) Best features I've used so far are:
    • Window Connection Coloring
    • Query Execution History and Current Window History
    • Generate Insert statements from tables

Friday, October 16, 2009

Quick SQL Server tip : Find references to table or column names

Many times I have to look within a database and find all the programmable objects that refer to a particular column or table name (any string really).

There's probably a slicker, more "politically correct" way to do this, but this is what I generally use to accomplish this:


SELECT DISTINCT 'EXEC sp_helptext [' + OBJECT_NAME(id) + ']' FROM syscomments WHERE charindex('soughtfortoken', text) > 0

I've also got the output formatted to include the call to sp_helptext so that I can just paste this into a query window to see the source code that created the object. I suppose I could enhance this so it just executes via another call to EXEC, but this seems to do the job pretty well and requires no additional setup or installation.

Technically it is bad practice to query the sys* tables. Here's the equivalent query using approved systems views:

SELECT DISTINCT 'EXEC sp_helptext [' + OBJECT_NAME(object_id) + ']' FROM sys.sql_modules WHERE charindex('soughtfortoken', definition) > 0 ORDER BY 1

Friday, August 21, 2009

Do as I say, not as I do

Perhaps that should be - Do as I say, not as Adventure Works and Project Real do

SSAS modeling question: What's the best approach to handling header/detail records?

Approach #1) Use Measure Groups

Approach #2) Consolidate via either ETL or relational operations

Most clients I deal with have some form of Header/Details modeled in some of their source systems (for example Invoices/Line Items). In looking at the way MS addresses this in sample databases (AdventureWorks and Project Real), I discovered that these examples solve this problem by not solving it. Both contain a single SalesFact that presents values from what would be the header record, but also include Item measures and attributes.

Conventional SSAS wisdom would have us create 2 measure groups, 1 for Header and 1 for Details. The approaches used in the MS example cubes consolidate the two differently grained tables relationally and thus use a single measure group. (More correctly, they simply present a single Sales table, but it's reasonable to assume that a real-world system would have both Header and Detail)

I definitely know how to model this relationally, and I know how to implement this using either measures groups or a single table. I can see pros and cons to each approach:


Using Measure Groups Approach

  • Stays "pure" each fact has correct grain
  • Calculations must be modeled in MDX
  • Provides most efficient movement of relational data
  • Minimizes null or N/A columns
  • Most orthodox

Consolidate via either ETL or relational operations

  • Allows row-wise calculations
  • Simplifies cube schema
  • Removes need for "SalesOrder" dimension (needed to relate details to headers)

My current opinion would be to use proper measure groups because creating a relational structure with multiple grains violates one of Dr. Kimball’s fundamental tenets.

As is often the case with BI modeling, there may well be cases where the second approach proved more advantageous. But absent of a specific requirement that highlights any advantage, I will stick with established best practices, which to my thinking is Kimball. I can understand why Adventure Works takes a short-cut, but it seems a shame that "Project Real" isn't really "Real" so-to-speak. It's supposed to be a real world model.

Friday, July 17, 2009

Ballmer and Muglia have it wrong

"It's a poor carpenter who blames his tools."

I've been monitoring the twittersphere and blogosphere about the new BI tools coming from Microsoft. While I am excited about these new capabilities, the "buzz" around these things also creates some concerns.

Over the past ten years, I've been fascinated by the persistence of the idea that all BI needs is better tools. I am not arguing against better tools by any means - who doesn't love a great piece of software to accomplish a given task?

The issue is that it's not simply better tools that lead to successful use of analytics. Possessing Excel doesn't turn me into an CPA, nor does having a copy of Illustrator turn me into a graphic artist.

I am not suggesting that BI should only be the domain of the privileged few. But making better tools available to business stakeholders is putting the cart before the horse. Which of course begs the question, "What's the horse?"

The "horse" is of course, much harder to identify than a software purchase, which I think is one of the reasons why tools tend to get the focus over other more nebulous issues. In my opinion, the critical piece that allows effective use of whatever tools are at hand is when an organization embraces an "analytic mindset". In other words, peoples perceptions, beliefs, and capabilities must be the first change agent. Only then can tools become part of the solution.

The analytic mindset looks like:
  • Intolerance for siloed data, "spreadmarts", do it yourself ETL
  • Belief in the value of analytics for Corporate Performance Management, that goes all the way to the CxO level. This includes

    • sponsorship of priorities
    • creation of cross departmental teams
    • allocation of budgets.

  • Acknowledgement that the whole problem won't be solved in a single deployment, but it's better to evolve towards a long term vision, than to do nothing
  • Emphasis on communication and education
  • Deep involvement of the business stakeholders, making them partners (with IT) in the development of the BI systems within the organization
Call me cynical, but I am bracing myself for the questions that come after Office 2010 and Gemini are released and in wide use: “We’re now able to look at 100 million rows in Excel, but our people are still arguing over what “the truth” is, and we still have a debate over what success looks like for our organization. These tools aren’t any good.”

I am working with one organization that is embracing the "Analytic Mindset" right now. The C-level sponsors have intentionally not upgraded tools but have instead devoted resources to education and building a sound data infrastructure. I have much better hopes for this organization that is using 4 year old tools, than for any organization that pins its hopes simply on better tools.

The question I am left wondering is "Who is responsible for promoting the message of the 'analytic mindset'?" TDWI does a pretty good job with their "BI Maturity Model". It would be great if some of the tool vendors started to reinforce this idea. Ironically if they would do so, they'd wind up with increased adoption rates (i.e. more sales).

This is why I formed my company to address not only BI Consulting, but also Training and Mentoring. In hopes of helping organizations get the horse before the cart when it comes to success with BI.

Monday, July 6, 2009

The unlikely entrepreneur

Have you ever found yourself doing something and suddenly realized, "Now I am a grown-up"? Like when you closed on your first home, bought something like a sump pump . . .

I had the "Now I am an entrepreneur." moment yesterday when I was ordering a toll-free number for my office line and had to research which ones supported conference calling.

I almost hate to use the "e-word" because I always envision some super-organized, hyper-motivated, impossibly educated go-getter with an impeccable pedigree. - and that seems like a hard image to fill. I am just a guy with a fair amount of BI experience that realized that certain people and roles were being ignored by traditional consulting models.

I really posted this to document that I went with Kall8 for the toll free number with conference calling. I have only used them a bit, but they seem decent. (If you're looking and would like to knock 5 clams off of my monthly bill, click here and reference eight-eight-eight-678-4279)

Also (very related to the previous post), after researching on the web, I ultimately searched one of my LinkedIn networks to see who had solved this problem already. So that's : Friends - 2 / Web - 0, and counting.

Friday, May 29, 2009

Analysis Paralysis at Web (hosting) speed

Today I was doing research for the optimal hosting provider for my new business (ContextQ). I had fairly modest needs, but with anything that requires a commitment of time, or perhaps even more important, that technology works as intended, I am a stickler for research and especially customer reviews or testimonials. Perhaps I even go a bit overboard. (My daughter and fiancée would say I definitely go overboard.)

Like anyone reading this (I imagine), I am fairly used to getting around the web, and fairly used to sorting the wheat from the chaff. However, I was not quite prepared for the chaff-to-wheat ratio of this particular type of search. The level of bogus pages to actually useful reviews was astounding.

In hindsight, it makes sense. The web hosting sites are all going to use whatever tools they have in their arsenal to make sure that their entries appear top-most in any search results. These folks are perfectly equipped to spin up as many “sites” as needed to saturate the search engines.

Many of these pages purport to be unbiased, but are clearly propped up shills for various hosts.

I guess I should say at this point that I don't know for a fact whether any of these pages are shills. I suppose it's possible that they could be very badly-written and horribly incomplete attempts at unbiased reviews, but I doubt it. What follows then is a recounting of my searching efforts and my opinion about the sites I found. I did find some good pages, and I will link to those in the end.

I should also say that I think the proportion of negative reviews to positive is pretty high. The energy to fuel a review that comes from frustration is much higher than the energy that comes from complacent satisfaction. A sad but commonplace fact of human nature. This is what steered me away from my original plan of having my page hosted by the original registrar of my domain.

1) The first phenomenon I encountered was the pseudo comparison page:

http://www.webhostingpadreview.org/webhostingpad-vs-lunarpages-budget-cpanel-hosting-comparison

http://www.lunarpagesreview.org/lunarpages-vs-webhostingpad-lunarpages-webhostingpad-comparison

What’s interesting is that each page promotes the service that is contained in the domain name. It’s not that they are biased toward a particular provider; it’s just that they are almost information-free. My guess is that these pages exist simply to support referral revenue.

2) So, what were the mediocre sites? (By mediocre I mean: has what may be legitimate reviews, but only for selected hosting providers).

http://www.alreadyhosting.com/

http://webhosting.reviewitonline.net/

Amazingly enough, two of my “go-to” sites for reviews (PCMag & CNet) had next to nothing to offer for web hosting.

3) What were the “bad” sites? (By bad I mean, deceptively or poorly organized and clearly biased). [Note that I am not linking to the bad sites ...]

webhostingjudge.com

tophosts.com

thetop10bestwebhosting.com

hostreview.com

4) So, what were the decent sites? (By decent I mean not stellar, but a good faith attempt at real reviews and balanced coverage).

webhostinggeeks.com


webhostingjury.com

webhostingsecretrevealed.com (good supplemental info)

webhostingstuff.com

serioushostingreviews.com

hosting-review.com


5) So, what were the good sites?

http://whreviews.com/

http://www.webhostingtalk.com/

What did I end up doing?

I went with a hosting provider that a trusted friend had recently selected. I did also vet the reviews for this provider, but that was a secondary, confirming effort. The decisions and opinions of friends count for a lot!

A tangent: What is needed?

It’s a safe statement that Google’s behavior-derived valuation of pages and their robust web-crawling revolutionized the web. I remember (pre-google) when the problem was that the page was there, but there was no catalog or spider that linked to it so if you didn't already know the URL you were SOL.

We seem to have solved the indexing problem, but now there is too much garbage in the search results. And the “chaff” is smart enough to generate sufficient clicks to appear in top search results.

I am hopeful that the additional value offered by search engines like Kumo/Bing will help us humans find the wheat again. Let’s hope for a chaff-factor to make its way into the bigger search engines.

Final note: if I had known the hassle and delay involved in transferring a domain, I probably would have just let my original registrar host my site. Live and learn. (I can hear my daughter and fiancée chuckling now...)

Tuesday, May 19, 2009

Welcome! - and what this Blog is about

I chose "Information in Context" as the name of this blog for two primary reasons:
  1. It's a central concept behind Business Intelligence, which is one of my main passions and endeavors. This is the idea that information really only becomes "Business Intelligence" when it has been imbued with the appropriate context. One might say that the true art of BI rests not with the technology or the methodology, but rather with the accomplishment of creating context for a given audience.
  2. It's sufficiently ambiguous (i.e. flexible) to allow me to post about nearly anything that might be interesting or useful.

The main focus of these postings will be around Business Intelligence, but other areas that might find their way on to the blog could well be personal productivity, cool software, philosophy, music, motorcycles, cooking, photography.

Followers