AS2005 Dimension Security paper

There’s a new paper on how dimension security is implemented in AS2005 available on Richard Tkachuk’s site. Not an awful lot seems to have changed although the attribute-based dimensional model has (as you would expect) made things a bit more complex; and you can now define security on a dimenion and have this applied to all cubes that dimension is linked to, rather than have to put the same security definition on each cube.

AS2000 to AS2005 Migration White Paper

Deepak on the newsgroup pointed out the existence of the following white paper on migration from AS2000 to AS2005 by Richard Tkachuk:
(Incidentally not the same as the one that Mosha refers to here). Migration is going to be a tricky issue for a lot of people I reckon: while I’ve been impressed by how good a job the migration wizard does, given the fundamental changes that have taken place between AS2000 and AS2005 any moderately complex AS2000 cube will need a few manual tweaks to make it work properly in AS2005 – a lot of BI consultancies will be rubbing their hands with glee at the thought of this extra revenue, I’m sure. And of course even if you have migrated your cube successfully you might need to think about redesigning it, or rewriting your MDX, to take advantage of all the new features and/or performance that AS2005 offers.
 
All this makes me wonder about how quickly people will migrate their cubes. I had an interesting conversation with Nigel Pendse (of OLAP Report fame) a few months ago and his opinion was that the process of migration will be much slower than expected; I think I agree with him. If an AS2000 cube works fine at the moment and migration involves spending money on internal development or outside consulting, then the cube will probably be left as it is – if it ain’t broke, don’t fix it! After all, support for HOLOS (an older OLAP engine) stopped a few years ago but I know that there are still some HOLOS systems still in production that people are only now thinking of replacing.
 

MemberValue

It’s my 30th birthday today so before I disappear down the pub to buy everyone else a pint (which is the bizarre tradition at my workplace) I thought I’d mark the day with a quick blog entry…
 
The MemberValue property is something I saw in BOL quite a while ago, but didn’t really understand what it was for. It wasn’t until George, Siva et al started discussing it for ‘MDX Solutions’ that I really grasped why it is so useful: it’s for those occasions when you want to tie a value other than a caption to a member, and don’t want to go to the hassle of creating a separate attribute for that value. So, for example, imagine all of your Products have a weight attribute (eg 10Kg, 15Kg, 80Kg) and you want to run queries like a) Show me Sales for products which weigh 10Kg, and b) Show me sales broken down by weight for products which weigh more than 30Kg. In AS2K you might have ended up doing this by having two separate member properties for weight: one which contained a user-friendly string, such as "10Kg", which you might create a virtual dimension from or display in a query and a second, containing just the numeric value such as "10", to make filtering easier (although you’d still have had to cast it to an integer before you could do this). In AS2005 all you need to do is tie the user-friendly description to the NameColumn property and the filter-friendly value to the ValueColumn property (which, incidentally, is typed).The MemberValue property of a member then allows you to get this value back in MDX. Here’s an example from AdventureWorks, showing how the calendar year member has a name like "CY2001" but you can still get at the year as a smallint without the "CY" bit in front:

WITH MEMBER MEASURES.DEMO AS [Date].[Calendar].CURRENTMEMBER.MEMBERVALUE

SELECT

{[Measures].[Internet Sales Amount], MEASURES.DEMO} ON 0,

FILTER

(

[Date].[Calendar].[Calendar Year].

MEMBERS

, [Date].[Calendar].

CURRENTMEMBER.MEMBERVALUE>2001.5)

ON

1

FROM

[Adventure Works]

 
Take a look at Period in the Dimension Editor in Visual Studio to see exactly how it all works. If you don’t define anything in the ValueColumn, MemberValue returns either the key if there is no name binding or if the key and the caption are bound to the same column, or failing that the caption of the member.

 

%d bloggers like this: