1

我有以下数据结构

age     range    sex    population_segment
1        0-4      1       100
2        0-4      1       100
3        0-4      1       100
4        0-4      1       100
5        5-9      1       150
6        5-9      1       150

我想根据集合中唯一的第一个范围和性别属性变化来获得运行总和。例如,我的正确答案是只总结记录 1 和记录 5(即 250)。我的石斑鱼是范围和性别。

目前我的措施只是对所有值求和,让我得到错误的人口总和:750 我知道如何在标准 SQL 中做到这一点(在此处发布以进行澄清),但我需要 MDX 解决方案,计算成员。

示例 sql:

WITH cte AS 
(
select 
*,
RowNum = row_number() over(partition by range, sex order by range, sex)
FROM myPopulationData
)
SELECT  SUM(population_segment) FROM  cte WHERE  RowNum = 1
4

1 回答 1

0

这是一个可以通过多对多关系解决的情况:

  • 构建一个包含范围和性别的唯一组合以及 population_segment 和主键列的表/视图。这将用作包含 population_segment 度量的度量组的事实表。它还将用作范围-性别组合的维度表。
  • 构建一个包含年龄的表/视图,用作年龄的维度表。
  • 构建一个桥表/视图,其中包含年龄维度表的外键,以及第一个表的外键。这将获得另一个度量组的基础,其中仅包含计数作为度量,您可能希望使其不可见。
  • 在“维度用法”选项卡上,使用桥接度量值组将主度量值组和年龄维度之间的关系设置为多对多关系。

设置完所有内容后,Analysis Services 会自动处理所有计算逻辑。

如果除了 range-sex 维度之外,您还保留了 age 维度中的 range 和 sex 并使 range-sex 维度(从第一个表构建并从桥表链接)不可见,那么对于用户来说,这是一个可用性问题,或者如果你保持年龄和范围在另一个维度。我个人更喜欢第一选择,至少对于范围而言。

于 2013-12-19T13:10:06.297 回答