whitelillie wrote: ↑Wed May 08, 2019 2:52 am
Alan Kirk wrote: ↑Tue May 07, 2019 8:10 am
That said, I would not necessarily recommend using people's names as principal element names. If someone changes their name (as some newly married women have an annoying (from a system point of view) habit of doing), you'll need to export all of the data relating to that element and create a new one, then reimport the data. Changing a name is the same as deleting the old element and creating a new one, which is why aliases came in back in version 7; that was a real problem until then.
Normally you would use an artificial key for this; something like an employee ID code from the HR module. You can use the name as an alias. You can then use MDX to create sorted subsets which put the elements into the order that you want.
Agree that using people's names as principal element names is not the best approach. Unfortunately in my current workplace it's the only solution that has worked for us.
We have so many systems that we draw data from (financial, HR, IT, travel, compliance, assets etc) and they all record employee names in a different format. The way that we have gotten around this is by creating an employee name dimension that has the employee's active directory name as the main element and then any other formats as alias'.
AD_Name | chris-smith |
Current | Yes |
Description | chris smith |
Alt Description 1 | chris.smith |
Alt Description 2 | christopher smith |
Alt Description 3 | christopher.smith |
Alt Description 4 | christopher-smith |
Alt Description 5 | SMITH Chris |
Alt Description 6 | SMITH Christopher |
Alt Description 7 | SMITH, Chris |
It's not the cleanest solution but for us, it solves more problems than it creates when capturing employee name data across the multiple systems.
Using the AD name as the principal name is less of an issue, since that at least enforces a certain level of uniqueness. Where you
may encounter a problem (though this is not germane to the issue at hand) is with the aliases if your organisation is of any significant size. I have to deal with at least half a dozen cases in payroll reporting where two people have the same name. And some of them aren't even particularly common names. Annoyingly, given the total absence of error handling in TI, this can sometimes cause "cannot create alias" errors to spit even if you put in some code that should theoretically avoid them.
Suppose that you have another Chris Smith come to work for you. Maybe it's even Christine Smith this time.
Let's also suppose that the above Description 5 is coming out of the financial system, and that the new Chris Smith is set up as SMITH Chris in the travel system, which is Alt Description 7, say.
For the new employee Alt Description 7 won't be populated because it won't be unique. (The name has to be unique across ALL aliases.)
Thus when you do the lookup for the name SMITH Chris in the travel system interface... you'll be getting alt description 5 of the original employee, not alt Description 7 for the new one.
If you're a really small organisation of 20 people or so this is likely to be less of an issue. The odds are heavily in your favour that you won't get a duplicate name. If you have a few hundred, it will most likely be an issue at the time that you can least afford it to be.
It's up to you and how much of a risk you perceive this to be, but I would probably be inclined to build a lookup cube which has as one dimension, all of the possible names used, in another the source system for that name, and stored at the intersection the AD principal name.
(Actually upon further reflection I'd make that a 3 dimensional cube with a measures dimension consisting of 2 string elements; ADCode, and Comments so that you could make a note of any mapping issues that you have.)
In this way you can ensure that you pick up the correct principal element name in each interface. It would also allow you to streamline the number of aliases if you wanted to.