Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
Добрый день! Изучаю Olap и запутался в иерархиях). Нужно помощь специалистов. Вопрос я думаю не сложный. Но принципиально важный. Может быть литературу подскажите или другой источник где про это ясно рассказано

Пытаюсь построить обычную иерархию: Год-месяц-неделя-дата
Картинка с другого сайта.

Настраиваю правильно Attribute Relationships
Картинка с другого сайта.

Если я начинаю процессить - выскакивает ошибка, что дублируются значения
Картинка с другого сайта.

Беру у атрибутов Недяля и Месяц делаю составной уникальный ключ. Мне кажется достаточно добавить Год, чтобы идентифицировать эти значения (т.е сделать их уникальными)
Картинка с другого сайта.

Если я после этого процессинг запускаю, то опять выскакивает ошибка! Как я понимаю теперь Год не уникальный. Где я не правильно поступаю?
Картинка с другого сайта.
2 июн 17, 11:04    [20533874]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 399
msleg,

У вас взаимосвязи с атрибутами некорректны. Стрелочка Week -> Month подразумевает, что для одного объекта Week может быть только 1 Month, что в принципе не верно.
Расщепляйте дерево связей на 2 - Day -> Week -> Year и Day -> Month -> Year.
2 июн 17, 11:55    [20534113]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
Ferdipux,

Day -> Week -> Year и Day -> Month -> Year

Не понял эту фишку. Тогда получается у одного месяца будет несколько годов и нужно тоже делать прослойку.

Смысл Year и Day зачем год еще присоединять, если тогда можно и просто Day?

Day -> Week -> Day -> Month -> Day-> Year , т.к день точно однозначно все величины связывает

или по вашему получается
Day -> Week -> Year и Day -> Month -> Year и Day -> Year
2 июн 17, 12:26    [20534275]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 399
msleg,

Посмотрите как сделано в велозаводе, вот вам скрин

Или на примере, первое что ответил Google.

К сообщению приложен файл. Размер - 37Kb
2 июн 17, 12:45    [20534356]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
tashkafox
Member

Откуда: Москва
Сообщений: 33
msleg, Можно и при схеме Date -> Week -> Month -> Year добиться правильного процессинга.
Нужно настроить составной ключ для атрибута недели; в вашем случае Year + Month + Week.
Но тогда ваши недели будут разбиты на месяцы, т.е. в начале и конце месяца будет неделька-коротышок, что пользователям вашего куба скорее всего не понравится - они будут ожидать всегда 7-ми дневные недели.

Поэтому правильнее будет, как написали коллеги выше, для недель сделать отдельную иерархию; и у такого атрибута будет составной ключ Year + Week. Опять же, с небольшим допущением, что неделя на стыке годов будет разорвана по годам.
2 июн 17, 13:26    [20534628]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
tashkafox,

Для меня загадка), по какому принципу вы понимаете, что нужно в Week делать составной ключ, а например не для Month. И еще тройной ключ: Year + Month + Week
2 июн 17, 13:55    [20534808]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 399
msleg
Для меня загадка), по какому принципу вы понимаете, что нужно в Week делать составной ключ, а например не для Month. И еще тройной ключ: Year + Month + Week

У вас в измерении времени внизу объекты - дни. У каждого дня уникальный ключ.
Далее, выше дней - месяцы. Чтобы различать месяцы "апрель" разных годов, вводим в ключи месяца комбинацию Month + Year.
Недели. Основной вопрос - как сделать так, чтобы неделя привязывалась к одному вышележащему объекту. Если этот объект - год, то все просто - ключ недели - Week + Year (в правилах делового оборота если неделя дробится переходом года - то в декабре это 52 неделя, а в январе - 1). Если вы хотите привязать недели к месяцам - подумайте, что делать с неделями, на которые приходится смена месяца, они раздвоятся и будут видны как "Неделя 5 января 2017 года", "Неделя 5 февраля 2017 года".
С ключами все просто. Вам нужно обеспечить чтобы к объекту неделя привязывался только 1 вышестоящий объект. Поэтому ключ Week + Year не подходит, а ключ Week + Month + Year - вполне корректен.
2 июн 17, 14:46    [20535027]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
tashkafox
Member

Откуда: Москва
Сообщений: 33
msleg, скорее всего в данном атрибуте у вас хранятся данные в формате что-то типа номера недели в году, так? Т.е. значения 01, 02 и т.д.
Но неделя с именем "01" (если ключ только по Week) будет встречаться в каждом году.
Если добавить составной ключ Year + Week, то для каждого года неделя "01" будет уникальной.

Если планируете оставить иерархию Date -> Week -> Month -> Year (что будет некорректно, см выше почему), то нужен тройной ключ Year + Month + Week. На примере почему так:
Сейчас 22 неделя, но она относится и к маю, и к июню. Т.е. при построении иерархии Date -> Week -> Month -> Year неделя 22 будет разделена на 5-й и 6й месяц, т.е. будет 2 члена уровня с одинаковым ключом, т.е. дубликат ключа.

В окне процессинга найдите SQL-запросы, которые куб посылает к источнику данных для формирования списка членов каждого атрибута измерения. Посмотрите на них, может это добавит понимания.
2 июн 17, 14:55    [20535081]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
А верно будет утверждение, что если хочу построить иерархию, допустим следующего типа:

Атрибут_1(ключ)->Атрибут_2->Атрибут_3->Атрибут_4->Атрибут_5

то получается для
Атрибут_2 - ключ будет = Атрибут_5+Атрибут_4+Атрибут_3+Атрибут_2
Атрибут_3 - ключ будет = Атрибут_5+Атрибут_4+Атрибут_3
Атрибут_4 - ключ будет = Атрибут_5+Атрибут_4
Атрибут_5 - ключ будет = Атрибут_5
2 июн 17, 17:09    [20535686]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
msleg,

вовсе не обязательно.
правило другое: парент должен быть только один
иначе все новички наступают на грабли с месяцами. почему-то годов у нас столько сколько есть, дни у нас тоже ГГГГММДД, а вот месяцев почему-то только 12.
12 в году!!!!
2 июн 17, 17:17    [20535712]     Ответить | Цитировать Сообщить модератору
 Re: Errors in the OLAP storage engine: A duplicate attribute key has been found when processin  [new]
tashkafox
Member

Откуда: Москва
Сообщений: 33
msleg, Вы можете в таблице для дат подготовить специальные столбцы, которые будут ключами ваших атрибутов.
Например, для месяцев ключом будет столбец Month с данными в формате YYYYMM, тогда составной ключ не нужен.
а в свойстве NameColumn укажите значение из дургого столбца, который будет содержать наименования столбцов, в формате как вам нравится "01", или "Январь", или "Январь 2012".
Таким же образом и с остальными атрибутами.
2 июн 17, 17:55    [20535823]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить