Небольшие полезные данные — ограничьте объем получаемых данных
Одним из наиболее важных шаблонов для корпоративных приложений с данными является ограничение размера данных, которые вы извлекаете в Power Apps. Если полезная нагрузка данных невелика, почти все остальное становится проще. Элементы управления «Галерея» и «Таблица» делают это автоматически при прямом подключении к источнику данных в свойстве Items. Например, при прямом подключении к удаленному источнику данных галерея управляет страницами данных небольшими порциями, например, по 100 записей. Это значение по умолчанию учитывает тот факт, что конечному пользователю редко требуется более сотни записей для выполнения пользовательской задачи.
Использование делегирования
Один из ключевых способов сохранить небольшие объемы полезных данных — положиться на то, что источник данных выполнит всю работу за вас до того, как достигнет Power Apps. Делегирование — это когда Power Fx может преобразовать выражение Power Fx в выражение запроса, которое источник данных, например Dataverse, SQL Server, SharePoint и Excel, может обработать самостоятельно. И когда Power Fx делегирует этот запрос или возлагает ответственность за выполнение запроса, комбинирования данных, на источник данных. Источник данных создает правильные данные и возвращает их в Power Apps.
Когда источник данных привязан непосредственно к галерее или таблице, данные выгружаются или возвращаются обратно в Power Apps небольшими эффективными приращениями по 100 записей. Разные источники данных имеют разные возможности. Dataverse, например, имеет гораздо больше возможностей по фильтрации данных на сервере, чем Excel. Хорошим примером являются CountRows и CountIf. Dataverse поддерживает CountRows ограниченным образом. Dataverse периодически вычисляет размер таблицы и сохраняет это значение. Когда вызывается CountRows, вам предоставляется это значение. Таким образом, не нужно выполнять полное сканирование таблицы, чтобы получить точное число для каждого вызова CountRows. Но Dataverse также поддерживает точный подсчет с помощью CountIf до 50 000 строк. Он предоставляет эти две разные возможности, чтобы помочь сохранить хорошую производительность сервера Dataverse. Напротив, SharePoint не поддерживает эту функцию. Таким образом, выражение Power Fx с CountRows или CountIf для SharePoint не делегируется. Вместо этого Power Apps загружается ограниченное количество строк: 500–2000. Power Fx работает с 500/2000 записей локально и возвращает результат. Если ваши данные всегда меньше 500/2000 записей, этот подход может сработать. Но если есть больше 500/2000 записей, вы можете получить неверные результаты.
Избегайте слишком большого количества столбцов
По умолчанию Power Apps вычисляет фактические столбцы, необходимые для данного запроса, с помощью вызова функции Явный выбор столбца. Эта функция включена по умолчанию во всех новых приложениях. Чтобы включить функцию явного выбора столбца в приложении на основе холста, перейдите в Настройки > Предстоящие функции > Предварительная версия> включите переключатель Явный выбор столбца.
Предложения
Чтобы достичь небольшой полезной нагрузки данных, рассмотрите следующие вопросы и предложения:
Стремитесь к тому, чтобы запрос по умолчанию для галереи или таблицы возвращал только примерно 100–200 записей. Если вы используете делегируемый запрос, это происходит автоматически. Если вы запрашиваете API или другой источник, который не поддерживает делегирование, используйте параметры для уточнения результатов.
- Рассмотрите возможность использования представления на основе источника данных, которое автоматически фильтрует данные. Большинство приложений корпоративного уровня активно используют представления источника данных.
- Рассмотрите возможность использования значений поиска или фильтра по умолчанию для определения объема данных.
- Рассмотрите возможность использования аргументов поиска в пользовательском интерфейсе перед отображением данных.
- Рассмотрите следующие вопросы о вашем приложении:
- Что необходимо на данном экране по умолчанию?
- Какие данные действительно необходимы конечному пользователю для выполнения определенного бизнес-действия?
- Пользователям обычно не нужны тысячи записей на начальном экране для выполнения задачи.
Начните создавать запрос для галереи или таблицы, используя таблицы делегирования для вашего источника данных. Выбирайте только функции, поддерживаемые для вашего запроса. Если ваш запрос нельзя делегировать, что вы можете сделать, чтобы сделать его делегируемым?