Страницы: 1
RSS
DAX период дат от 21ого числа месяца до 20 ого числа последующего месяца вне зависимости от года и месяца, Выражение для фильтрации периода дат, где первая дата периода 21е число месяца, а окончание 20е число следующего месяца
 
Здравствуйте!
Прошу помощи в написании выражения для фильтрации периода дат, где первая дата 21е число месяца, а окончание 20е число следующего месяца вне зависимости от года и месяца по столбцу 'Календарь'[Date]
Изменено: Павел Иванов - 03.04.2024 21:50:02
Да здравствует то, благодаря чему мы, несмотря ни на что!
 
Павел Иванов, доброго времени суток!Если я правильно понял вопрос,  то решение вижу следующее,

в  таблице календаря создается вычисляемый столбец по алгоритму:

Если дата больше или равно 21, то номер текущего месяца,

Если дата меньше 21 , то текущий месяц минус 1,
Если результат этих расчетов равен 0, то 12.
 
Lari, Благодарю Вас за ответ, но нужна мера. Просто не понимаю как правильно записать число месяца без привязки к конкретной даты, так, чтобы эти периоды переходили из месяца в месяц.
Да здравствует то, благодаря чему мы, несмотря ни на что!
 
Павел И., Если есть жуткая необходимость в мере, то можно сделать аналогично, как написал Lari, по типу в пределах года будет доходить до 12, и так далее чередовать:
Код
=IF (DAY ( 'table'[Дата] ) >= 21;MONTH ( 'table'[Дата] );IF (MONTH ( 'table'[Дата] ) = 1;12;MONTH ( 'table'[Дата] ) - 1))
 
Павел И., добрый день. Вы бы приложили пример того, что есть, и того, что хотели бы получить, чтоб мы не гадали все вместе, что Вы подразумеваете под выражением:
Цитата
написал:
выражения для фильтрации периода дат
Так как если Вы дальше хотите фильтровать по этим значениям сводную, тогда как и советовал Вам  Lari, нужно создавать вычисляемый столбец. Если же Вам нужно получить значение меры за период между 21 числом текущего месяца и 20 числом следующего, то можно так сделать:
Код
=
var CurDate = MAX('ТаблКалендарь'[Дата])
var StartDate = DATE(YEAR(CurDate);MONTH(CurDate);21)
var EndDate =  DATE(YEAR(CurDate);MONTH(CurDate)+1;20)
var DateInPeriod = DATESBETWEEN('ТаблКалендарь'[Дата];StartDate;EndDate)
var Result = CALCULATE([Ваша Мера];DateInPeriod)
return Result
Изменено: Alex - 04.04.2024 08:55:59
 
Благодарю Всех за помощь и подсказку! Спасибо!
Да здравствует то, благодаря чему мы, несмотря ни на что!
 
Файл с изображением дат 12ого периода по срезу К двенадцатому периуду добавляется январь месяц с 1ого по 20е число и уже далее идёт с 21 декабрь по 20 января следующего года. Можно исправить данный момент? Всё остальное работает правильно
Да здравствует то, благодаря чему мы, несмотря ни на что!
 
Павел И.,
В данном виде будет 1 месяц начинаться с 0, только следует учитывать, что если вы добавите еще один год, то он также начнется с 0

Код
=IF(
    OR(
        AND(MONTH('table'[Дата])=1; DAY('table'[Дата])>=21);
        AND(MONTH('table'[Дата])=2; DAY('table'[Дата])<=20)
    );
    1;
    IF(
        DAY('table'[Дата])>=21; 
        MONTH('table'[Дата]); 
        MONTH('table'[Дата])-1
    )
)
Изменено: zerocode - 05.04.2024 02:54:50
 
Благодарю за помощь!
Да здравствует то, благодаря чему мы, несмотря ни на что!
Страницы: 1
Наверх