Отличающееся поведение NON EMPTY в Analysis Server 2000 и 2008 - PullRequest
0 голосов
/ 23 февраля 2011

В настоящее время мы запускаем интерфейсный инструмент управления информацией, который подключается к серверу анализа SQL для предоставления гибких отчетов.По сути, клиентский интерфейс создает некоторый MDX, который затем выполняет в службах Analysis Services, и преобразует результат в виде таблицы.

В настоящее время мы выполняем обновление с SQL 2000 до SQL 2008 и столкнулись с разницей в использовании.NON EMPTY в MDX.

Это запрос MDX

SELECT NON EMPTY {[Measures].allMembers} ON ROWS, NON EMPTY {} ON COLUMNS FROM Sales

При запуске на Analysis Server 2000 он возвращает список имен элементов Measure для строк, но при запуске вAnalysis Server 2008 ничего не возвращается.

Глядя на MDX, я думаю, что 2008 работает, как и ожидалось, а 2000 - не так, но он как бы сломал наш интерфейс, поскольку ничего не показывает в случае, когда этоMDX запускается (после этого ожидается, что пользователь будет перетаскивать некоторые столбцы, но при этом ничего не отображается, они не могут этого сделать).

Итак, есть ли причина для разницы.Была ли это «ошибка» в 2000 году, которая была исправлена ​​в 2008 году?Или есть какая-то опция конфигурации, которая может повлиять на то, что возвращается?(По сути, я хочу избежать внесения изменений в наш интерфейс, чтобы справиться с этим!)

Спасибо.

1 Ответ

0 голосов
/ 26 февраля 2011

Прошло достаточно много времени с тех пор, как я использовал SSAS 2000, что не похоже на вчерашний день.Я не могу вспомнить, чтобы увидеть такие перемены.Тем не менее, ваша НЕ ПУСТАЯ на столбцах кажется ложной, если намерение состоит в том, чтобы выпустить запрос только для членов.(Это совершенно правильно, я считаю, что это более надежно с пользовательскими интерфейсами, чем с использованием объектов метаданных.)

На NON EMPTY не влияют неявные слайсеры, и ваша структура куба могла где-то измениться.Если ваши верхние / стандартные элементы во всех измерениях, не относящихся к измерениям, дают все значения ячеек NULL, вы отбросите меры.

Предположим, вы выполняете тот же запрос, что и

SELECT NON EMPTY {[Measures].allMembers} ON  COLUMNS FROM Sales

и

SELECT  {[Measures].allMembers} ON COLUMNS FROM Sales

в консоли управления SQL Server.Вы получаете значения?

Если вы это сделаете, попробуйте запустить их в той же среде, что и пользователь (например, в отладочной версии своего приложения).Фильтры безопасности и настройки элементов по умолчанию - это две вещи, которые могут привести к правильной фильтрации строк NULL.

...