SSAS 2012 DAX SamePeriodLastYear() с измерением даты

У меня есть измерение даты и таблица фактов. У меня есть две меры:

WorkOrdersCount:=
  count(
    FactWorkOrderLifeCycle[Clientsid]
  )

и

WorkOrdersLastYearCount:=
  CALCULATE(
    count(FactWorkOrderLifeCycle[Clientsid]),
    SAMEPERIODLASTYEAR(DimDate[FullDate])
  )

WorkOrdersCount прост и отлично работает. Я думал, что WorkOrdersLastYearCount тоже будет простым, но теперь я понимаю, что не понимаю SAMEPERIODLASTYEAR().

В моем измерении даты есть столбец DateSID, содержащий целочисленное представление даты в виде ГГГГММДД. Он имеет две строки ведения записей с идентификаторами безопасности -1 и -2 для неизвестных дат и дат, подлежащих уточнению. В этом решении я использую только строку -1. Данные хранятся в таблице SQL Server, а столбец FullDate имеет тип «дата». Фактическое значение 1900-01-01.

В моем факте, FactWorkOrderLifecycle, есть поле InvoicedDateSID, которое может иметь нулевое значение, которое я заменяю на -1.

Никаких ошибок в Visual Studio или при обработке olap не возникает, но при ссылке на столбец в сводной таблице я получаю следующую ошибку:

ОШИБКА – ВЫЧИСЛЕНИЕ ПРЕВРАЩЕНО: ошибка расчета в показателе "FactWorkOrderLifeCycle" [WorkOrdersLastYearCount]: обнаружено недопустимое числовое представление значения даты.

Вещи, которые я пробовал (не все имеют смысл):

  1. изменены значения SID на положительные целые числа
  2. изменил значение даты в dimdate на 9999-12-31 вместо 1900-01-01, когда я увидел, что даты DAX могут начинаться с 1900-03-01
  3. Сначала добавьте другие измерения к сводной таблице, чтобы увидеть, правильно ли вычисляется формула.

Я новичок в DAX и не знаю, как решить эту проблему. Любая помощь приветствуется!


person Stephen Lloyd    schedule 12.05.2015    source источник
comment
Похоже, у вас есть другие значения в столбце FullDate, такие как 1, 2, TBD или Unknown. SAMEPERIODLASTYEAR пытается разрешить значения, соответствующие типу DATE. Похоже, что у вас есть значение в вашей таблице DimDate не в формате, который он может разрешить.   -  person dotNetE    schedule 12.05.2015
comment
поэтому я изменил даты, чтобы использовать 2050-12-31 вместо 9999-12-31 или 1900-01-01, и все заработало, когда я использую параметр «Анализ в Excel». Это работает на нашем сервере разработки и, опять же, работает. Но когда я развертываю dev, я все равно получаю ту же ошибку. Сейчас я думаю по разным причинам, поэтому я, вероятно, открою еще один вопрос.   -  person Stephen Lloyd    schedule 12.05.2015
comment
Да, я думаю, что 9999-12-31 и 1900-01-01 вне допустимого диапазона.   -  person dotNetE    schedule 12.05.2015


Ответы (1)


Убедитесь, что таблица календаря действительно использует тип данных Date. Удалите любой компонент времени ваших дат. Убедитесь, что в таблице календаря нет пробелов и дубликатов. Убедитесь, что вы используете поля из таблицы календаря в сводной таблице, а НЕ поля, связанные с датой, из таблицы данных.

person Amine    schedule 28.05.2021