MDX过滤级别成员

时间:2015-06-02 08:46:13

标签: mysql ssas mdx mondrian

我的问题是如何通过MDX中的另一个字段过滤有效字段。

我有一张桌子:样品; 如果我使用sql来解决问题,就像这样:

select patient_id from samples where calc_test_type_id = 1;

我为此创建了维度:患者特征          层次结构:id          level:id(样本表中的患者id),包括属性,名为'testA','testA'链接到calc_test_type_id。

所以我尝试了这样的MDX:

SELECT
{[Measures].[num_samples]} ON COLUMNS,

{
  filter
       (
       distinct([Patient characteristic.id].[id].members),
       [Patient characteristic.id].CurrentMember.Properties("calc_type") = 1
       )
} ON ROWS
FROM [EIDCube]

[Measures].[num_samples]用于计算calc_test_type_id = 1的行数。

但我发现有些数据丢失了。那么如何找到所有合适的患者身份?

1 个答案:

答案 0 :(得分:1)

您的代码看起来很好。首先尝试创建集。此外,我认为你不需要明确:

WITH SET [calc_type1] AS
  FILTER
       (
         [Patient characteristic.id].[id].members)
        ,[Patient characteristic.id].CurrentMember.Properties("calc_type") = 1
       )
SELECT
  {[Measures].[num_samples]} ON 0,
   [calc_type1] ON 1
FROM [EIDCube];

要检查返回的集合,我很想在没有该措施的情况下首先运行此脚本,如下所示:

WITH SET [calc_type1] AS
  FILTER
       (
         [Patient characteristic.id].[id].members)
        ,[Patient characteristic.id].CurrentMember.Properties("calc_type") = 1
       )
SELECT
  {} ON 0,
  [calc_type1] ON 1
FROM [EIDCube];