Part II of My Analysis Services Interview Questions: Cool Business Problems
I’ve seen a variety of techniques used by staffing companies to combat  the beating I’ve given their previous candidates.  Though I’ve  never been hit by the bait-and-switch, candidates have tried to look up answers  during the interview; they’ve had somebody in the room with them; and the last  technique seemed to be the group interview.  In addition to the  candidate, the phone interview would include the sales rep for the staffing  company, and often another technologist.  Why?  To  write down the questions, of course!   I can only guess that the  last candidate I rejected complained about how unfair the interview was, and the  recruiter wants to be sure they get every advantage possible and they think  they’ll get a leg up by writing what I ask.  Fair enough, but it  won't help you because I’ve learned some great interviewing  techniques, like asking follow-on questions based on your first answer.  I  understand that the goal for a staffing company is to put cheeks into paying  seats, but that's not my goal when I'm interviewing, or when I'm a  candidate.
I use an axiom in the classroom and with client personnel who are  learning business intelligence:  if you can’t articulate the  answer, you don’t know it.  Some will say, “I know the  answer.  It’s in my head but I can’t tell you what it is.”   I repeat:  if you can’t articulate something, you don’t know  it.  The only evidence of knowledge is its articulation, so let’s  lay out a couple of rules.
- 
Rule 1: If you can’t articulate something, you don’t know it.
 - 
Rule 2: If you think you know it but just can’t communicate it, refer to Rule 1.
 
I always start with high-level business questions.  I  believe that technical knowledge is the easiest of all skills to acquire.   Writing, speaking, architecting, and mentoring are far more  difficult.  Complex business problems require passionate people  with creative solutions.  The high-level questions explore all of  these at one time.  I want to know if you’re a thinker and a  learner, squeezing as much as possible from your  experiences.
I usually lead with the following:
“Tell me about some great business problems you’ve solved with Analysis Services.”
I expect to hear an answer like this:  “I used Analysis  Services to provide certification supplier metrics for a retail supply  chain.  The database and cube(s) that provided these answers had 45  dimensions, about 10 measures, and 25 calculated members.  My  favorite metric was a ratio of dollars ordered to dollars received because the  business could ensure they were getting what they paid for. Additionally, they  were able to reduce back office labor for receiving because they could avoid  detail receiving for suppliers they knew were doing well.”
Some of the answers I’ve actually received are downright  comical.
“I built a star schema.” Stating an obvious  architecture is not evidence that you really know what you’re  doing.
“I used MDX.” That’s good!  Perhaps  you used dimensions and cubes as well, but quoting product features provides no  evidence of problem solutions.
- 
Step 1: Collect underpants.
 - 
Step 2: ?
 - 
Step 3: Profits!
 
Here’s what I get as the most common answer to the question about  business solutions.  “First, I talk to the business and gather  requirements.  Then I make a design.  Then I build  software.”  See?  It IS the Underpants Gnomes, who  would say it like this:
- 
Step 1: Collect business requirements.
 - 
Step 2: Make a design.
 - 
Step 3: Build software.
 
Of course, this isn’t a business solution.  It’s an  approach to solving problems and it’s so obvious that nobody should have to say  it.  It would be like going to a staff meeting and hearing a  low-level manager lecture you for 15 minutes on the importance of profit.   (Duh.  And yes, I’ve experienced this with a prior  employer.  Note I said "prior.") 
It may be obvious, but I hear it repeated so many times. Over and over  and OVER again.
In an earlier installment of this blog I noted the existence of talking  points.  I invariably get these from candidates stemming from one  Asian country.  It’s like there’s a four hour seminar that  instructs candidates, “Americans LOVE process.  If you tell them  this, they’ll see that you’re truly an expert and will have no choice but to  take you!”  I’ve had candidates stick to this party line even when  I tell them, “That isn’t a business problem.  What interesting  business problems have you solved?”  I’ve actually told more than  one candidate to stop repeating the line because I don’t want to hear it  again.  (I must be the Dr. Laura of BI interviews.)  I  usually provide examples in hopes of spurring the candidate to action because  sometimes there are linguistic difficulties.  Some candidates  respond well after that; some don’t.  In a couple of cases the  interview has ended because the candidate can’t deviate from the party  line.
Why can’t they answer the question?  There are many  reasons.  After teaching SQL Server to adults for more than five  years, I’ve taken a very dim view of the average adult’s learning ambitions and  thought intensity.  Most people just don’t pay attention and learn  lessons.  Others are terrified of talking, but it’s an interview  and you must talk.  I think the majority of them simply don’t know  the answer to the question but they believe such an admission is failure.   Well, you surely won’t be recommended for an architect position if you  can’t tell me what cool business problems you’ve solved, but you may have a  personal epiphany that leads to personal growth.
Mostly, candidates responding in this fashion haven’t really used  Analysis Services to any great degree even though their resume says they  have.  They’ve had success bluffing their way with interviewers who  can’t tell the difference.  Personally, I only put on my resume  those things in which I am competent or expert but I seem to be a rarity.   In fact, here's some advice:  I don't like 10 page resumes.  I don't mind four  or five pages because it's my duty to read your resume and see what you've  written.  If you've worked for 10 or 15 years, I expect more than two pages.   But if you get much past five pages, you're either playing cut-as-paste patsy,  or you're telling me stuff I don't care about, like what you wrote in FORTRAN or  how many NIC's you replaced.  BTW, if you feel the need to tell me that, this  doesn't help you and may hurt you. If this is a BI interview then I want to know  what you've done that is pertinent to BI. (And don’t get me started on  recruiters who don’t actually READ your resume.  I get called  frequently for Oracle/Informatica work even though those words don’t appear on  my resume.  Yes, many of the same letters in those two words appear  on my resume, but not the actual words themselves.  Would you believe that today  I got a hit for a UNIX/Sun/Solaris admin?  Huh?  You can't find any of those  words on my resume with just a keyword search!  But I  digress...)
The lesson here is to pay attention to your experiences.   Wring every last drop of wisdom from your work.  Be prepared  to talk about those experiences and what you’ve learned.  You never  know when an interviewer will ask you about them!
NEXT. Part III of My Analysis Services Interview Questions: Architectural Philosophy
Part III of My Analysis Services Interview Questions: Architectural Philosophy
In the previous installment of Dave’s Cube, I laid out my first  interview question for Analysis Services candidates.  Since I use  an adaptive technique, I start with the hard questions and move to technical  questions later (if necessary).  My first interview question is  always about cool business problems that you’ve solved with Analysis  Services.  As noted, that’s rough for most people, but it doesn’t  get easier with the second  question.  
My second question is always about architectural/design  philosophies.  I don’t ask too many closed-ended questions because  I want you to talk, so I know what you know.  I usually ask the  following question:
“Do you have any particular design philosophies or  architectural principles that you will use to guide this client toward best  practices?”
Believe it or not, you can say something different than I would without  consequence, as long as you can provide your reasoning. (You must also be  correct, of course.  Telling me it’s red when I know it’s blue  won’t work, even if you have reasons.)  I’m a stickler for best  practices because they are the authority upon which you stand when telling a  client how best to implement a product they’ve probably never used.    Here are some of the answers I expect to hear:
“I recommend that a client always carry as much detail as possible into  the data warehouse and into a cube.  Details may use extra space  and CPU cycles, but they ensure the future value of the application because they  enable the most calculations to be performed upon that data without rework back  into the data warehouse and/or cube.  Details often carry  negligible incremental cost on first development.”
“I like to use as many dimensions/attributes as suggested by the data –  even if those attributes are not in the business requirements.  The  incremental time required to design and populate those extra attributes is  usually negligible, but the business will often request those dimensions as  filters and slicers for calculations they modify or identify late in the  process, or even after a project is closed and customer acceptance is  complete.”
“I design first for query performance, and then second for processing  performance.  The purpose of an Analysis Services implementation is  to serve quantitative answers to end users; query performance is  paramount.  Processing performance issues can usually be solved by  tuning in the relational layer and by eliminating joins in the cube processing  statement.”
These answers tell me two things.  First, you know best  practices and you’ve actually used them.  The reasoning behind a  philosophy usually only comes from experience.  Second, I know  immediately when you are a learner and a thinker because such people answer this  question *immediately* and with passion.
I have received the same spate of humorous answers I’ve received for my  first interview question:
“I use surrogate keys.” Personally, I prefer  skeleton keys since they’re very versatile.
“I love star schemas.” Me too.  And  Buckeye football.  And Chevrolet Corvettes.  And my  kids.  But I digress… None of these are architectural  philosophies.
Of course, the Underpants Gnomes hold sway in the mind of many people  answering this question.  Recently I figured out why.   Underpants Gnomes wear cones on their heads.  Dogs hate  cats.  Buckeyes and Wolverines are at perpetual enmity. Everybody  knows that cones hate cubes, but they don’t have an annual contest to settle the  score one November Saturday at noon (unless ABC says to play at 3:30 PM).   The Underpants Gnomes consider infiltration into the minds of aspiring  Analysis Services candidates a dutiful service to Gnomekind!  Kill  the cubes!
Has a candidate ever answered quickly and passionately with a wrong  answer?  Only once.  We were interviewing a candidate  from NYC who said he was an Analysis Services architect.  He was  articulate, smooth, and eager.  He laid out some very good business  problems he’d solved with Analysis Services, and we were feeling good since it’s  hard to find experienced, thoughtful Analysis Services resources.   His answer to this question flabbergasted us.  He said, “Use  as few dimensions as possible.”  Upon inquiry, he divulged his  reasoning.  “Every time I add more dimensions to the cube, cube  processing slows down to the point where I can’t process the cubes.”   This man was freely sacrificing the power of multidimensional databasing  (dimensions) on the altar of performance because he couldn’t figure out how to  tune the technology!
I told him that not only did the three people on our end disagree with  him, but we had empirical evidence that he was wrong.  We had cubes  with 50 or more dimensions in them, yet we could process them just as quickly as  if they had only five dimensions.  Since he failed a high-level  question, I immediately drilled into technical knowledge.  I asked  him if he knew how to optimize a cube schema.  Oddly, he answered  this question by discussing dimension optimization, a question that flunks all  but the most knowledgeable of Analysis Services people.  He said  that he could make dimension keys and names unique, which is great but doesn’t  help you optimize a cube schema.
Incredibly, this promising guy had used Analysis Services for years but  had never once bothered to learn about optimizing a cube schema.  I  explained to him that when he adds dimensions to a cube, Analysis Services adds  a join to the SQL statement it issues against the data provider.   (He said he’d never looked at the SQL statement, a sensible answer since  he didn’t know he could do anything to change it.)  By optimizing  the cube schema, you reduce or completely eliminate the joins in the cube  processing statement.  Naturally, queries against a single table in  the data source can have nearly instantaneous response times and marvelously  high row payout rates, often choking either the RDBMS or Analysis Server.   You can theoretically add an infinite number of dimensions and not  appreciably slow cube processing.  (Remember: I was interviewing  for Analysis Services 2000 positions; the answer will vary somewhat for  SSAS.)
He knew he was cooked.  You could hear it in his  voice.  I think the full weight of his error hit him  quickly.  He hadn’t just missed a prominent performance tuning  feature in Analysis Services.  No, he’d been giving clients  architectural advice based on this glaring error.  I told him that  after he hangs up the phone, spending two hours with Books Online to read up on  this feature would make a much better Analysis Services expert than he was  before the phone call.
It was obvious that he was experienced, smart, and teachable.   What he didn’t know what that we asked the boss if we could bring him on  anyway since we were pretty sure we could fill in his holes with little  effort.  Sadly, his hourly rate was so high that the boss rejected  him.  If you’re going to ask for a mountain of money you need to at  least know as much (and hopefully more) than everybody else.  Dave  Ramsey says, “In our economy, you get paid for what you know.”  I  modify that to the following: “In our economy, you get paid more than the next  guy depending on how much more you know than the next guy.”  We’re  both right.
Part IV of My Analysis Services Interview Questions: Technical Features
In parts two and three of this multi-part series on Analysis Services I discussed interview questions about cool business problems and architectural/design philosophies. The third level of questioning I use deals with product features. You’ll always get these questions if you fail one or both of the first two because even if you aren’t an architect, you could be very productive while working under an architect. Plus, if you’re an ambitious learner, you’ll become an architect by learning from an architect.
Sometimes I even ask the technical questions if you pass  the first two questions.  Remember, I’m not just looking for  answers.  I’m also watching your thought process.  I  want to see passion, and I’ve found the best people can hardly wait to tell you  about the great things they’ve done, and when you ask them a question, the  answer practically leaps out of them.  So if you answer the first  two correctly, but I’m not convinced, you may still get the technical  questions.
(Interesting story:  one fabulous lady I worked with was  annoyed when we hired a guy who clearly knew what he was doing, but of whom I  asked no technical questions.  She said she was bothered by this,  and asked my why I’d done this.  I said, “Because he clearly knew  what he was doing and I’m satisfied that he knew the technical details as well.”  He was passionate and articulate.  But I told her that we’d ask  technical questions in the next interviews if it made her comfortable, and we  did that for two more interviews. But she changed her mind when she figured out  that people who really know how to use Analysis Services also know its  features.  She once noted that I didn’t hammer her in her phone  interview.  I replied that I could tell she was thoughtful,  passionate, and a great learner.  I wasn’t wrong.  To  this day that lady is one of the very finest technologists I have ever met, and  I would work with her anywhere, anytime.  Though I have left the  client for whom she works, we still talk regularly.)
Even my technical questions are stratified.  My favorite  technical question is “How do you optimize a dimension?”   (Remember, this question’s context was Analysis Services  2000.)
The correct answer has four parts:
(1)     If possible, ensure that  member keys are unique across a given level, and
(2)     If possible, ensure that  member keys are unique across the entire dimension.
(3)     If possible, ensure that  member names are unique across a given level, and
(4)     If possible, ensure that  member names are unique across a given dimension.
When this is achieved, you have very compact dimensions.   When answering queries, Analysis Services can avoid assigning context to  members by using ancestral chains, and things get very quick and compact.   In my mind, this is the first technique for excellence in Analysis  Services, and only two or three people have ever answered it correctly.   Usually the respondent, eager to get up after being knocked down by the  two prior questions, blurts out, “I go to Tools and select Optimize  Schema.”  They’re usually shocked when I inform them that this  isn’t the correct answer because Optimize Schema optimizes a cube, and I asked  about optimizing a dimension.  Honestly, I’ve never had a candidate  answer the question correctly if this is their first  answer.
My second favorite question is about optimizing the cube schema.   Nearly all candidates know what this feature is and have used it.   I avoid closed-ended questions like “Have you ever optimized a cube  schema?” because the answer is a simple, “Yes.”  This doesn’t tell  me what you know, so I always ask what optimizing a cube schema does.   Ironically, the same people who use schema optimization to answer the  dimension optimization question don’t know what schema optimization actually  does, or why it’s used.  The answer is that it reduces or  eliminates joins in the cube processing SQL statement.  It may be  the most powerful technique to improve cube processing performance (assuming  ample hardware and parallel partition processing that doesn’t swamp the server,  and moderate aggregations).
One candidate, who took a beating on the two high level questions, also took a beating on these two technical questions. He was obviously unaccustomed to this because after a half hour he said, “Well, maybe you just haven’t actually done this.” This new tack caught me a little off guard since I had explained to him he couldn’t articulate any cool business problems, he didn’t have any strong architectural philosophies with which I agreed (and I told him why), and he didn’t know how to optimize a dimension. I even told him *why* these things were important and what the right answers were. In addition to getting the answers wrong, he demonstrated that he wasn’t teachable, a bad trait for any technologist since we must learn continuously. He was notable not only because of his belligerence, but also because he only had one name on his resume. He’d concatenated his first and last name into a single word, which had eight syllables and was in a foreign tongue. He left quite an impression, and six months later when his resume landed on our desks from a different staffing company, we immediately put it into the circular file. Ignorance, belligerence, and a goofy name are a bad combination.
Part V of My Analysis Services Interview Questions: The Most Common MDX Functions
I have a litmus test for true multidimensional expertise:   MDX.  I’ve found MDX to be so potent that I freely admit my  own inadequacies.  I study it, I use it, and I consult with others  who do the same, but I know there’s more.   If somebody says they  know Analysis Services, I want to see their MDX.  Show me somebody  who doesn’t know MDX, and I’ll show you a pretender.
Remember, I don’t ask closed-ended questions.  I’ve heard  interviewers say, “Do you know MDX?”  Of course, the answer is  always “Yes” but this answer tells you nothing of what the candidate actually  knows.  I have two favorite MDX questions.
Question 1:  What MDX functions do you most  commonly use?
This is a great question because you only know this answer by  experience.  If you ask me this question, the answer practically  rushes out of me.  “CrossJoin, Descendants, and NonEmpty, in  addition to Sum, Count, and Aggregate.  My personal favorite is  CrossJoin because it allows me identify non-contiguous slices of the cube and  aggregate even though those cube cells don’t roll up to a natural  ancestor.”  Indeed, CrossJoin has easily been my bread and  butter.
If you stammer and stutter, you’re in trouble.  If the  first word out of your mouth is “sum” without any explanation of how you use it,  you’re in trouble.  
Question 2:  Where do you put calculated  members?
The reflexive answer is “in the Measures dimension” but this is the  obvious answer.  So I always follow up with another  question.  “If you want to create a calculated member that  intersects all measures, where do you put it?”  A high percentage  of candidates can’t answer this question, and the answer is “In a dimension  other than Measures.”  If they can answer it, I immediately ask  them why.  The answer is “Because a member in a dimension cannot  intersect its own relatives in that dimension.”
Then I ask a real toughy.  “Where would you put a  calculated member if you wanted it to intersect all other  dimensions?”  You can hear the wheels  turning with this question.  You can’t put it in the Measures  dimension because it wouldn’t intersect the other measures.  You  can’t put it in, say, the Time dimension because it wouldn’t intersect the other  Time members.
The answer is simple but not obvious unless you’re very creative or  somebody told you the answer. (Somebody told me the answer when I first started  learning Analysis Services.)  You create a dummy dimension solely  for the purpose of holding those calculated members!  My friends  and I refer to this dimension as a “hanger dimension” because the only function  it serves is to “hang” calculated members.  Any member placed  therein will intersect all other dimensions.
In fact, you can use multiple hangers.  This is  particularly handy if you have calculated members that need to intersect all  other user-defined dimensions, Measures, *and* another hanger  dimension.
In an earlier post I mentioned a fabulous lady who has taught me many things. She wasn’t able to answer this particular question. When I told her the answer, she immediately understood it. It didn’t affect my recommendation to the boss because she was so good. You’ll never believe what she told me when she arrived for her first day of work. She said, “Do you remember the question you asked me about the hanger dimension? After I hung up the phone, I pulled up Analysis Manager and tried it. It worked really well.” Wow! No wonder we like her so much! She even learns during interviews!
Original broken links for reference:
- My Analysis Services Interview Questions
 - Part II of My Analysis Services Interview Questions: Cool Business Problems
 - Part III of My Analysis Services Interview Questions: Architectural Philosophy
 - Part IV of My Analysis Services Interview Questions: Technical Features
 - Part V of My Analysis Services Interview Questions: The Most Common MDX Functions
 
