MDX-эквивалент SQL-запроса

Чему будет эквивалентен запрос MDX:

select * from tableName where somecount > num1 and somecount < num2?

somecount в моем случае это измерение (не измерение).

Насколько я понял, пункт WHERE в запросах MDX не поддерживает операции меньше или больше. somecount в моем случае это Timestamp. Поскольку я хочу агрегировать данные о параметрах, переданных пользователем (могут быть агрегированы вчера, за последние 7 дней, за последние 15 дней, за последний месяц и т. д.). Таким образом, предварительное вычисление временной метки и ее сохранение в виде Год-Месяц-День-Время не поможет.


person Tarun Kumar    schedule 18.11.2011    source источник
comment
Чтобы получить somecount › num1, вам нужно прочитать о функции MDX Filter().   -  person Magnus Smith    schedule 27.11.2011


Ответы (2)


Существует распространенная ошибка при смешивании SQL и MDX из-за схожего синтаксиса. но MDX не похож на SQL.

Я бы посоветовал пройти этот учебник Gentle MDX, чтобы лучше понять .

Select *

В MDX нет эквивалента *, вы должны указать свои оси, указав свои размеры. Например, вы можете использовать [Measures].members для выбора списка мер.

.. where somecount > num1 and somecount < num2?

Перевод для этого использует подвыборки MDX, странно, но предложение MDX where отличается. Это больше похоже на:

Select [Measures].members on 0
from (
   select {All the members that match your filter} from [MyCube] 
)

Есть несколько способов получить список участников, проверьте список доступных функций MDX. чтобы получить представление обо всем, что возможно.

Удачи вам с вашими первыми шагами в MDX.

person ic3    schedule 18.11.2011

SELECT MEMBERS ON ROWS  FROM (SELECT Filter(filter) ON COLUMNS  FROM [FACT_TABLE])

Фильтр должен быть примерно таким

Filter([TIME].[YEAR].[YEAR].AllMembers, (
[TIME].[YEAR].CurrentMember.member_caption>="2009" AND 
[TIME].YEAR].CurrentMember.member_caption<="2012" ))
person Lokeshwer    schedule 12.12.2011