неправильный результат parallelperiod() для DATE в MDX

Я хочу извлечь данные за тот же период в прошлом году и в прошлом месяце. для этого я использую Parallelperiod(), например

PARALLELPERIOD([date].[year],1,[date].[date].[20-Sep-2014]) , 

для которого я получаю результат: 21 сентября 2014 г.

и

PARALLELPERIOD([date].[month],1,[date].[date].[20-Sep-2014]) , 

для которого я получаю вывод: 16 августа 2014 г.

Та же функция выдаст другую дату для другого месяца.

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


person sam140    schedule 26.11.2014    source источник


Ответы (1)


У вас должны быть некоторые даты, которых нет в кубе.

Функция PARALLELPERIOD говорит, что у нас 262 члена на [дата] level в 2014 году, затем она переходит к 2013 году и находит члена на [дата] level, в котором также 262 члена. Поэтому, если у вас нет полных наборов дат в вашем кубе эта функция вернет неожиданные результаты.

Поэтому решение состоит в том, чтобы убедиться, что все исторические даты представлены в кубе. Эти дополнительные даты не должны приводить к дополнительным накладным расходам, поскольку они будут создавать пустое пространство в кубе, с которым очень хорошо справляется SSAS.

person whytheq    schedule 26.11.2014
comment
Хорошо, это правильно. Но я хочу знать, идентифицирует ли parallelperiod() месяц с 30 днями, или 31 день, или февраль с 28 или 29 днями??? потому что после вашего ответа и согласно моему анализу результатов он не может это идентифицировать. Скорее, это просто возврат на 30 дней до указанной даты. Если это так, то точность данных весьма проблематична. Можете ли вы указать какое-то решение в этом случае ?? - person sam140; 27.11.2014
comment
Вам нужно добавить пустые дни в свою базу данных и в куб, тогда все должно работать так, как вы ожидаете. - person whytheq; 27.11.2014
comment
Вы хотите добавить пустые дни в таблицу фактов ?? потому что в date_dimension у меня уже есть полные данные для календаря, но на самом деле таблица, если транзакция на определенную дату не существует, то записи для этого date_sid нет. - person sam140; 28.11.2014