Кубы OLAP служб Analysis Services 2005:Могу ли я создать отдельную меру подсчета в столбце nvarchar?
Вопрос
Я пытаюсь создать куб с одной мерой.Эта мера представляет собой отдельный счетчик столбца «имя».Куб отлично работает, если для меры установлен тип «счет».Однако, когда я устанавливаю отдельный счетчик, я получаю эту ошибку:
«Ошибки в механизме хранения OLAP:Порядок сортировки, указанный для отдельных записей количества, неверен"
Я читал в некоторых блогах, что вы можете иметь отдельные значения только для числового столбца.Я не вижу для этого веской причины и не могу найти эту информацию в официальной документации.Однако это может быть правдой.В любом случае, я действительно застрял в этом вопросе.Какие у меня есть варианты?
Решение
мой ответ может быть для вас слишком запоздалым, но надеюсь, что это поможет другим, у которых такая же проблема.
- Перейдите к представлению источника данных в обозревателе решений.
- Найдите таблицу, содержащую столбец GUID, который необходимо агрегировать.
- Щелкните правой кнопкой мыши заголовок выбранной таблицы и выберите «Создать именованный расчет».
- Дайте ему имя
- Введите следующее в поле Выражение: CAST (Имя столбца как varchar (36))
Это решение по этой ссылкеhttp://www.bi-dw.info/sql-server-tips/distinct_count-measure-on-uniqueidentifier.htm
Другие советы
Google и в частности Eggheadcafe пришли на помощь с решением:
- Подключитесь к службам Analysis Services из SQL Server Management Studio.
- Щелкните правой кнопкой мыши имя сервера служб Analysis Services (т. е. самую верхнюю ссылку служб Analysis Services).
- Выберите недвижимость
- Установите флажок «Показать дополнительные (все) свойства».
- Найдите следующий параметр
- OLAP\Процесс\CheckDistinctRecordSortOrder
- Установите это значение на 0
- Нажмите ОК
- Откройте OLAP в Visual Studio или BIDS.
- Обработайте куб.
Отвечу себе, может кому-то это будет полезно.
Короткий ответ: да.
Я создал несколько тестовых таблиц с той же структурой, но с несколькими тестовыми строками.Куб прекрасно работает с этими данными.
Итак, я предполагаю, что в исходных таблицах есть какие-то поврежденные данные или, может быть, какие-то редкие символы.
Вы правы, вы можете выполнить отдельный подсчет столбца nvarchar.
Это может быть связано со странными символами или с настройками сортировки.
Вы можете попробовать обработать меньшие подмножества группы мер, чтобы попытаться изолировать проблемную строку.
Это может быть связано с настройками сортировки.Сервер Sql по умолчанию имеет SQL_Latin1_General_CP1_CI_AS, где в качестве SSAS используется сопоставление Windows Latin1_General.Если вы измените параметры сортировки в столбце, в котором вы выполняете отдельный подсчет, я думаю, это решит проблему.
У меня возникла проблема с попыткой четкого подсчета столбца INT ID.Потратив много времени на просмотр настроек «Неизвестный элемент» и настроек использования измерений, я нашел еще одно предположение о том, что измерениям Distinct Count не нравятся значения NULL.Добавление WHERE COLUMN IS NOT NULL к запросам разделов для этой отдельной группы показателей количества решило мою проблему.
Это было предложение:«Ошибки в механизме хранения OLAP:Порядок сортировки, указанный для отдельных записей количества, неверен.
Убедитесь, что столбец Differentcount не содержит значений NULL.Если это так, их можно исключить из группы мер с помощью запроса в определении секции (при условии, что мера подсчета уникальных объектов находится в отдельной группе мер)"
Дерби дал правильный ответ в моей ситуации.В моем случае я пытался обработать модель интеллектуального анализа данных в SSDT (VS 2012) и получил ошибку.
Ошибка началась после того, как я внес некоторые исправления в запрос, создавший таблицу, которую я использовал в качестве источника данных.Я предполагаю, что где-то были введены NULL-значения, которых у меня не было до того, как я внес исправления в свой запрос и, следовательно, в исходную таблицу (до этого модель интеллектуального анализа обрабатывалась нормально).Я не могу проголосовать за Дерби из-за моей репутации нуба.
Я столкнулся с той же проблемой и обнаружил, что в моих данных были специальные символы/символы, которые не позволяли обрабатывать куб.Скорее всего, куб не смог отсортировать данные со специальными символами.
Мне удалось решить проблему, преобразовав данные в строку хэш-байтов, используя следующую функцию:
SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', [column_name])), 3, 32)