Страницы: 1
RSS
Ошибка при создании календаря в Power BI Desktop
 
Добрый день!

При написании кода (код взяла из интернета) в целях создания таблицы Календарь в Power BI Desktop  выскочила ошибка:

текст ошибки: операции сравнения DAX не поддерживают сравнение  значений типа integer со значениями типа True/False. Рассмотрите возможность использования функции VALUE или FORMAT для преобразования одного из значений

Скрин кода во вложении.

Что делаю не так?


Calendar =
VAR _endYear=2026//YEAR(TODAY())
VAR _startYear=_endYear-4
VAR _start=DATE(_startYear,1,1)
VAR _end = DATE(_endYear,12,31)
VAR _cal = CALENDAR(_start,_end)
VAR result = ADDCOLUMNS(_cal,
"YearNumber",YEAR([Date]),
"HalfYear", (MONTH([Date])>6)+1,
"Year-HY",YEAR([Date])&"-"&(MONTH([Date])>6)+1,
"Quarter","Q"&QUARTER([Date]),
"MonthNumber",MONTH([Date]),
"MonthName",FORMAT([Date],"MMMM"),
"Year-Month",FORMAT([Date],"YYYY-MM"),
"WeekNumber",WEEKNUM([Date],2),
"Year-Week",YEAR([Date])&"-"&FORMAT(WEEKNUM([Date],2),"00"),
"Day",DAY([Date]),
"WeekDayNumber",WEEKDAY([Date],2),
"WeekDateName",FORMAT([Date],"DDDD","RU-RU"),
"CurrentYear",INT(YEAR([Date])=YEAR(TODAY())),
"CurrentHalfYear",INT(AND(YEAR([Date])=YEAR(TODAY()),(MONTH([Date])>6)+1=(MONTH(TODAY())>6+1))),
"CurrentMonth",INT(EOMONTH([Date],0)=EOMONTH(TODAY(),0)),
"CurrentDay",IF([Date]=TODAY(),0,IF([Date]<TODAY(),-1,1)),
"ClosePeriod",INT([Date]<=TODAY()),
"DoubleDate",[Date],
"DoubleDateSort",IF([Date]<TODAY(),-INT(FORMAT([Date],"YYYYMMDD")),INT(FORMAT([Date],"YYYYMMDD"))),
"EndDayMonth",EOMONTH([Date],0)
)
RETURN
result
Изменено: Lanca_caster - 15.05.2024 14:56:48
 
приложите файл с кодом календаря, ну или самостоятельно оттестируйте созданные вычисляемые столбцы по отдельности, где ошибка.
 
Цитата
написал:
При написании кода (код взяла из интернета) в целях создания таблицы Календарь в Power BI Desktop  выскочила ошибка:
А есть же простая функция CALENDARAUTO. Почему не использовать её?
Шлюхогон42
 
Цитата
Дмитрий Никитин написал:
А есть же простая функция CALENDARAUTO. Почему не использовать её?
в приведенном коде DAX используется его аналог CALENDAR() с заданным диапазоном пользователя. Разницы нет, просто в данном примере все дополнительные столбцы создаются в одной мере и нужно уметь проверять, если что-то идет не так. Конечно начинающему пользователю лучше каждый вычисляемый столбец создавать по отдельности - так проще будет ошибки исправлять.
 
aplana, приложить вордовский файл со скрином - 5 баллов :) Пришлите хоть сам код, чтобы его не переписывать.
 
Цитата
написал:
приложите файл с кодом календаря, ну или самостоятельно оттестируйте созданные вычисляемые столбцы по отдельности, где ошибка.
попробую так, спасибо
 
Цитата
surkenny написал:
приложить вордовский файл со скрином - 5 баллов  Пришлите хоть сам код, чтобы его не переписывать.

исправила, благодарю
 
Цитата
Vladimir Ch написал:
приложите файл с кодом календаря, ну или самостоятельно оттестируйте созданные вычисляемые столбцы по отдельности, где ошибка.


ошибка

"операции сравнения DAX не поддерживают сравнение  значений типа integer со значениями типа True/False. Рассмотрите возможность использования функции VALUE или FORMAT для преобразования одного из значений"

здесь:

"CurrentHalfYear",INT(AND(YEAR([Date])=YEAR(TODAY()),(MONTH([Date])>6)+1=(MONTH(TODAY())>6+1)))
Изменено: Lanca_caster - 15.05.2024 15:57:12
 
Цитата
Lanca_caster написал:
(MONTH([Date])>6)+1=(MONTH(TODAY())>6+1))
ошибка в этом участке формулы. Из этой части формулы я не понимаю, что хотел автор получить в итоге. Если нужно видеть последние полгода от текущего месяца в текущем году, то можно так попробовать:
Код
"CurrentHalfYear",INT(YEAR([Date])=YEAR(TODAY()) && MONTH([Date]) <= MONTH(TODAY()) && MONTH([Date]) > MONTH(TODAY())-6)

или удалите этот столбец вообще.
 
Цитата
Vladimir Ch написал:
ошибка в этом участке формулы. Из этой части формулы я не понимаю, что хотел автор получить в итоге. Если нужно видеть последние полгода от текущего месяца в текущем году, то можно так попробовать:Код


Получилось. Большое спасибо!
Страницы: 1
Наверх