Страницы: 1
RSS
Фильтрация строк и столбцов в Power Query по условиям из таблиц на листе Excel
 
Добрый день!

Подскажите, пожалуйста, каким образом можно передать условия из таблиц на листе Excel в Power Query (далее PQ) для:
1. Фильтрация строк;
2. Фильтрация столбцов по названию.

Ключевая идея в том, чтобы передать отчёт другому человеку (далее пользователь) который не знаком с PQ и которой смог бы вносить условия без входа в интерфейс PQ, тем самым обновляя отчёт который формируется через Power Pivot.

Структура отчёта такова, что данные берутся из нескольких источников:
1. Куб с данными;
2. Еженедельно обновляемый файл который готовит смежное подразделение.

PQ незаметно для пользователя подключается к кубу, разворачивает необходимые поля и взяв условия из таблицы 1 фильтрует их для последующего использования данных в Power Pivot.

Также PQ подключается ко второму источнику, который еженедельно обновляют в локальной папке, и использует только те  столбцы которые пользователь укажет в таблице 2.

Пример во вложении.

Не исключаю, что в данном случае, нужно менять логику, способ и/или подход к решению задачи - прошу вашего совета и помощи!
Буду признателен за любую информацию.
 
Я использую несколько подходов в зависимости от задач:
Разнообразные запросы к базам данным в том числе к OLAP и табличным моделям - на скрытом от пользователя листе располагается текст запроса, который меняется в зависимости от параметров, которые задаёт пользователь на листе с отчетом, как правило период дат и разные фильтры. Можно и прямо в тексте запроса формировать текст mdx запроса например используя параметры, но с моей точки зрения, на листе проще вносить изменения, если нужно что-то добавить или убрать в выгрузке.
Второй момент, когда данные подгружены уже в Power query и их нужно ещё какие-нибудь фи обрабатывать в зависимости от параметров, например, группировка по периодам с разным количеством дней.
И в том и в другом случае ключевой функцией будет Excel.CurrentWorkbook().
Здесь на форуме было уже несколько тем похожих, можно еще посмотреть Относительный путь к файлу

Пс Файл не смотрел, т.к. с телефона
Изменено: StepanWolkoff - 21.09.2018 20:59:14
 
Доброе время суток
Цитата
vorev написал:
1. Куб с данными;
Код
Table.Join(Таблица1, {"Год", "Месяц", "Клиент"}, Таблица4, {"Год", "Месяц", "Клиент"})

Цитата
vorev написал:
2. Еженедельно обновляемый файл который готовит смежное подразделение.
Код
Table.SelectColumns(Таблица2, Таблица3[Фильтр])

Присоединюсь к ответу Степана, для серверных данных, таких как в вашем случае OLAP, лучше выполнять запрос на серверной стороне. Причина, в приведённом мной решении вся обработка будет на стороне клиента. Пусть на сервере 100 миллионов строк, а вам нужно в Power Pivot загрузить всего 1 миллион. Тогда зачем грузить на клиент, на ваш ПК, эти самые 100 миллионов, загружая сеть и тратя ресурсы вашего ПК, чтобы отобрать 1 миллион?
Для второго случая, надеюсь, что всё же вы потом выполняете развёртывание - unpivot по столбцам недель, а не грузите данные в таком виде? Если грузите, то это не лучший подход. Ваши вычисления, что в мерах, что в вычисляемых столбцах вполне возможно придётся переписывать.
Страницы: 1
Наверх