Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Изменение запроса  [new]
mKotik
Member

Откуда:
Сообщений: 4
Добрый день!
Есть два запроса:
1. Общий

SELECT NON EMPTY { [Measures].[Расход Сумма], [Measures].[Прибыль], [Measures].[Рентабельность] } ON COLUMNS, NON EMPTY { ([База].[База].[База].ALLMEMBERS * [Дата].[Месяц].[Месяц].ALLMEMBERS * [Клиент].[Клиент N].[Клиент N].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM [Движение Товара] CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

2. Уникальный
SELECT NON EMPTY { [Measures].[Расход Сумма], [Measures].[Прибыль], [Measures].[Рентабельность] } ON COLUMNS, NON EMPTY { ([База].[База].[База].ALLMEMBERS * [Дата].[Месяц].[Месяц].ALLMEMBERS * [Клиент].[Клиент N].[Клиент N].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( Filter( [Клиент].[Клиент N].[Клиент N].ALLMEMBERS, Instr( [Клиент].[Клиент N].currentmember.Properties( 'Member_Caption' ), 'NN00000000' ) = 1 ) ) ON COLUMNS FROM [Движение Товара]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

Как правильно написать запрос, который будет из Общего вычитать Уникальный?

ЗЫ Извините за вопрос - только учусь :)
4 июн 18, 22:01    [21467942]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
982183
Member

Откуда:
Сообщений: 2002
Картинка с другого сайта.
5 июн 18, 02:16    [21468388]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3411
че в MDX уже тоже лефт и фулл джоины есть???
5 июн 18, 10:34    [21468886]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
982183
Member

Откуда:
Сообщений: 2002
Сорри. Мои соболезнования.
5 июн 18, 12:55    [21469425]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
tarrus
Member

Откуда: Bergen
Сообщений: 688
982183,

Диаграммы Венна использовать для объяснения джойнов не правильно.

Если inner join пересечение, то что такое intersect?
5 июн 18, 12:59    [21469441]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5113
tarrus
Диаграммы Венна использовать для объяснения джойнов не правильно.

Если inner join пересечение, то что такое intersect?
отнюдь... они прекрасно показывают суть.
что до intersect, то это inner join + distinct (если упрощённо) плюс с ограничениями на объединяемые множества.
5 июн 18, 13:19    [21469513]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
tarrus
Member

Откуда: Bergen
Сообщений: 688
Дедушка
tarrus
Диаграммы Венна использовать для объяснения джойнов не правильно.

Если inner join пересечение, то что такое intersect?
отнюдь... они прекрасно показывают суть.
что до intersect, то это inner join + distinct (если упрощённо) плюс с ограничениями на объединяемые множества.


Не согласен. Это очень путает новичков (да и не только).

В теории множест нет никаких джойнов, т.к. джойн генерирует новое множество состоящее из совершенно других объектов.

Пример: К Студентам можно присоединить Номера, но объединить Студентов с Номерами нельзя.

Я столько всякой ахинеи наслушался из-за применения к джойнам этих диаграмм.
5 июн 18, 13:40    [21469591]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5113
tarrus
Пример: К Студентам можно присоединить Номера, но объединить Студентов с Номерами нельзя.
можно если они одинакового типа, например строки.
бритва Окама, не нужно придумывать "лишнее" это просто картинки.
либо приводите пример какая картинка (из тех что выше) неправильно описывает тип соответствующего соединения.
5 июн 18, 14:25    [21469760]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
tarrus
Member

Откуда: Bergen
Сообщений: 688
Дедушка
tarrus
Пример: К Студентам можно присоединить Номера, но объединить Студентов с Номерами нельзя.
можно если они одинакового типа, например строки.
бритва Окама, не нужно придумывать "лишнее" это просто картинки.
либо приводите пример какая картинка (из тех что выше) неправильно описывает тип соответствующего соединения.


Если вспомнить, что SQL создан для реляционных баз данных. Реляционный - не просто слово, а ключевое слово.

Если вспомнить ввести понятие отношения, то натягивать сову диаграммы Венна на глобус отношения не придется.
5 июн 18, 16:10    [21470250]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
982183
Member

Откуда:
Сообщений: 2002
А в чем проблема реализовать LeftJoin без него самого

В простейшем виде это может выглядеть так:
http://www.sqlfiddle.com/#!18/326d2/7
6 июн 18, 04:56    [21471458]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 2162
mKotik
Как правильно написать запрос, который будет из Общего вычитать Уникальный?
ЗЫ Извините за вопрос - только учусь :)

Для этого нужно понять, что - если уж очень упрощенно - у Вас есть запрос по одному set и запрос по другому set, и Вам таки очень нужен запрос по третьему set, который является результатом работы MDX функции except.
6 июн 18, 12:24    [21472264]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
mKotik
Member

Откуда:
Сообщений: 4
Andy_OLAP, спасибо за вопрос.
автор
таки очень нужен запрос по третьему set, который является результатом работы MDX функции except.

Именно так.
Есть Общий запрос, который выводит 2 млн строк
SELECT NON EMPTY { [Measures].[Расход Сумма], [Measures].[Прибыль], [Measures].[Рентабельность] } 
        ON COLUMNS, NON EMPTY { ([База].[База].[База].ALLMEMBERS * [Дата].[Месяц].[Месяц].ALLMEMBERS * [Клиент].[Клиент N].[Клиент N].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME 
        ON ROWS FROM [Движение Товара] CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 

И есть Уникальный запрос туда же с 2 тыс. строк
SELECT NON EMPTY { [Measures].[Расход Сумма], [Measures].[Прибыль], [Measures].[Рентабельность] } 
        ON COLUMNS, NON EMPTY { ([База].[База].[База].ALLMEMBERS * [Дата].[Месяц].[Месяц].ALLMEMBERS * [Клиент].[Клиент N].[Клиент N].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME 
        ON ROWS FROM ( SELECT ( Filter( [Клиент].[Клиент N].[Клиент N].ALLMEMBERS, Instr( [Клиент].[Клиент N].currentmember.Properties( 'Member_Caption' ), 'NN00000000' ) = 1 ) ) 
        ON COLUMNS FROM [Движение Товара]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

с добавленным параметром Клиент N = 'NN00000000'
ON ROWS FROM ( SELECT ( Filter( [Клиент].[Клиент N].[Клиент N].ALLMEMBERS, Instr( [Клиент].[Клиент N].currentmember.Properties( 'Member_Caption' ), 'NN00000000' ) = 1 ) )

Чтобы не "плодить" запросы и делать дополнительную работу хотел написать единый запрос, который исключал из Общего запроса Уникальный. Результативный запрос = Общий запрос - Уникальный запрос.

PS Ещё раз извините за может быть глупые вопросы.
7 июн 18, 11:55    [21475316]     Ответить | Цитировать Сообщить модератору
 Re: Изменение запроса  [new]
mKotik
Member

Откуда:
Сообщений: 4
Спасибо всем за участие!
Оказалось совсем всё просто -> (<> 1):
FROM ( SELECT ( Filter( [Клиент].[Клиент N].[Клиент N].ALLMEMBERS, Instr( [Клиент].[Клиент N].currentmember.Properties( 'Member_Caption' ), 'NN00000000' ) <> 1 ) )
8 июн 18, 16:43    [21479709]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить