powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / PowerBI. Подсчет остатков на начало периода
6 сообщений из 6, страница 1 из 1
PowerBI. Подсчет остатков на начало периода
    #40130991
yagrus3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hello world!
Из SQL загружается таблица с остатками рассчитанными на каждый день, на конец дня.
В powerBI нет готовой функции агрегирования LAST NO EMPTY, как в многомерной модели SSAS.
Для этого использую DAX формулу:
Код: sql
1.
2.
3.
4.
5.
6.
7.
Остаток, шт = CALCULATE (

    SUM ( 'Запасы на складах'[Остаток, шт._] ),

    LASTNONBLANK ( 'Запасы на складах'[Date_Key],  SUM ('Запасы на складах'[Остаток, шт._] )  )

)


Но теперь мне нужно создать меру, которая рассчитывает остаток на начало периода.
Например, период ноябрь 2021 года.
Остаток на конец периода - это остаток на 30.11.2011
Остаток на начало периода - это остаток на 31.10.2011

В загружаемой таблице добавил столбец DatePrev_Key.
DatePrev_Key = Date_Key - 1 день

Далее создал меру, которая использует новую дату DatePrev_Key
Код: sql
1.
2.
3.
4.
Остаток начало, шт = CALCULATE (
    SUM ( 'Запасы на складах'[Остаток, шт._]),
    FIRSTNONBLANK ('Запасы на складах'[DatePrev_Key],  SUM ('Запасы на складах'[Остаток, шт._]) ) 
)


Также создал тестовую меру, чтобы видеть что возвращает FIRSTNONBLANK
Код: sql
1.
Measure = FIRSTNONBLANK ('Запасы на складах'[DatePrev_Key],  SUM ('Запасы на складах'[Остаток, шт._]) )



Но желаемый результат не получается.
Подскажите, как решается такая задача в PowerBI?
...
Рейтинг: 0 / 0
PowerBI. Подсчет остатков на начало периода
    #40131520
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yagrus3,

остаток на начало - это остаток на конец предыдущего периода,
если вы предыдущий период считаете нормально и остаток на конец периода тоже, то у вас все должно получиться
...
Рейтинг: 0 / 0
PowerBI. Подсчет остатков на начало периода
    #40131797
yagrus3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик
yagrus3,

остаток на начало - это остаток на конец предыдущего периода,
если вы предыдущий период считаете нормально и остаток на конец периода тоже, то у вас все должно получиться


Так-то оно так.
Но, предыдущий период я расчитываю правильно. Это видно из скрина.
Мера "Measure" - это расчетный предыдущий период.
Для 15.01.2022, Measure = 14.01.2022. Контекст, должен бы сместиться на 14 января.
Но этого не происходит.
Вот и вопрос, почему так.
Я скармливаю CALCULATE, 14.01.2022, а он по нему находит 15.01.2022 и ведет расчет по нему.
...
Рейтинг: 0 / 0
PowerBI. Подсчет остатков на начало периода
    #40132081
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yagrus3,

вообще, конечно, без того, чтобы поизучать вашу схему, не удобно. А макет вы не сделали.
Накидал макетик, чтобы было что обсуждать. Прилагаю. Надеюсь, что правильно понял идею.
Даты разбил на три периода. Каждая дата в своем периоде.


LastNonBlank не использовал.
А вообще вашу measure "Остаток, шт" можно успростить. Вам же в конечном итоге нужен Остаток, для этого логичней сразу использовать LASTNONBLANKVALUE, а не LASTNONBLANK

Насчет того, почему у вас нет желаемого сдвига.
Да, DatePrev_Key вы создали. Но вам тогда чтобы по нему считать, нужно предварительно создать в модели relationship между Дата[Date_Key] и 'Запасы на складах'[DatePrev_Key]. А в калькуляциях активировать эту связь с помощью USERELATIONSHIP, причем столько раз, сколько нужно.

В общем, не имея вашего макета, сделал свой.
Я так понял, у вас там очень много данных. Поэтому я бы все, что можно рассчитать заранее, прекалькулировал бы.
...
Рейтинг: 0 / 0
PowerBI. Подсчет остатков на начало периода
    #40132202
yagrus3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вакшуль Сергей
yagrus3,

В общем, не имея вашего макета, сделал свой.
Я так понял, у вас там очень много данных. Поэтому я бы все, что можно рассчитать заранее, прекалькулировал бы.

Спасибо за предложенный вариант!

В вашей формуле используется переменная datesWithStock.
Есть ли в десктопе какой-то вотчь, чтоб посмотреть значение переменных?
...
Рейтинг: 0 / 0
PowerBI. Подсчет остатков на начало периода
    #40132304
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yagrus3,

Буквально пару месяцев назад был анонс новой версии Tabular Editor 3. Одна из фич которой - DAX debugger.
Вот ее презентация миру от автора:
https ://youtu.be/mPPvTHYCmtw?t=2277
(удалите пробел после https)

Tabular Editor 3 - платная. Tabular Editor 2 - бесплатная.

В переменной datesWithStock - таблица
Чтобы посмотреть на нее, просто создайте calculated table, вырезав из кода нужный кусок:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Table = 
    // VAR currentPeriod = MAX(Dates[Period])
    VAR currentPeriod = 3           // В примере 3 периода. Установите currentPeriod в 1 или 2 или 3 и посмотрите на результат
    VAR datesWithStock = 
        FILTER(
            ADDCOLUMNS(
                CALCULATETABLE(
                    VALUES(Dates[Date]),
                    REMOVEFILTERS(Dates),
                    Dates[Period] = currentPeriod
                ),
                "@stock", [Stock]
            ),
            NOT(ISBLANK([@stock]))
        )
return
    datesWithStock



я обычно использую DAX Studio для эксперементов.
(но отладки там нет)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / PowerBI. Подсчет остатков на начало периода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (3): Анонимы (2), Bing Bot 1 мин.
Пользователи онлайн (10): Анонимы (8), Yandex Bot, Bing Bot
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]