Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Динамический фильтр / 6 сообщений из 6, страница 1 из 1
31.01.2005, 17:54
    #32893158
McLuad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический фильтр
Всем Привет
Есть MDX запрос

WITH SET TimeInterval AS '({[Projects_DW].[Project Id].[96]})'

MEMBER [Measures].[NOF] AS 'SUM(TimeInterval, [Measures].[Number Of Count])'
Member [Codes_DW_Focus].[My Codes] as 'SUM({[Codes_DW_Focus].[Code Id].[12], [Codes_DW_Focus].[Code Id].[15] , [Codes_DW_Focus].[Code Id].[17]} )'

select {[Measures].[NOF]} on columns
, non empty {[Publication_Date].Members}
from MyCUBE
Where ([Codes_DW_Focus].[My Codes] )

где
Codes_DW_Focus].[My Codes] выполняет роль фильтра, то есть показывать publication date связанную с кодом 12, 15, 17. В данном контексте, фильтр это фильтр типа ИЛИ. То есть показать то что связанно с кодом 12 ИЛИ 17 ИЛИ 15.
Теперь нужно как-то преобразовать это выражение чтоб выполнялось правило И. То есть показать код, если он связан с другим кодом 17 И 12 И 15.

Как бы это сделать с минимальным изменением текущего кода. Пробовал вместо функции SUM ставить Intersect, но что-то не работает.
...
Рейтинг: 0 / 0
31.01.2005, 19:23
    #32893343
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический фильтр
примерно так
Код: plaintext
1.
2.
Extract(NonEmptyCrossJoin([Publication_Date].Members,
{[Codes_DW_Focus].[Code Id].[ 12 ], [Codes_DW_Focus].[Code Id].[ 15 ] , [Codes_DW_Focus].[Code Id].[ 17 ]}),
[Publication_Date].Levels( 1 ))
...
Рейтинг: 0 / 0
02.02.2005, 19:00
    #32897931
McLuad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический фильтр
Привет Дмитрий.
Спасибо за ответ, но к сожалению он не помог.

Вот к примеру другой вариант:

select
{[Codes_DW].[Code Id].[17] } on 0,
{[Measures].[Number Of Count]} on 1

from MyCube
where ( [Codes_DW_Focus].[Code Id].[20] ,[Codes_DW_Focus].[Code Id].[11] )

здесь представлен случай, когда в качестве фокуса выбраны два значения 20 и 11. Конечно данный селест не работает потому что во фразе where стоят два значения из одного дименшена. Но мне нужен как бы фильтр И.
Код 17 пересекается с 20 через 2 артикла, 17 пересекается с 11 одним артиклом. а 20 пересекается с 11 одним артиклом. То есть все три кода 11,17,20 имеют 1 общий артикл. И я ожиидаю получить результат преведущего селекта как 1.
Как ни крутил, ничего не получается. Пробовал наверно все функции. И вложенные NonEmptyCrossJoin и Extract и все что угодно.
То есть мне нужно как-то написать так, чтоб работало не для одного значения фокуса а максимум для трех.
Подкиньте идеи, Please.
...
Рейтинг: 0 / 0
03.02.2005, 10:27
    #32898532
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический фильтр
так много слов...
привели бы скриншот дизайна куба, а?
чем отличаются измерения Codes_DW и Codes_DW_Focus?
что возвращает запрос такой запрос?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select
NonEmptyCrossJoin(
  {[Codes_DW].[Code Id].[ 17 ]},
  [Publication_Date].Members,
  {[Codes_DW_Focus].[Code Id].[ 20 ],
    [Codes_DW_Focus].[Code Id].[ 11 ]}
) on  0 ,
{[Measures].[Number Of Count]} on  1 
from MyCube
...
Рейтинг: 0 / 0
03.02.2005, 11:27
    #32898669
McLuad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический фильтр
Спасибо Дмитрий,
Привожу 3 запроса и их результат, а также картинку куба.

select
NonEmptyCrossJoin(
{[Codes_DW].[Code Id].[17]},
[PublicationDate].[YMD].Members,
{[Codes_DW_Focus].[Code Id].[20],
[Codes_DW_Focus].[Code Id].[11]}
) on 0,
{[Measures].[Number Of Count]} on 1
from MyCube

select
NonEmptyCrossJoin(
{[Codes_DW].[Code Id].[17]},
{[Codes_DW_Focus].[Code Id].[20],
[Codes_DW_Focus].[Code Id].[11]}
) on 0,
{[Measures].[Number Of Count]} on 1
from MyCube

select
NonEmptyCrossJoin(
{[Codes_DW].[Code Id].[20]},
{[Codes_DW_Focus].[Code Id].[11],
[Codes_DW_Focus].[Code Id].[11]}
) on 0,
{[Measures].[Number Of Count]} on 1
from MyCube


Если брать второй запрос то картина то еслибы мне возратилась всего 1 строка для кода 17 с Number Of Count = 1, так как 11 и 20 – это фильтры и 17,20,11 обьеденяет всего 1 строка, то было бы идеально
...
Рейтинг: 0 / 0
03.02.2005, 13:11
    #32899000
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический фильтр
Код: plaintext
1.
2.
3.
4.
5.
6.
select
Min(NonEmptyCrossJoin(
{[Codes_DW].[Code Id].[ 17 ]},
{[Codes_DW_Focus].[Code Id].[ 20 ],
[Codes_DW_Focus].[Code Id].[ 11 ]}
), [Number Of Count]) on  0 
from MyCube
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Динамический фильтр / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]