Нарастающие итоги в 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, так как никто не откликается, напишу: 1. Если кто-то хочет взять заказ - берите! Не занимаю 2. Сейчас очень плотно со временем. Если не горит и возможно реализовать на следующей неделе, то смогу взяться.
написал: Если кто-то хочет взять заказ - берите! Не занимаю
Здравствуйте. Вы первый откликнулись. Если Вопросов по стоимости нет, поспрашивала у себя тут по отправке денег с карты на карту с Казахстана в РФ вроде тоже не должно возникнуть проблем. Я 100% за, готова подождать Вас. Я тут проанализировала, есть еще предположение что не корректно считает по причине того, что внутри месяца на сумму задолженности (она же "Кредиторка") влияет тот факт, что контрагент - это импортер, задолженность в валюте - CNY. Что приводит к курсовой разнице (это уже больше финансовая часть), которая как мне кажется влияет на меру "Количество дней в месяце". В общем все так запутанно)))
- на мой взгляд очень маленький бюджет, Вам очень сложно будет найти исполнителя - по моим еще "старым" расценкам это не более 20 мин. В любом случае еще будет связь с Вами + вопросы от Вас и тп, поэтому, к примеру, я вообще не беру заказы с оплатой менее оплаты 1ч (за редкими исключениями, когда сразу понятно ТЗ и очень просто выполнить задание). Чтобы полноценно понять Ваши данные мне будет нужно будет не менее часа. Без этого очень сложно (по-моему, почти невозможно) написать корректные меры и решить Вашу задачу. Плюс нужно все-таки написать корректные меры. Итого я бы ориентировался на бюджет от 3000 руб. Тогда, вероятно, Вы найдете исполнителей. * Сумма указана с учетом стоимости моего времени и может отличаться (даже значительно) от стоимости остальных исполнителей.
P.S. Возможно, модераторы будут ругаться (прошу этого не делать, так как исполнителей пока не нашлось ), но дам Вам советы: п.2 точно будет Вам полезен, и, возможно, из-за него неверный расчет (я не углублялся в Ваши данные) 1. Купите книги Феррари/Руссо по DAX. 2. НИКОГДА (пока Вы не изучили DAX и не понимаете, как это работает) не вычисляйте значение нового столбца в функции SUMMARIZE. Используйте связку ADDCOLUMNS ( SUMMARIZE (), "culumn_name", CALCAULATE () ).
surkenny, огромнейшее спасибо что откликнулись!! Не пожалели времени написать кучу полезных советов и рекомендаций. Мне удалось самой написать меры. В общем я условно говоря разбила свою проблему на этапы и переписала меры и все заработало. Небольшой алгоритм, если можно в данной ветке подобное писать: 1. Внесла корректировку посредством PowerQuery в первоисточник. 2. Отдельно создала меру даты возникновения, отдельно даты оплаты с учетом нюансов своих, отдельно разницу между ними. Последовала совету и не использовала SUMMARIZE. Действительно мне сложновато пока ее понять.
Возможно для Специалистов покажется слишком примитивно, но так как я только учусь ОЧЕНЬ РАДА что все работает!!! Слегка шокирована сама собой
Alma88 написал: Последовала совету и не использовала SUMMARIZE
Мой совет был совсем другим Функция SUMMARIZE нужная и полезная. Только не нужно внутри этой функции вычисляемые столбцы создавать. А добавлять их потом с помощью ADDCOLUMNS: