Страницы: 1
RSS
Нарастающие итоги в DAX при расчете дней кредиторской задолженности, При суммировании дней наличия кредиторской задолженности мера нарастающих итогов в DAX не срабатывает
 
Здравствуйте. Помогите пожалуйста.
Использую как первоисточник журнал проводок,  из 1С. Справочно -  я из Казахстана, наш бух.учет в т.ч план счетов отличается от РФ.
Пытаюсь выделить в кредиторской задолженности - помимо суммы, срок ее наличия (в днях). Далее буду анализировать какая из является просроченной, исходя из условий соглашений.
Использую Excel 2016г.
К сожалению файл excel с мерами превышает максимальный размер. Попыталась уменьшить, но до 300 не удалось. Загрузила на Яндекс Диск, если вдруг будет и время и желание глянуть:
https://disk.yandex.ru/d/6yYJwHYuu-61hQ
Заранее спасибо!

1. Сумма кредиторской задолженности:
=VAR LIQ=FILTER(dim_Plan;dim_Plan[Level3]="Краткосрочная кредиторская задолженность"&&'dim_Plan'[Код счета]<>"3350")
 VAR PERIOD=FILTER(ALL('dim_Календарь 1'[Период]);'dim_Календарь 1'[Период]<=MAX('dim_Календарь 1'[Период])  )
RETURN
CALCULATE(SUM(Base[Сумма]); USERELATIONSHIP(dim_Plan[Код счета];Base[Счет Кт]); LIQ; PERIOD)
-
CALCULATE(SUM(Base[Сумма]); LIQ;PERIOD)

2. Количество дней в месяце с даты образования/изменения (пока не уверена верно или нет, но вроде работает):
VAR endDate =  MAX ( 'dim_Календарь 1'[Период])
VAR Total = IF([Кредиторка]<>0;SUMX (
       SUMMARIZE (
           'Base';
           'Base'[Дата изменения КратКт];
           "days"; DIVIDE (
               SUM(Base[Сумма]);
               CALCULATE (SUM('Base'[Сумма]); ALLSELECTED ('dim_Календарь 1'[Период]) ); 1) * DATEDIFF ( 'Base'[Дата изменения КратКт]; endDate; DAY ) );[days] );
              CALCULATE(DAY(MAX('dim_Календарь 1'[Период]))))
      RETURN
  IF(Total<>0;CALCULATE(Total;FILTER(ALL('dim_Календарь 1'[Период]);'dim_Календарь 1'[Период]<=MAX('dim_Календарь 1'[Период])));DAY(endDate))

3. Вот моя проблема - не корректно работает - Нарастающий итог дней наличия кредиторской задолженности. В разрезе месяцев, есть месяцы считает правильно, есть когда ошибочно. Ниже общепринятая мера нарастающих итогов без привязки к периодам:
=IF('Base'[Кредиторка]<>0;
CALCULATE ('Base'[Дни Крат.Кт];
                                                      FILTER(ALL('dim_Календарь 1'[Период]);
                                                                                                    'dim_Календарь 1'[Период]<=MAX('dim_Календарь 1'[Период]) )   ); 0)
 
В приложенном скрине наглядно видно где нормально считает, а с какого момента нет.
Изменено: Alma88 - 14.09.2023 23:37:05
 
Цитата
Alma88 написал:
общепринятая мера нарастающих итогов
Это, конечно, громко сказано:)
Ну использовать FILTER, а не предикаты - только если вначале пути познания DAX для понимания:
=IF('Base'[Кредиторка]<>0;CALCULATE ('Base'[Дни Крат.Кт]; 'dim_Календарь 1'[Период]<=MAX('dim_Календарь 1'[Период]) ); 0)
Так же отработает (если Период - это даты).
У мер не указывайте таблицу. Мерам как бы все равно, в какой они таблице :) По тому, что это не сработало бы со столбцом, понятно, что 'Base'[Кредиторка] - это мера [Кредиторка].
Так и пишите:
=IF([Кредиторка]<>0;...

В остальном - у меня ощущение, что это сложновато для бесплатной ветки. Слишком много времени нужно будет потратить на понимание Ваших данных и того, что нужно.
У меня нет времени сейчас разбираться :) Надеюсь, кто-то найдется.
Изменено: surkenny - 15.09.2023 13:45:02
 
Цитата
написал:
Так и пишите:
Здравствуйте. Спасибо учту на будущее.
Цитата
написал:
В остальном - у меня ощущение, что это сложновато для бесплатной ветки.
Отдельное спасибо за наводку. Что то момент наличия платной ветки я упустила. Обращусь туда со своим вопросом!!
 
Цитата
написал:
У меня нет времени сейчас разбираться  Надеюсь, кто-то найдется.
Можно задавать вопрос? Ориентировочная стоимость по моему вопросу? +/-? Впервые сталкиваюсь, честно сказать затрудняюсь оценить стоимость написания конкретной меры. Чтобы заинтересовать человека который сможет помочь и время у него найдется.
Заранее благодарю!!!!
 
Вопрос не актуален. Задача решена!
Страницы: 1
Наверх