SSAS (SQL Server Analysis Services) Interview Questions - Part 2
Q: What is the difference between a derived measure and a
calculated measure?
The difference between a derived measure and a calculated measure is when the
calculation is performed. A derived measure is calculated before aggregations
are created, and the values of the derived measure are stored in the cube. A
calculated measure is calculated after aggregations are created, and the values
of a calculated measure aren’t stored in the cube. The primary criterion for
choosing between a derived measure and a calculated measure is not efficiency,
but accuracy.
Q: What is a partition?
A partition in Analysis Services is the physical location of stored cube data.
Every cube has at least one partition by default. Each time we create a measure
group, another partition is created. Queries run faster against a partitioned
cube because Analysis Services only needs to read data from the partitions that
contain the answers to the queries. Queries run even faster when partition also
stores aggregations, the pre calculated totals for additive measures.
Partitions are a powerful and flexible means of managing cubes, especially
large cubes.
Q: While creating a new calculated member in a cube what
is the use of property
called non-empty behavior?
Nonempty behavior is important property for ratio calculations. If the
denominator Is empty, an MDX expression will return an error just as it would
if the denominator Were equal to zero. By selecting one or more measures for
the Non-Empty Behavior property, we are establishing a requirement that each
selected measure first be evaluated before the calculation expression is
evaluated. If each selected measure is empty, then The expression is also
treated as empty and no error is returned.
Q: What is a RAGGED hierarchy?
Under normal circumstances, each level in a hierarchy in Microsoft SQL Server
2005 Analysis Services (SSAS) has the same number of members above it as any
other member at the same level. In a ragged hierarchy, the logical parent
member of at least one member is not in the level immediately above the member.
When this occurs, the hierarchy descends to different levels for different
drilldown paths. Expanding through every level for every drilldown path is then
unnecessarily complicated.
Q: What are the roles of an Analysis Services Information Worker?
The role of an Analysis Services information worker is the
traditional "domain expert" role in business intelligence (BI)
someone who understands the data employed by a solution and is able to translate
the data into business information. The role of an Analysis Services
information worker often has one of the following job titles: Business Analyst
(Report Consumer), Manager (Report Consumer), Technical Trainer, Help
Desk/Operation, or Network Administrator.
Q: What are the different ways of creating
Aggregations?
We can create aggregations for faster MDX statements using Aggregation Wizard
or thru UBO – Usage Based Optimizations. Always, prefer UBO method in realtime
performance troubleshooting.
Q: What is WriteBack? What are the pre-conditions?
The Enable/Disable Writeback dialog box enables or disables writeback
for a measure group in a cube. Enabling writeback on a measure group defines a
writeback partition and creates a writeback table for that measure group.
Disabling writeback on a measure group removes the writeback partition but does
not delete the writeback table, to avoid unanticipated data loss.
Q: What is processing?
Processing is a critical and resource intensive operation in the data warehouse
lifecycle and needs to be carefully optimized and executed. Analysis Services
2005 offers a high performance and scalable processing architecture with a
comprehensive set of controls for database administrators.
We can process an OLAP database, individual cube, Dimension or a specific
Partition in a cube.
Q: Name few Business Analysis Enhancements for SSAS?
The following table lists the business intelligence enhancements that are
available in Microsoft SQL Server 2005 Analysis Services (SSAS). The table also
shows the cube or dimension to which each business intelligence enhancement
applies, and indicates whether an enhancement can be applied to an object that
was created without using a data source and for which no schema has been
generated.
|
Enhancement
|
Type
|
Applied to
|
No data source
|
|
Time Intelligence
|
Cube
|
Cube
|
No
|
|
Account Intelligence
|
Dimension
|
Dimension or cube
|
No
|
|
Dimension Intelligence
|
Dimension
|
Dimension or cube
|
Yes
|
|
Custom Aggregation
|
Dimension
|
Dimension (unary operator) or cube
|
No
|
|
Semiadditive Behavior
|
Cube
|
Cube
|
Yes>
|
|
Custom Member Formula
|
Dimension
|
Dimension or cube
|
No
|
|
Custom Sorting and Uniqueness Settings
|
Dimension
|
Dimension or cube
|
Yes
|
|
Dimension Writeback
|
Dimension
|
Dimension or cube
|
Yes
|
Q: 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.
Q: 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.”
Q: How do I find the bottom 10 customers with the lowest sales in 2003 that
were not null?
A: Simply using bottomcount will return customers with null sales. You will
have to combine it with NONEMPTY or FILTER.
SELECT { [Measures].[Internet Sales Amount] } ON COLUMNS ,
BOTTOMCOUNT(
NONEMPTY(DESCENDANTS( [Customer].[Customer Geography].[All Customers]
, [Customer].[Customer Geography].[Customer] )
, ( [Measures].[Internet Sales Amount] ) )
, 10
, ( [Measures].[Internet Sales Amount] )
) ON ROWS
FROM [Adventure Works]
WHERE ( [Date].[Calendar].[Calendar Year].&[2003] ) ;
Q: How in MDX query can I get top 3 sales years based on
order quantity?
By default Analysis Services returns members in an order specified during
attribute design. Attribute properties that define ordering are
"OrderBy" and "OrderByAttribute". Lets say we want to see
order counts for each year. In Adventure Works MDX query would be:
SELECT {[Measures].[Reseller Order Quantity]} ON 0
, [Date].[Calendar].[Calendar Year].Members ON 1
FROM [Adventure Works];
Same query using TopCount:
SELECT
{[Measures].[Reseller Order Quantity]} ON 0,
TopCount([Date].[Calendar].[Calendar Year].Members,3, [Measures].[Reseller
Order Quantity]) ON 1
FROM [Adventure Works];