4-4-5 Подход календаря на основе кода Java 8 - PullRequest
0 голосов
/ 16 апреля 2020

Для моего Фискального календаря в Power BI в настоящее время я пытаюсь реализовать подход 4-4-5 .

Наш календарь работает с 4-4-5 недельными кварталами. Так как в этом году всего 364 дня, через несколько лет должно быть 53 недели. В результате у декабря 6 вместо 5 недель. К сожалению, до сих пор нет подхода, основанного на DAX. Однако в другом посте я обнаружил код JAVA, который, вероятно, определяет, имеет ли год 53 недели или нет: вычисляет количество недель в данном году

    private static long getNumberOfWeeksInYear(LocalDate date) {
    LocalDate middleOfYear = date.withDayOfMonth(1).withMonth(6);
    return middleOfYear.range(WeekFields.ISO.weekOfWeekBasedYear()).getMaximum();
}

public static void main(String[] args) {
    for (int year = 2000; year < 2400; year++) {
        long numberOfWeeks = getNumberOfWeeksInYear(LocalDate.of(year, 1, 1));
        if (numberOfWeeks != 52) {
            System.out.println(year + " has " + numberOfWeeks + " weeks");
        }
    }
}

Кто-нибудь из вас знает, как перевести код на Dax?

Наш финансовый календарь начинается не на основе григорианского календаря. Этот год начинается 30.12.19 и заканчивается 03.01.21. В этом году 53 недели.

1 Ответ

1 голос
/ 16 апреля 2020

Я не могу помочь с PowerPivot и DAX. Но я могу рассказать вам, как получить эту информацию, используя Excel формулы.

Учитывая год в A2, вы можете рассчитать понедельник первой ISO календарной недели в этом году, используя следующую формулу:

=DATE($A2,1,1)-WEEKDAY(DATE($A2,1,1),3)+(ISOWEEKNUM(DATE($A2,1,1)-WEEKDAY(DATE($A2,1,1),3))<>1)*7

Вы можете рассчитать воскресенье последней ISO календарной недели в этом году, используя следующую формулу:

=DATE($A2+1,1,1)-WEEKDAY(DATE($A2+1,1,1),3)+(ISOWEEKNUM(DATE($A2+1,1,1)-WEEKDAY(DATE($A2+1,1,1),3))<>1)*7-1

С учетом воскресенья последней ISO календарной недели, помещенной в C2, следующая формула вычисляет количество ISO недель этого года:

=ISOWEEKNUM($C2)

Пример:

enter image description here

Как видите, годы начинаются с A2 и ниже. Формула для расчета понедельника первой ISO календарной недели помещается в B2 вниз. Формула для расчета воскресенья последней ISO календарной недели находится в C2 вниз. И формула для расчета количества ISO недель этого года находится в D2 вниз.

...