У меня есть измерение даты и таблица фактов. У меня есть две меры:
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]: обнаружено недопустимое числовое представление значения даты.
Вещи, которые я пробовал (не все имеют смысл):
- изменены значения SID на положительные целые числа
- изменил значение даты в dimdate на 9999-12-31 вместо 1900-01-01, когда я увидел, что даты DAX могут начинаться с 1900-03-01
- Сначала добавьте другие измерения к сводной таблице, чтобы увидеть, правильно ли вычисляется формула.
Я новичок в DAX и не знаю, как решить эту проблему. Любая помощь приветствуется!