这是一个初学者问题。在MDX查询中,如何返回维度属性?我找到的唯一方法是使用WITH MEMBER
在列维上添加此别名。
WITH
MEMBER [Measures].[User Email] as [User].CurrentMember.Properties("Email")
SELECT {
[Measures].[User Email],
[Measures].[Total Fees Value]
} ON COLUMNS,
NON EMPTY {
CrossJoin([Order].Children, [User].Children)
} ON ROWS
FROM [LineItemFact]
WHERE ([DateOfSalePst.Days].[2013])
这看起来有点笨重。如果我想通过在行轴中添加([Order].[All], [User].[All])
来显示总计,则会出现问题。它将尝试计算所有列的总和,并将返回User Email
中的异常,因为它自然无法计算电子邮件字符串的总和。
在MDX中获取属性是否有更好的方法?
答案 0 :(得分:2)
您可以使用DIMENSION PROPERTIES
:
SELECT {
[Measures].[Total Fees Value]
} ON COLUMNS,
NON EMPTY {
CrossJoin([Order].Children, [User].Children)
}
DIMENSION PROPERTIES [User].[Email]
ON ROWS
FROM [LineItemFact]
WHERE ([DateOfSalePst.Days].[2013])
如何访问这些属性取决于用于访问属性的客户端工具。 E. g。在SQL Server Management Studio中,您可以双击行标题单元格以查看它们,Excel数据透视表将它们显示为工具提示,据我所知,OLAP4J还将它们作为行轴成员的属性提供。
但是像Reporting Services这样的工具不允许以这种方式访问属性,因此对于这些,您在问题中定义的解决方法 - 定义显示它们的计算成员 - 是访问它们的唯一方法。
关于聚合这些内容,只要该属性不可用,Analysis Services就会返回NULL并且不会生成错误。但是,我不确定蒙德里安是如何处理这个问题的。