Функции AddColumns, DropColumns, RenameColumns и ShowColumns
Применимо к: Приложениям Canvas Потокам рабочего стола Приложениям на основе моделей Power Platform CLI
Изменение формата таблицы путем добавления, удаления, переименования и выбора ее столбцов.
Функцию **ForAll также можно использовать для формирования таблицы, возвращая таблицу новых записей, созданных на основе существующих столбцов.
Обзор
С помощью этих функций вы можете изменить таблицу и настройки ее столбцов.
- Сократите до одного столбца таблицу, состоящую из нескольких столбцов, чтобы использовать ее в функции, принимающей один столбец, например Lower или Sqrt.
- Добавьте в таблицу вычисляемый столбец (например, столбец Общая цена с результатами умножения значений из столбцов Количество и Цена за единицу).
- Переименуйте столбец, чтобы его имя было более понятным в представлениях для пользователей или в формулах.
Таблица в Power Apps считается значением, как любая строка или число. Таблицы можно использовать в качестве аргумента формулы, и функции могут возвращать таблицу.
Заметка
Функции, которые описаны в этом разделе, не изменяют оригинальную таблицу. Они принимают таблицу в качестве аргумента и возвращают новую таблицу, применив к ней запрошенное преобразование. Подробнее см. раздел Работа с таблицами.
Вы не можете с помощью этих функций изменять столбцы источника данных. Такие данные следует изменять прямо в источнике данных. Вы можете добавить столбцы к коллекции с помощью функции Collect. Подробнее см. в разделе о работе с источниками данных.
Description
Функция AddColumns добавляет столбец к таблице и с помощью формулы определяет значения для этого столбца. Существующие столбцы сохраняются без изменений.
Формула вычисляется отдельно для каждой записи этой таблицы.
Поля обрабатываемой в настоящее время записи доступны в формуле. Используйте оператор ThisRecord или просто укажите поля по имени, как указываются любые другие значения. Оператор As также можно использовать для присвоения имени обрабатываемой записи, что упростит понимание формулы и обеспечивает доступность вложенных записей. Дополнительные сведения см. в приведенных ниже примерах и в описании работы с областью записи.
Функция DropColumns исключает столбцы из таблицы. Все остальные столбцы сохраняются без изменений. DropColumns исключает столбцы, а ShowColumns включает столбцы.
С помощью функции RenameColumns можно переименовать один или несколько столбцов таблицы. Для этого необходимо предоставить хотя бы одну пару аргументов, которая определяет имя столбца, содержащегося в таблице (старое имя столбца, которое требуется заменить), и имя столбца, отсутствующего в таблице (новое имя столбца, которое требуется использовать). Столбец со старым именем должен присутствовать в таблице, а столбца с новым именем в ней не должно быть. Имя каждого столбца может использоваться в списке аргументов только один раз в качестве либо старого, либо нового имени столбца. Если необходимо присвоить столбцу имя существующего столбца, сначала необходимо удалить существующий столбец с помощью команды DropColumns или переименовать его с использованием функции RenameColumns, вложенной в другую.
Функция ShowColumns включает в результат указанные столбцы таблицы и удаляет все остальные. Функцию ShowColumns можно использовать для выделения одного столбца из таблицы с несколькими столбцами. ShowColumns включает столбцы, а DropColumns исключает столбцы.
Все эти функции возвращают новую таблицу, к которой применено соответствующее преобразование. Исходная таблица сохраняется без изменений. Вы не можете изменить существующую таблицу с формулой. SharePoint, Microsoft Dataverse, SQL Server и другие источники данных предоставляют инструменты для изменения столбцов списков, таблиц и таблиц, которые часто называются схемой. Функции в этой статье только преобразуют входную таблицу без изменения оригинала в выходную таблицу для дальнейшего использования.
Аргументы этих функций поддерживают делегирование. Например, функция Filter, используемая в качестве аргумента для извлечения связанных записей, просматривает все списки, даже если источник данных '[dbo].[AllListings]' содержит миллион строк:
AddColumns( RealEstateAgents,
Listings,
Filter( '[dbo].[AllListings]', ListingAgentName = AgentName )
)
Однако на выходные данные этих функций распространяется ограничение на количество записей без делегирования. В этом примере возвращается только 500 записей, даже если источник данных RealEstateAgents имеет 501 или более записей.
Если вы используете AddColumns таким образом, функция Filter должна делать отдельные вызовы источника данных для каждой из этих первых записей в RealEstateAgents, что приводит к передаче большого объема данных по сети. Если [dbo](.[AllListings] достаточно мало и не меняется часто. Вы можете вызвать функцию Collect в OnStart, чтобы кэшировать источник данных в вашем приложении при его запуске. В качестве альтернативы вы могли бы изменить структуру своего приложения так, чтобы вы извлекали связанные записи только тогда, когда пользователь запрашивает их.
Заметка
В Power Apps до версии 3.24042 имена столбцов задавались текстовой строкой с использованием двойных кавычек, а при подключении к источнику данных они также должны были быть логическими именами. Например, вместо отображаемого имени Имя без кавычек использовалось логическое имя "cr43e_name" в двойных кавычках. Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, каждый пробел был указан с помощью "_x0020_", например "Имя столбца" как "Имя_x0020_столбца". После этой версии все приложения были автоматически обновлены до нового синтаксиса, описанного в этой статье.
Синтаксис
AddColumns( Таблица, ИмяСтолбца1, Формула1 [, ИмяСтолбца2, Формула2, ... ] )
- Таблица - Обязательно. Таблица, с которой выполняются операции.
- ColumnNames - Обязательно. Имена столбцов для добавления.
- Формулы - Обязательно. Формулы, вычисляемые для каждой записи таблицы. Результат добавляется в итоговую таблицу как значение соответствующего нового столбца. Вы можете использовать в этой формуле ссылки на другие столбцы таблицы.
DropColumns( Таблица, ИмяСтолбца1 [, ИмяСтолбца2, ... ] )
- Таблица - Обязательно. Таблица, с которой выполняются операции.
- ColumnNames - Обязательно. Имена столбцов для исключения.
ПереименоватьСтолбцы( Таблица, СтароеИмяСтолбца1, НовоеИмяСтолбца1 [, СтароеИмяСтолбца2, НовоеИмяСтолбца2, ... ] )
- Таблица - Обязательно. Таблица, с которой выполняются операции.
- OldColumnNames - Обязательно. Имена столбцов исходной таблицы, который требуется переименовать. Этот элемент отображается первым в паре аргументов (или первым в каждой из пар, если формула содержит несколько пар).
- NewColumnNames - Обязательно. Имена, которые нужно использовать вместо старых. Этот элемент отображается последним в паре аргументов (или последним в каждой из пар, если формула содержит несколько пар).
ShowColumns( Table, ColumnName1 [, ColumnName2 , ... ] )
- Таблица - Обязательно. Таблица, с которой выполняются операции.
- ColumnNames - Обязательно. Имена столбцов для включения.
Примеры
В следующих примерах мы будем использовать источник данных IceCreamSales, который содержит данные в такой таблице:
Ни один из этих примеров не изменяет исходную таблицу источника данных IceCreamSales. Каждая функция преобразует ее в новую таблицу и возвращает полученную таблицу в результате.
Формула | Description | Result |
---|---|---|
AddColumns(ПродажиМороженого, Доход, ЦенаЗаЕдиницу * КоличествоПроданных) | Добавляет к результату столбец Revenue. Для каждой записи вычисляется выражение UnitPrice * QuantitySold. Результат вычисления помещается в новый столбец. | |
DropColumns(ПродажиМороженого, ЦенаЗаЕдиницы) | Исключает из результата столбец UnitPrice. Эта функция позволяет исключить столбцы, а ShowColumns включает их. | |
ПоказатьКолонки(ПродажиМороженого, Вкус) | Включает в результат только столбец Flavor. Эта функция позволяет включить столбцы, а DropColumns исключает их. | |
RenameColumns(ПродажиМороженого, ЦенаЗаЕдиницы, Цена) | Переименовывает столбец UnitPrice в итоговой таблице. | |
RenameColumns(ПродажиМороженого, ЦенаЗаЕдиницы, Цена, КоличествоПроданных, Число) | Переименовывает столбцы UnitPrice и QuantitySold в результате. | |
DropColumns( RenameColumns( AddColumns( IceCreamSales, Revenue, UnitPrice * QuantitySold ), UnitPrice, Price ), Quantity ) |
Поочередно выполняет следующие преобразования, начиная с "внутренней стороны" формулы:
|
Пошаговое руководство
Давайте попробуем некоторые примеры, приведенные ранее в этой статье.
Создайте коллекцию, добавив элемент управления Button (Кнопка) и установите для его свойства OnSelect следующую формулу:
ClearCollect( IceCreamSales, Table( { Flavor: "Strawberry", UnitPrice: 1.99, QuantitySold: 20 }, { Flavor: "Chocolate", UnitPrice: 2.99, QuantitySold: 45 }, { Flavor: "Vanilla", UnitPrice: 1.50, QuantitySold: 35 } ) )
Выполните формулу, выбрав кнопку при нажатой клавише ALT.
Добавьте второй элемент управления Button (Кнопка), задайте для свойства OnSelect следующую формулу, затем выполните ее:
ClearCollect( FirstExample, AddColumns( IceCreamSales, Revenue, UnitPrice * QuantitySold ) )
В меню Файл выберите Коллекции, затем выберите IceCreamSales для отображения этой коллекции.
Как показывает этот рисунок, вторая формула не изменила эту коллекцию. Функция AddColumns использовала IceCreamSales в качестве аргумента только для чтения; функция не изменила эту таблицу, на которую указывает этот аргумент.
Выберите FirstExample.
Как показывает этот рисунок, вторая формула вернула новую таблицу с добавленным столбцом. Функция ClearCollect захватила новую таблицу в коллекцию FirstExample, добавляя что-то к исходной таблице, когда она проходила через функцию без изменения источника:
Сопоставить столбцы в компоненте
См. Сопоставить столбцы.