我正在尝试将计算成员添加到 MDX 查询,这将为我的数据库中的人创建一组“年龄带”。我有一个包含每个人年龄的度量。
我已经开始使用这个 MDX
SELECT
NON EMPTY {[Measures].[Count of People]} ON COLUMNS,
NON EMPTY {
(
[People].[Gender].[Gender],
[People].[Some].[Other Attributes]
)
} ON ROWS
FROM [MyCube]
WHERE ( ... slicer here .... )
Run Code Online (Sandbox Code Playgroud)
我还有另一个措施([Measures].[Age]
),我想将其捆绑起来并与行一起返回,例如 0-25、26-50 岁等的任何人
这是我试过的
WITH SET [Age Band]
AS IIF([Measures].[Age]<26,"0-26",IIF([Measures].[Age]<51,"26-51","Over 50"))
SELECT
NON EMPTY {[Measures].[Count of People]} ON COLUMNS,
NON EMPTY {
(
[People].[Gender].[Gender],
[People].[Some].[Other Attributes],
[Age Band]
)
} ON ROWS
FROM [MyCube]
WHERE ( ... slicer here .... )
Run Code Online (Sandbox Code Playgroud)
但是我得到的错误是
该函数需要参数的元组集表达式。使用了字符串或数字表达式。
我究竟做错了什么?有没有更简单/更好的方法来做到这一点而无需链接IIF
命令?
小智 5
如果除了将年龄作为People
度量之外,您还希望将年龄作为维度中的一个属性,则可以将带定义为该属性层次结构的计算成员(计算成员不需要是计算度量,它们可以是任何层次结构的成员!):
WITH Member [People].[Age].[0-26] AS
Aggregate([People].[Age].[0] : [People].[Age].[26])
Member [People].[Age].[26-51] AS
Aggregate([People].[Age].[26] : [People].[Age].[51])
Member [People].[Age].[Over 50] AS
Aggregate([People].[Age].[51] : null)
SELECT
NON EMPTY {[Measures].[Count of People]} ON COLUMNS,
NON EMPTY
[People].[Gender].[Gender]
*
[People].[Some].[Other Attributes]
*
{ [People].[Age].[0-26], [People].[Age].[26-51], [People].[Age].[Over 50] }
ON ROWS
FROM [MyCube]
WHERE ( ... slicer here .... )
Run Code Online (Sandbox Code Playgroud)
请注意,我将边界年龄 26 和 51 分别保留在两个乐队中,因为您的乐队的名称似乎建议这样做。您可以在 MDX 中执行此操作,因为计算成员的每个定义都独立于其他成员,因此不禁止计算成员之间存在交集。但是您可能会选择调整表达方式,并且只将每个年龄包含在一个频段中。
您尝试的方式不起作用,因为 MDX 中的集合由元组组成,而您从IIF
表达式中传递一个字符串。
归档时间: |
|
查看次数: |
4758 次 |
最近记录: |