Измерение даты прекратило обработку в кубе OLAP

Немного предыстории: у нас есть OLAP-система, которая долгое время успешно обрабатывала свой куб для клиента. Потом недавно начал глючить. Это совпало с тем, что главный разработчик случайно женился и стал недоступен. Так что, очевидно, я не могу приставать к нему.

У нас есть измерение даты, которое работает на уровне Год, Месяц, День. У нас есть две иерархии для календарных и финансовых лет.

В настоящее время он выдает сообщение, которое я нахожу довольно неразборчивым (не будучи разработчиком OLAP), и примеры, которые я читал в Интернете, ссылаются на то, что это вызвано разделением недель на месяцы, что не является моей проблемой. Сообщение:

Rigid relationships between attributes cannot be changed during incremental processing of a dimension.

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

Internal error: The operation terminated unsuccessfully.
Errors in the OLAP storage engine: Rigid relationships between attributes cannot be changed during incremental processing of a dimension.
Errors in the OLAP storage engine: An error occurred while the 'Date ID' attribute of the 'Date' dimension from the 'TMC_CUBE_TESCO' database was being processed.
Errors in the OLAP storage engine: The process operation ended because the number of errors encountered during processing reached the defined limit of allowable errors for the operation.
Server: The operation has been cancelled.

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

SELECT DISTINCT [dbo_dw_DIMdate].[DateTime] AS [dbo_dw_DIMdateDateTime0_0],[dbo_dw_DIMdate].[DayOfMonth] AS [dbo_dw_DIMdateDayOfMonth0_1],[dbo_dw_DIMdate].[MonthNumberCalendar] AS [dbo_dw_DIMdateMonthNumberCalendar0_2],[dbo_dw_DIMdate].[YearCalendar] AS [dbo_dw_DIMdateYearCalendar0_3]
FROM [dbo].[dw_DIMdate] AS [dbo_dw_DIMdate]
Processing Dimension Attribute 'Date ID' failed. 1 rows have been read.
Start time: 10/21/2011 10:30:35 PM; End time: 10/21/2011 10:30:35 PM; Duration: 0:00:00
SQL queries 1

SELECT DISTINCT [dbo_dw_DIMdate].[DateID] AS [dbo_dw_DIMdateDateID0_0],[dbo_dw_DIMdate].[DayOfCalendarYear] AS [dbo_dw_DIMdateDayOfCalendarYear0_1],[dbo_dw_DIMdate].[DayOfFiscalYear] AS [dbo_dw_DIMdateDayOfFiscalYear0_2],[dbo_dw_DIMdate].[DayOfWeek] AS [dbo_dw_DIMdateDayOfWeek0_3],[dbo_dw_DIMdate].[IsCalendarYearToDate] AS [dbo_dw_DIMdateIsCalendarYearToDate0_4],[dbo_dw_DIMdate].[IsFiscalYearToDate] AS [dbo_dw_DIMdateIsFiscalYearToDate0_5],[dbo_dw_DIMdate].[IsLastCalendarMonth] AS [dbo_dw_DIMdateIsLastCalendarMonth0_6],[dbo_dw_DIMdate].[IsLastWeek] AS [dbo_dw_DIMdateIsLastWeek0_7],[dbo_dw_DIMdate].[IsWeekDay] AS [dbo_dw_DIMdateIsWeekDay0_8],[dbo_dw_DIMdate].[IsYesterday] AS [dbo_dw_DIMdateIsYesterday0_9],[dbo_dw_DIMdate].[DateTime] AS [dbo_dw_DIMdateDateTime0_10],[dbo_dw_DIMdate].[DayOfWeekName_engb] AS [dbo_dw_DIMdateDayOfWeekName_engb0_11],[dbo_dw_DIMdate].[ShortDayOfWeekName_engb] AS [dbo_dw_DIMdateShortDayOfWeekName_engb0_12],[dbo_dw_DIMdate].[WeekNumberCalendar] AS [dbo_dw_DIMdateWeekNumberCalendar0_13],[dbo_dw_DIMdate].[WeekNumberFiscal] AS [dbo_dw_DIMdateWeekNumberFiscal0_14],[dbo_dw_DIMdate].[WeekCommencing] AS [dbo_dw_DIMdateWeekCommencing0_15],[dbo_dw_DIMdate].[YearFiscal] AS [dbo_dw_DIMdateYearFiscal0_16],[dbo_dw_DIMdate].[YearCalendar] AS [dbo_dw_DIMdateYearCalendar0_17],[dbo_dw_DIMdate].[IsLastCalendarWeek] AS [dbo_dw_DIMdateIsLastCalendarWeek0_18]
FROM [dbo].[dw_DIMdate] AS [dbo_dw_DIMdate]
Error Messages 1

Я не после того, как «прислал мне код», но любая помощь в понимании сообщения об ошибке и проблеме будет очень признательна.


person Chris Kemp    schedule 22.10.2011    source источник
comment
Попробуйте пересобрать куб с нуля, забудьте об инкрементном. Это старая перезагрузка компьютера ;-).   -  person ic3    schedule 22.10.2011


Ответы (1)


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

person Max    schedule 24.10.2011
comment
У нас было несколько измерений, которые выходили из строя, поэтому я выполнил полное обновление для каждого из них, после чего куб вернулся к жизни. Для тех, кто не знает, как это сделать (я был одним из них), когда вы обрабатываете куб/измерение, вы можете щелкнуть правой кнопкой мыши на параметрах процесса (вверху справа), и вы увидите параметр «Полный процесс». - person Chris Kemp; 24.10.2011