Проблема с запросом MDX служб SSIS

Всем привет!

У меня небольшая проблема с моим запросом в MDX.

Я пытаюсь запросить типы восстановления повреждений из своего куба. Далее я объясню свое измерение и таблицу фактов:

Размер: Тип ремонта повреждений

ключ типа ремонта | Имя | RepairTypeAlternateKey | RepairSubTypeAlternateKey | Подимя
0 | Неизвестно | 0 | НОЛЬ | NULL
1 |Исправить |1 |1 | 1 Вскипятить
2 |Заменить |2 |NULL | NULL
3 |Исправить |1 |2 | 2 Кипятит
4 |Ремонт |1 |3 | 3 кипятка

Итак, у меня есть в моей таблице фактов «CLaimCosts» для каждой претензии один RepairTypeKey. Я заполняю таблицы и проектирую куб. Измерение имеет иерархию с RepairType и SubRepairType. Я обрабатываю куб, и он работает нормально:

  • Demage Repair Type
    • Hirarchy
      • Members
        • All
          • Replacement
          • Repair
            • 1 Boil
            • 2 фурункула
            • 3 фурункула
          • Неизвестный

Теперь я создаю запрос с MDX:

select
    {
        [Measures].[Claim Count],
        [Measures].[Claim Cost Position Count],
        [Measures].[Claim Cost Original],
        [Measures].[Claim Cost Original Average],
        [Measures].[Claim Cost Possible Savings],
        [Measures].[Claim Cost Possible Savings Average],
        [Measures].[Claim Cost Possible Savings Percentage] 
    } on 0,

    NON EMPTY{
        NonEmpty([Damage Repair Type].[Hierarchy].Allmembers, ([Measures].[Claim Count]))
    } on 1

    from 
        Cube

    where 
    (
        ({StrToMember(@DateFrom) : StrToMember(@DateTo)})
        ,([Claim Document Type].[Document Type].&[4])


    )

Теперь я пытаюсь запустить запрос, и он работает, но у меня слишком много строк:

Тип ремонта повреждений | Подтип восстановления повреждений | Количество претензий | ....
NULL |NULL | 200000
Замена | НОЛЬ | 150000
Ремонт | НОЛЬ | 45000
Ремонт | 1 кипячение | 10000
Ремонт | 2 Варить | 15000
Ремонт | 3 Варить | 19000
Неизвестно |NULL | 1000

Моя проблема - первая строка (сумма) и третья строка (сумма)! Мне не нужны эти строки, но я не знаю, как их фильтровать! Мне не нужны эти суммы, потому что у меня есть Чайлдс с правильными счетами!

Как я могу отфильтровать это? Пожалуйста помогите. Это не работает!

Извините за мой плохой английский и спасибо!

Алекс


person Alexo    schedule 20.07.2011    source источник
comment
Никто не идея? Если у вас есть вопрос, вы можете спросить! Тогда я могу попытаться объяснить лучше.   -  person Alexo    schedule 20.07.2011
comment
какова логика удаления строк (почему не вторая и не последняя)? --- проверьте функции filter() и isEmpty().   -  person ic3    schedule 20.07.2011
comment
В MDX не так много людей, как в других предметах, вам нужно быть немного более терпеливым, чтобы получить «бесплатный» ответ ;-)..   -  person ic3    schedule 20.07.2011


Ответы (1)


NonEmpty([Damage Repair Type].[Hierarchy].Allmembers, ([Measures].[Claim Count]))

Вы можете использовать:

NonEmpty([Damage Repair Type].[Hierarchy].Levels(2).Members, [Measures].[Claim Count])

Таким образом мы исключаем членов All. Кроме того, когда вы используете элементы уровня (например, [dim].[hier].[lvl].Members) вместо элементов иерархии (например, [dim].[hier].members), вы не получаете агрегированные элементы - например элемент All, который обычно присутствует во всех иерархиях, кроме иерархий неагрегируемых атрибутов.

person Boyan Penev    schedule 21.07.2011
comment
Спасибо! Оно работает! :) Единственная проблема, которую я не могу решить: если я показываю данные через табликс, он показывает данные правильно! Если я построю итог в конце табликса, он суммирует всю сумму! Он суммирует ремонт родительской иерархии и дочернюю иерархию 1 вскипание, 2 вскипание и т. д. Но это одно и то же значение. - person Alexo; 21.07.2011
comment
Просто удалите DRT.H.Levels(1).Members из набора - тогда все должно работать так, как вы хотите... - person Boyan Penev; 21.07.2011