Доброго времени суток. Пересмотрел кучу тем на форуме и в интернете, но так и не могу сделать меру, которая была бы аналогична столбцу с накоплением. Чтобы было понятно, что хочу получить, прикладываю файл. В сводной таблице два поля значений "Приток прогноз" и "мера1". Нужно, чтобы мера1 считалась точно также как Приток прогноз. Стандартный механизм с дополнительным вычислением не подходит, так как для меры1 нужно будет потом делать доп. вычисление - отличие.
Доброе время суток. Всё дело в разности трактовок какие измерения дат по tstamp_inc существуют. Стандартный движок сводных использует что-то своё, а power pivot ведёт себя так, как это есть в структуре данных. Если Максим Зеленский заглянет в теме, то возможно и объяснит, что к чему. Некоторое костыльное приближение да втором суррогатном календаре.
Андрей VG, спасибо. Очень помогли. Решение не костыльное, а в самую точку. На самом деле, я и планировал сделать отдельную таблицу для временных меток (tstamp), так как они будут в двух таблицах. Просто не дошел до этого и решил опробовать на одной. Однако, удивлен, что это работает только так.
На сводную действует фильтр по столбцу dds_inc_dynamic <>0. Соответственно все строки в которых в этом столбце 0, заранее исключаются из рассмотрения. поэтому при фильтре "процент по депозиту" (item_id = 69) вообще нет строк, соответствующих какой-либо дате tstamp_inc, кроме 10.03. Поэтому и
не возвращает ничего (что легко проверить, создав меру countrows(filter....) ). этого можно было бы избежать, переписав меру так:
Код
мера1 :=
CALCULATE (
CALCULATE (
SUM ( income[dds_inc_dynamic] );
FILTER (
ALL ( income[tstamp_inc] );
income[tstamp_inc] <= MAX ( income[tstamp_inc] )
)
);
ALL ( income[dds_inc_dynamic] )
)
Но это не подойдет, если вам действительно нужен фильтр по dds_inc_dynamic (а не только убрать 0). Чтобы убрать 0 нужно в этом столбце от них избавиться заменив 0 на BLANK (чтобы не выводить 0 там, где ничего нет). Это стоит сделать в любом случае.
Другая беда - дело в том, что по "вклад в уставной капитал" (item_id = 1) вообще нет ни одной строки в таблице income, которая соответствовала бы tstamp_inc=10.03.2020 Поэтому опять же FILTER возвращает тут пустую таблицу и мера не считается. Иными словами, для tstamp_inc=10.03.2020 формула MAX(income[tstamp_inc]) здесь будет пусто, соответственно FILTER пустой.
Поэтому правильное решение - как написал Андрей VG, сделать отдельный календарик для tstamp_inc, и использовать в заголовках столбцов сводной его, переписав соответственно меру. В таком случае не сработает AUTOEXIST (принцип, запрещающий выводить данные для несуществующих сочетаний, когда мы рассматриваем столбцы из одной таблицы, такие как dds_inc_dynamic и tstamp_inc).
Почему срабатывает встроенная мера с накоплением - там не DAX, там MDX, и другой способ построения расчетов.
Максим Зеленский, благодарю за детальное разъяснение. Теперь вроде дошло. Думаю такие тонкости будут многим интересны. Создав календарь timestamp, связанный с таблицей income (timestamp[tstamp] = income[tstapm_inc]) и поправив меру1, получил именно то, что хотел.