Welcome to MSDN Blogs Sign in | Join | Help

News

  • Visit the SQL Server Best Practices site (http://sqlcat.com) for real-world guidelines, expert tips, and rock-solid guidance to take your SQL Server implementation to the next level.
Querying Dimension Members In Analysis Services

Many Analysis Services applications query members to populate a dropdown or find those that match some criteria – starting or ending with a string, existing with other members, having a member property with a certain value, whatever. For example, say I have a bird hierarchy and I want to find all birds with the expression “eagle” somewhere in the member name. I could do something like this:

Select filter(birds.members, instr(1, Birds.currentmember.name, "eagle") > 0) on columns from [birds]

But this can lead to poor performance in some circumstances – particularly in ROLAP cubes or cubes with expensive calculations.

Why? It is because this query asks for and returns cell data as well. A query that asks for members on columns also returns data in the cells at each column position. This might be expensive. (And I’ve run into situations where it just destroys performance).  So two suggestions:

a)      For you application builders querying only for members either use the schema rowsets (see the member schema) or send queries that explicitly request an empty set on the first axis; ie, something like this:

Select {] on columns, filter(birds.members, instr(1, Birds.currentmember.name, "eagle") > 0) on rows from [birds]

                This way, no cell data is evaluated or returned.

b)      For those you building cubes relying on applications that aren’t following the advice above and you’ve determined that performance is a problem because of unnecessary cell evaluation, create an invisible calculated member with a null expression and make it the default measure. (And be sure to test!)

Posted: Wednesday, January 16, 2008 12:33 AM by richtk

Comments

Windows Vista News said:

Did you see the post at blogs.msdn.com

# January 16, 2008 1:00 AM
Anonymous comments are disabled
Page view tracker