Неактуальные ролевые измерения в SSAS - PullRequest
0 голосов
/ 07 января 2019

Я новичок в SSAS и создаю подтверждение концепции. Мне нравится идея ролевых измерений, но у меня проблемы с получением одной установки, которая НЕ основана на датах. Вот пример использования:

В нашей системе ERP у нас есть таблица фактов, которую мы будем называть «Записи времени», которая имеет:

  • User_ID
  • Biller_ID
  • Approver_ID
  • Отработанные часы
  • ETC

У меня также есть таблица ресурсов, к которой я отношу их как внешние ключи:

  • resource_id
  • Department_Name
  • ETC

Когда я создаю свое представление источника данных, я создаю связь между:

  • User_ID -> Resource_ID
  • Biller_ID -> Resource_ID
  • Approver_ID -> Resource_ID

Мое «ресурсное» измерение может быть успешно развернуто и обработано и имеет следующие атрибуты:

  • resource_id
  • Название отдела

Мой куб «Записи работ» имеет одну меру, «Отработанные часы». Когда я добавляю в свое измерение «Ресурсы», оно создает три ролевых измерения:

  • Пользователь
  • Ресурс утверждающего
  • Ресурс биллера

Когда я иду к процессу, я получаю следующую ошибку:

Ошибки в механизме хранения OLAP: ключ атрибута не может быть найден при обработке: Таблица: «Записи времени», Столбец: «user_id», Значение: «Некоторое число», Атрибут «Идентификатор ресурса».

Пока что единственный пост, за которым я следовал, который позволил мне успешно устранить неполадки, это:

https://www.sqlservercentral.com/Forums/1219713/Errors-in-the-OLAP-storage-engine-The-attribute-key-cannot-be-found-when-processing-Even-though-key-Exist-in-Dim-Table

TL; DR -

  • Я удалил отношения между факторизованными и тусклыми таблицами в базе данных.
  • Я обновляю dataSourceViews, и нет никаких связей между таблицами
  • Я убираю размеры в дизайне куба
  • Я воссоздаю размеры в дизайне куба
  • Затем я строю отношения в dataSourceViews между внешним ключом в фактабельном ключе и первичными ключами в dim-таблицах
  • Я покорил куб

Проблема в том, что, поскольку мы добавили измерение обратно ДО создания отношений, у нас нет наших измерений для ролевых игр.

Я чувствую, что упускаю что-то простое здесь, но я не могу понять это. Может кто-нибудь сказать мне, почему мои ролевые измерения не работают?

1 Ответ

0 голосов
/ 11 января 2019

Ролевая функция измерения не зависит от его типа. Ваши измерения можно использовать в ролевом сценарии, например измерение «Дата».
По вашей проблеме - механизм SSAS может создавать иногда странные запросы, извлекающие данные измерений, особенно если ваше измерение основано на данных из нескольких таблиц. Чтобы проверить и исследовать это:

  • Fix user_id значение из вашего сообщения об ошибке
  • Выполните обновление или обработку полностью в соответствующем измерении и получите запрос SQL, используемый для обработки user_id атрибута из формы окна обработки. Он обрабатывает user_id запись в журнале атрибутов.
  • Скопируйте SQL-запрос и запустите его. Проверьте, возвращает ли он идентификатор из сообщения об ошибке выше.
  • Если значение отсутствует - исследуйте запрос

По моему опыту - такие вещи происходили, когда ошибочное измерение было построено на двух таблицах с некоторым соотношением. Движок SSAS имеет встроенный запрос со строгим внутренним соединением, и он должен быть менее ограничительным левым внешним соединением.
Это можно исправить с помощью SSDT, играющего с непустым атрибутом DSV, но я обнаружил, что проще написать SQL-запрос с правильными соединениями непосредственно в DSV.

...