Страницы: 1
RSS
Нарастающие итоги в DAX при расчете дней кредиторской задолженности, суммирование дней наличия кредиторской задолженности мера нарастающих итогов в DAX не срабатывает
 
Здравствуйте. Помогите пожалуйста.
Пытаюсь выделить в кредиторской задолженности поставщиков - помимо суммы, срок ее наличия (в днях), в том числе с нарастающим итогом.
В дальнейшем буду анализировать какая из является просроченной, исходя из условий соглашений.
Т.е. в данном случае мне НЕ нужен расчет средневзвешанного срока всего Кт, данную меру уже реализовала (в примере ее нет). Меня интересует именно в разрезе поставщиков дни имеющейся Кт, учитывая взаиморасчеты в периоде. Собственно поэтому разбила себе задачу на 3 меры:
1.Сумма Кт на конец задаваемого периода - мера написана, работает.
2. Расчет дней Кт - мера написана, работает. Но 100% уверенности у меня пока в ней нет, протестирую еще.
3.Нарастающий итог Кт в днях - мера не работает, сомневаюсь в ее правильности.
Использую как первоисточник журнал проводок,  сформирован в 1С Бухгалтерия Казахстан. Справочно -  я из Казахстана, наш бух.учет в т.ч план счетов отличается от РФ. Но стоит отметить -  решение моей проблемы на мой взгляд напрямую не зависит от бух.учета. Сумма кредиторской задолженности определена (ниже мера для справки приведена - №1). Кол-во дней так же рассчитано (ниже мера №2).

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)


Использую Excel 2016г.

К сожалению файл excel с мерами превышает максимальный размер. Попыталась уменьшить, но до 300 не удалось. Загрузила на Яндекс Диск:
https://disk.yandex.ru/d/6yYJwHYuu-61hQ

Перехожу к вопросу оплаты, пока не могу самостоятельно оценить стоимость, в моем понимании необходимо правильно написать меру. НО объективно оценить трудозатраты и время мне сложно.
Пока предлагаю 500р. Но с Исполнителем готова обсудить, возможно мои первые 2 меры так же требуют корректировок.
Вопрос по способу оплаты, возможно ли отправлять на карту с Казахстана? Со своей стороны тоже поспрашиваю есть ли с этим какие либо сложности.
Что касается сроков, то было бы прекрасно если получилось дать решение до 20.09.2023г. Чем раньше тем лучше)))
Заранее спасибо!
Изменено: Alma88 - 15.09.2023 20:08:36
 
Alma88, так как никто не откликается, напишу:
1. Если кто-то хочет взять заказ - берите! Не занимаю :)
2. Сейчас очень плотно со временем. Если не горит и возможно реализовать на следующей неделе, то смогу взяться.
 
Цитата
написал:
Если кто-то хочет взять заказ - берите! Не занимаю
Здравствуйте. Вы первый откликнулись.  :)  Если Вопросов по стоимости нет, поспрашивала у себя тут по отправке денег с карты на карту с Казахстана в РФ вроде тоже не должно возникнуть проблем. Я 100% за, готова подождать Вас.
Я тут проанализировала, есть еще предположение что не корректно считает по причине того, что внутри месяца на сумму задолженности (она же "Кредиторка") влияет тот факт, что контрагент - это импортер, задолженность в валюте - CNY. Что приводит к курсовой разнице (это уже больше финансовая часть), которая как мне кажется влияет на меру "Количество дней в месяце".
В общем все так запутанно)))
 
Alma88, мой косяк - я невнимательно прочитал Ваше сообщение в этой теме, так как читал тему в бесплатной ветке.
Цитата
Alma88 написал:
Пока предлагаю 500р.
- на мой взгляд очень маленький бюджет, Вам очень сложно будет найти исполнителя - по моим еще "старым" расценкам это не более 20 мин. В любом случае еще будет связь с Вами + вопросы от Вас и тп, поэтому, к примеру, я вообще не беру заказы с оплатой менее оплаты 1ч (за редкими исключениями, когда сразу понятно ТЗ и очень просто выполнить задание).
Чтобы полноценно понять Ваши данные мне будет нужно будет не менее часа. Без этого очень сложно (по-моему, почти невозможно) написать корректные меры и решить Вашу задачу.
Плюс нужно все-таки написать корректные меры.
Итого я бы ориентировался на бюджет от 3000 руб. Тогда, вероятно, Вы найдете исполнителей.
* Сумма указана с учетом стоимости моего времени и может отличаться (даже значительно) от стоимости остальных исполнителей.

P.S. Возможно, модераторы будут ругаться (прошу этого не делать, так как исполнителей пока не нашлось :) ), но дам Вам советы:
п.2 точно будет Вам полезен, и, возможно, из-за него неверный расчет (я не углублялся в Ваши данные)
1. Купите книги Феррари/Руссо по DAX.
2. НИКОГДА (пока Вы не изучили DAX и не понимаете, как это работает) не вычисляйте значение нового столбца в функции SUMMARIZE. Используйте связку ADDCOLUMNS ( SUMMARIZE (), "culumn_name", CALCAULATE () ).
Изменено: surkenny - 20.09.2023 11:35:06
 
surkenny, огромнейшее спасибо что откликнулись!! Не пожалели времени написать кучу полезных советов и рекомендаций.
Мне удалось самой написать меры. В общем я условно говоря разбила свою проблему на этапы и переписала меры и все заработало.
Небольшой алгоритм, если можно в данной ветке подобное писать:
1. Внесла корректировку посредством PowerQuery в первоисточник.
2. Отдельно создала меру даты возникновения, отдельно даты оплаты с учетом нюансов своих, отдельно разницу между ними.
Последовала совету и не использовала SUMMARIZE. Действительно мне сложновато пока ее понять.

Возможно для Специалистов покажется слишком примитивно, но так как я только учусь ОЧЕНЬ РАДА что все работает!!! :D
Слегка шокирована сама собой :oops:

Спасибо за качественный и полезный форум!!!!!
 
Рад, что все получилось!
Цитата
Alma88 написал:
Последовала совету и не использовала SUMMARIZE
Мой совет был совсем другим :)
Функция SUMMARIZE нужная и полезная. Только не нужно внутри этой функции вычисляемые столбцы создавать. А добавлять их потом с помощью ADDCOLUMNS:
Код
ADDCOLUMNS (
   SUMMARIZE (
      data,
      data[column_1],
      data[column_2]
   ),
   "value sum", CALCULATE ( SUM ( data[value] ) )
)
Страницы: 1
Наверх