Функции AddColumns, DropColumns, RenameColumns и ShowColumns

Применимо к: приложениям на основе холста классическим потокам приложениям на основе модели интерфейсу командной строки Power Platform

Изменение формата таблицы путем добавления, удаления, переименования и выбора ее столбцов.

Обзор

С помощью этих функций вы можете изменить таблицу и настройки ее столбцов.

  • Сократите до одного столбца таблицу, состоящую из нескольких столбцов, чтобы использовать ее в функции, принимающей один столбец, например Lower или Abs.
  • Добавьте в таблицу вычисляемый столбец (например, столбец Общая цена с результатами умножения значений из столбцов Количество и Цена за единицу).
  • Переименуйте столбец, чтобы его имя было более понятным в представлениях для пользователей или в формулах.

Таблица в Power Apps считается значением, как любая строка или число. Таблицы можно использовать в качестве аргумента формулы, и функции могут возвращать таблицу.

Заметка

Функции, которые описаны в этом разделе, не изменяют оригинальную таблицу. Они принимают таблицу в качестве аргумента и возвращают новую таблицу, применив к ней запрошенное преобразование. Подробнее см. в описании работы с таблицами.

Вы не можете с помощью этих функций изменять столбцы источника данных. Такие данные следует изменять прямо в источнике данных. Вы можете добавить столбцы к коллекции с помощью функции Collect. Подробнее см. в описании работы с источниками данных.

Описание

Функция 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, чтобы кэшировать источник данных в вашем приложении при запуске. В качестве альтернативы вы могли бы изменить структуру своего приложения так, чтобы вы извлекали связанные записи только тогда, когда пользователь запрашивает их.

Синтаксис

AddColumns( Table, ColumnName1, Formula1 [, ColumnName2, Formula2, ... ] )

  • таблица — обязательный аргумент. Таблица, с которой выполняются операции.
  • ColumnName(s) — обязательный аргумент. Имена столбцов для добавления. Этот аргумент принимает строку (например, "Name" в двойных кавычках). Вы должны указать имена столбцов, используя их логическое имя. Intellisense предложит только логические имена. Логическое имя вводится с учетом регистра.
  • Formula(s) — обязательный аргумент. Формула или формулы, вычисляемые для каждой записи таблицы. Результат добавляется в итоговую таблицу как значение соответствующего нового столбца. Вы можете использовать в этой формуле ссылки на другие столбцы таблицы.

DropColumns( Table, ColumnName1 [, ColumnName2, ... ] )

  • таблица — обязательный аргумент. Таблица, с которой выполняются операции.
  • ColumnName(s) — обязательный аргумент. Имена столбцов для исключения. Этот аргумент принимает строку (например, "Name" в двойных кавычках). Вы должны указать имена столбцов, используя их логическое имя. Intellisense предложит только логические имена. Логическое имя вводится с учетом регистра.

RenameColumns( Table, OldColumnName1, NewColumnName1 [, OldColumnName2, NewColumnName2, ... ] )

  • таблица — обязательный аргумент. Таблица, с которой выполняются операции.
  • OldColumnName — обязательный аргумент. Имя столбца исходной таблицы, который требуется переименовать. Этот элемент отображается первым в паре аргументов (или первым в каждой из пар, если формула содержит несколько пар). Этот аргумент принимает строку (например, "Name" в двойных кавычках). Вы должны указать имена столбцов, используя их логическое имя. Intellisense предложит только логические имена. Логическое имя вводится с учетом регистра.
  • NewColumnName — обязательный аргумент. Имя, которое нужно использовать вместо старого. Этот элемент отображается последним в паре аргументов (или последним в каждой из пар, если формула содержит несколько пар). Этот аргумент принимает строку (например, "Customer Name" в двойных кавычках). Вы должны указать имена столбцов, используя их логическое имя. Intellisense предложит только логические имена. Логическое имя вводится с учетом регистра.

ShowColumns( Table, ColumnName1 [, ColumnName2, ... ] )

  • таблица — обязательный аргумент. Таблица, с которой выполняются операции.
  • ColumnName(s) — обязательный аргумент. Имена столбцов для включения. Этот аргумент принимает строку (например, "Name" в двойных кавычках). Вы должны указать имена столбцов, используя их логическое имя. Intellisense предложит только логические имена. Логическое имя вводится с учетом регистра.

Примеры

В следующих примерах мы будем использовать источник данных IceCreamSales, который содержит данные в такой таблице:

Пример мороженого.

Ни один из этих примеров не изменяет исходную таблицу источника данных IceCreamSales. Каждая функция преобразует ее в новую таблицу и возвращает полученную таблицу в результате.

Формула Описание Результат
AddColumns( IceCreamSales, "Revenue", UnitPrice * QuantitySold ) Добавляет к результату столбец Revenue. Для каждой записи вычисляется выражение UnitPrice * QuantitySold. Результат вычисления помещается в новый столбец. Результат с клубникой, шоколадом и ванилью.
DropColumns( IceCreamSales, "UnitPrice" ) Исключает из результата столбец UnitPrice. Эта функция позволяет исключить столбцы, а ShowColumns включает их. Результат с клубникой, шоколадом, ванилью при наличии только столбца QuantitySold.
ShowColumns( IceCreamSales, "Flavor" ) Включает в результат только столбец Flavor. Эта функция позволяет включить столбцы, а DropColumns исключает их. Только столбец вкуса.
RenameColumns( IceCreamSales, "UnitPrice", "Price") Переименовывает столбец UnitPrice в итоговой таблице. Результат с вкусом, ценой и выручкой.
RenameColumns( IceCreamSales, "UnitPrice", "Price", "QuantitySold", "Number") Переименовывает столбцы UnitPrice и QuantitySold в результате. Результат с 3 морожеными и столбцами вкуса, цены, дохода.
DropColumns(
RenameColumns(
AddColumns( IceCreamSales, "Revenue",
UnitPrice * QuantitySold ),
"UnitPrice", "Price" ),
"Quantity" )
Поочередно выполняет следующие преобразования, начиная с "внутренней стороны" формулы:
  1. Добавляет столбец Revenue заполняемый данными по формуле UnitPrice * Quantity.
  2. Переименовывает столбец UnitPrice в Price.
  3. Исключает столбец Quantity.
Обратите внимание, что порядок выполнения имеет значение. Например, мы не сможем вычислить UnitPrice после того, как переименуем его.
Пример мороженого для цены за единицу.

Пошаговое руководство

Давайте попробуем некоторые примеры, приведенные ранее в этой теме.

  1. Создайте коллекцию, добавив элемент управления 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 }
       )
    )
    
  2. Выполните формулу, выбрав кнопку при нажатой клавише ALT.

  3. Добавьте второй элемент управления Button (Кнопка), задайте для свойства OnSelect следующую формулу, затем выполните ее:

    ClearCollect( FirstExample,
       AddColumns( IceCreamSales, "Revenue", UnitPrice * QuantitySold )
    )
    
  4. В меню Файл выберите Коллекции, затем выберите IceCreamSales для отображения этой коллекции.

    Как показывает этот рисунок, вторая формула не изменила эту коллекцию. Функция AddColumns использовала IceCreamSales в качестве аргумента только для чтения; функция не изменила эту таблицу, на которую указывает этот аргумент.

    Средство просмотра коллекции, отображающее три записи коллекции Продажа мороженого, в которые не включен столбец Доход.

  5. Выберите FirstExample.

    Как показывает этот рисунок, вторая формула вернула новую таблицу с добавленным столбцом. Функция ClearCollect захватила новую таблицу в коллекцию FirstExample, добавляя что-то к исходной таблице, когда она проходила через функцию без изменения источника:

    Средство просмотра коллекции, отображающее три записи коллекции Первый пример, которая включает новый столбец Доход.

Сопоставить столбцы в компоненте

См. Сопоставить столбцы.