При создании источников данных выбираем "Создание таблицы", после чего она автоматически добавляются в WorkBook и в PowerPivot как источник данных
Плюс этого решения в том, что при необходимости изменить строку подключения, открываем файл источника данных (расположение смотри в WorkBook Данные - Существующие подключения) и изменяем в текстовом редакторе. После чего данные сразу можно обновить как в WorkBook, так и в PowerPivot
Справочник "Календарь" был добавлен вручную и также вручную был добавлен в PP как источник данных
В PowerPivot добавили связи "ДатаСоздания" - "Datekey" и "ДатаЗакрытия" - "Datekey"
Все зависимые от фильтра дат формулы переделали по следующему шаблону:
2. Сравнение дат необходимо выполнять через DATAVALUE, т.к. дата содержит часы и минуты
Конечная формула выглядит так: CALCULATE(COUNTROWS(['Кредиты']);FILTER(ALL('Кредиты');DATEVALUE('Кредиты'[ДатаЗакрытия])>=DATEVALUE(MIN('Кредиты'[ДатаСоздания]))&&DATEVALUE('Кредиты'[ДатаЗакрытия])<=DATEVALUE(MAX('Кредиты'[ДатаСоздания]))))
Но она содержит потенциальную ошибку: если применять фильтр не по диапазонам "от до", а по конкретным датам, например, 06 и 08,без 07.10.2015, то из-за MIN и MAX 07 тоже будет учитываться, что не верно. Поэтому в данном случае вариант с использованием справочника дат будет более предпочтительным.
Но появился другой вопрос: при использовании в формуле ALL() мы не можем отфильтровать по любому другому полю. Так же не можем вывести значения в разрезе любого аналитического признака, например, "Оператора".
Пример: во вложении. В этом файле вы увидите:
пример таблицы данных
ожидаемый результат
фактический результат
Вопрос: как добиться ожидаемого результата? Мы догадываемся, что это из-за использования функции ALL(Table), которая заставляет игнорировать все фильтры. Но при использовании функции ALL('Table'[Дата Создания]), т.е. чисто по колонке, получаем ошибку.
Примечание: что бы открыть файл переименуйте расширение в 7z и разархивируйте его.
В PowerPivot есть таблица, сформированная из списка SharePoint:
ИД
Имя
Дата создания
Дата закрытия
Вес
1
Заявка 1
04.10.2015
05.10.2015
1
2
Заявка 2
05.10.2015
06.10.2015
3
3
Заявка 3
06.10.2015
07.10.2015
4
4
Заявка 4
07.10.2015
08.10.2015
3
5
Заявка 5
08.10.2015
09.10.2015
2
В WorkBook настроен фильтр по "Дате создания", к примеру, он задан с 05.10 по 07.10. Мы хотим получить количество заявок, "Дата закрытия" которых попадает в установленный диапазон (05.10 <= Дата закрытия >= 07.10).
Но при текущем фильтре Заявка ID=1 отсеется, и мы получим только Заявку 2 и 3.
Вопрос в том, как нам получить ещё и Заявку 1?
Пробовали такие варианты: Если в PowerPivot применить формулу: CALCULATE(COUNT([Идентефикатор]);FILTER('Кредиты';'Кредиты'[ДатаЗакрытия]>=MIN('Кредиты'[ДатаСоздания])&&'Кредиты'[ДатаЗакрытия]<=MAX('Кредиты'[ДатаСоздания]))) То, формула возвращает только заявки с "Датой создания" за отфильтрованный период.
Если в этой формуле использовать ALL() (она передаёт всю таблицу без ранее установленных фильтров): CALCULATE(COUNT([Идентефикатор]);FILTER(ALL('Кредиты')…, То, в этом случае данные берутся без фильтров вообще, т.е. мы получаем весь набор данных.