我正在做一些小测试尺寸和立方体的探索性工作。我希望最终完全理解SSAS的“维度属性”概念,我觉得这很难理解,尽管我已经使用SSAS多年而没有真正深入了解它。
但这个问题太广泛了。我现在的问题是:
我创建了一个Employee维度。键列是EID(int),Name列是Name(varchar)。好的,我的命名约定并不出色(但是在SSAS维度设计中,好的命名约定似乎非常困难,因为所有对象名称都暴露给用户)。
还有一个名为Salary的属性。
我在这里要做的是探索“维度叶级属性”的可能性。 SSAS使用它们并不是真正的“维度属性”,尽管实现它们的唯一方法是作为维度属性。我所说的“叶级属性”是一个不可聚合的“属性”,具有与叶级相同的基数(或者,无论如何,被视为具有相同的基数)。出于本练习的目的,我不想通过Salary进行聚合:我只是希望Salary可用作维度的每个叶级成员的属性。有点像Key Column和Name Column属性的扩展。
我熟悉这种显示成员属性的常用方法:
WITH MEMBER Measures.ESal AS Employee.EID.CurrentMember.Properties("Salary")
SELECT
Measures.ESal ON 0,
Employee.EID.EID.Members
ON 1
FROM $Employee
这很有效。为了证明我只是从叶级返回成员,这是结果集:
(非叶级别的成员属性可能没有值是有意义的 - 我已经读过,在这种情况下,MDX只是抛出错误而不是显示叶级成员的值而没有对于非叶子。)
但是尝试使用DIMENSION PROPERTIES会导致错误:
SELECT
{} ON 0,
Employee.EID.EID.Members
DIMENSION PROPERTIES Employee.Salary
ON 1
FROM $Employee
结果:查询(4,22)找不到[员工]。[工资]维度属性。
如果我将层次结构和级别放入,它可以工作(尽管SSMS实际上没有显示DIMENSION PROPERTIES中指定的任何内容;正如我已经听到的那样):
选择 {} ON 0, Employee.EID.EID.Members DIMENSION PROPERTIES Employee.EID.EID.Salary ON 1 来自$ Employee
结果:就像之前一样,但没有ESal列(显然)。
两个问题: