Поделиться через


Filter, и SearchLookUp функции

Применимо к: Приложения На основе холста Copilot Studio Desktop поддерживают функции Power Platform CLI Dataverse, управляемые моделью

Эти функции выполняют поиск записей в таблице.

Просмотрите это видео, чтобы узнать, как использовать Filterфункции Searchи LookUp функции:

Заметка

Команды PAC CLI pac power-fx не поддерживают функцию Search .

Description

Функция Filter находит записи в таблице, удовлетворяющей формуле. Используется Filter для поиска набора записей, которые соответствуют одному или нескольким критериям и отменяют те записи, которые не используются.

Функция LookUp находит первую запись в таблице, которая удовлетворяет формуле. Используется LookUp для поиска одной записи, которая соответствует одному или нескольким критериям.

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

Поля обрабатываемой в настоящее время записи доступны в формуле. Используйте оператор ThisRecord или просто укажите поля по имени, как указываются любые другие значения. Оператор As также можно использовать для присвоения имени обрабатываемой записи, что упростит понимание формулы и обеспечивает доступность вложенных записей. Дополнительные сведения см. в приведенных ниже примерах и в описании работы с областью записи.

Функция Search находит записи в таблице, содержащей строку в одном из их столбцов. Строка может происходить в любом месте столбца; например, поиск "rob" или "bert" находит совпадение в столбце, содержащем "Robert". При поиске регистр не учитывается. В отличие Filter от функции LookUpSearch, функция использует одну строку для сопоставления вместо формулы.

Filter и Search возвращает таблицу, содержащую те же столбцы, что и исходная таблица, и записи, соответствующие критериям. LookUp возвращает только первую найденную запись после применения формулы для уменьшения записи до одного значения. Если записи не найдены, Filter и Search возвращает пустую таблицу и LookUp возвращает пустое значение.

Таблицы являются значением в Power Apps, как и строка или число. Их можно передавать в функции и получать в качестве результата выполнения функций. Filter, Searchи LookUp не изменяйте таблицу. а принимают ее в качестве аргумента и возвращают таблицу, запись или отдельное значение из нее. Подробнее см. в описании работы с таблицами.

Делегирование

По возможности Power Apps будет делегировать операции фильтрации и сортировки источнику данных и пролистывать результаты по запросу. Например, при запуске приложения, которое отображает элемент управления Коллекция, заполненный данными, только первый набор записей будет изначально передан на устройство. По мере пролистывания будут отображаться дополнительные данные из источника данных. В результате уменьшается время запуска приложения или доступа к очень большим наборам данных.

Однако делегирование может не всегда быть возможно. Источники данных отличаются в зависимости от функций и операторов, которые они поддерживают с делегированием. Если полное делегирование формулы невозможно, среда разработки пометит предупреждением ту часть, которую невозможно делегировать. По возможности следует изменить формулу, чтобы избежать функций и операторов, которые невозможно делегировать. В списке делегирования приводятся сведения о том, какие источники данных и операции можно делегировать.

Если делегирование невозможно, Power Apps будет извлекать только небольшой набор записей для локальной работы. Filter функции сортировки будут работать с уменьшенным набором записей. Сведения, доступные в коллекции, могут не представлять полную картину, что может запутать пользователей.

Дополнительные сведения см. в обзоре делегирования.

Синтаксис

Filter(Table*, Formula1 [, *Formula2*, ... ]

  • Таблица - Обязательно. Таблица для поиска.
  • Формулы - Обязательно. Формула, по которой вычисляется каждая запись этой таблицы. Функция возвращает все записи, возвращающие значение true. Можно ссылаться на любые столбцы в таблице. Если указано несколько формул, их результаты объединяются с результатами функции And.

Search(Table*, SearchString, Column1 [, *Column2*, ... ]

  • Таблица - Обязательно. Таблица для поиска.
  • SearchString - Обязательно. Строка для поиска. Если указать пустое значение или пустую строку, возвращаются все записи.
  • Столбцы - обязательны. Имена столбцов в таблице для поиска. Если параметр SearchString найден в данных любого из этих столбцов в виде частичного совпадения, возвращается полная запись.

Заметка

В Power Apps до версии 3.24042 имена столбцов для Search функции были указаны с текстовой строкой с двойными кавычками, а при подключении к источнику данных они также должны быть логическими именами. Например, логическое имя "cr43e_name" с двойными кавычками использовалось вместо отображаемого имени без кавычки. Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, каждое пространство было указано как "_x0020_""Column Name""Column_x0020_Name". После этой версии все приложения были автоматически обновлены до нового синтаксиса, описанного в этой статье.

LookUp(Таблица*, формула [, *ReductionFormula* ] )

  • Таблица - Обязательно. Таблица для поиска. В пользовательском интерфейсе синтаксис показан как источник над полем функции.
  • Формула - Обязательно. Формула, по которой вычисляется каждая запись этой таблицы. Функция возвращает первую запись, которая возвращает значение true. Можно ссылаться на любые столбцы в таблице. В пользовательском интерфейсе синтаксис показан как условие над полем функции.
  • Формула сокращения - Необязательно. Эта формула вычисляется по найденной записи, а затем эта запись сводится к одному значению. Можно ссылаться на любые столбцы в таблице. Если этот параметр не задан, функция возвращает полную запись из таблицы. В пользовательском интерфейсе синтаксис показан как результат над полем функции.

Примеры

В приведенных ниже примерах используется источник данныхIceCream.

Источник данных о мороженом.

Формула Description Result
Filter(IceCream, OnOrder > 0) Возвращает записи, где OnOrder больше нуля. Filter По заказу.
Filter(IceCream, Quantity + OnOrder > 225) Возвращает записи, где сумма значений в столбцах Quantity и OnOrder больше 225. Filter количество и заказ.
Filter(IceCream, "chocolate" in Lower(Flavor )) Возвращает записи, в которых слово "chocolate" отображается в имени "Вкус ", независимо от прописных или строчных букв. Filter в нижнем.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Возвращает записи, где значение столбца Quantity меньше 10, а столбца OnOrder меньше 20. Так как записи, соответствующие заданным условиям, отсутствуют, возвращается пустая таблица. Filter по количеству.
Search(IceCream, "choc", Flavor) Возвращает записи, в которых строка "choc" отображается в имени "Вкус ", независимо от прописных или строчных букв. Search Элементы.
Search(IceCream, "", Flavor) Так как условия поиска не заданы, возвращаются все записи. Search все элементы.
LookUp(IceCream, Flavor = "Chocolate", Quantity) Ищет запись со значением ""Chocolate, из которого есть один. Для первой найденной записи возвращает значение столбца Quantity. 100
LookUp(IceCream, Quantity > 150, Quantity + OnOrder) Ищет запись со значением столбца Quantity большим 150 (в этом случае таких записей несколько). Для первой найденной записи, которая являетсяVanilla "" , возвращает сумму столбцов Quantity и OnOrder . 250
LookUp(IceCream, Flavor = "Pistachio", OnOrder) Выполняет поиск записи со значением ""Pistachio, из которого нет. Так как запись не найдена, функция Lookup возвращает пустое значение. пустой
LookUp(IceCream, Flavor = "Vanilla") Ищет запись со значением ""Vanilla, из которого есть один. Так как формула сведения не применялась, возвращается целая запись. { Вкус: "Vanilla", Количество: 200, OnOrder: 75 }

Фильтрация с помощью столбцов выбора

В следующем примере используется таблица Учетная запись в Microsoft Dataverse как источник данных. В этом примере показано, как получить Filter список учетных записей на основе выбранных значений элементов управления полем со списком:

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

  1. Откройте пустое приложение.

  2. Добавьте новый экран, выбрав вариант Создать экран.

  3. На вкладке Вставить выберите Коллекция, затем выберите Вертикальная.

  4. На вкладке Свойства правой панели откройте Источник данных, затем выберите Учетные записи.

  5. (Необязательно) В списке Макет выберите разные варианты.

  6. На вкладке Вставить выберите Входные данные, затем выберите Поле со списком. Повторите этот шаг, чтобы добавить еще два элемента управления поля со списком.

  7. Для каждого элемента управления поля со списком на вкладке Свойства правой панели откройте Источник данных, затем выберите Учетные записи. Выберите Изменить рядом с параметром Поля, затем выберите значения Основной текст и SearchField. Параметр Основной текст должен быть столбцом вариантов, который вы хотите добавить в поле со списком. Повторите этот шаг для других двух элементов управления поля со списком.

    Установка значений поля со списком.

  8. Теперь выберите элемент управления Gallery и задайте для свойства Items следующую формулу:

    Filter(Accounts,
     'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry),
     'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or
       IsBlank(ComboBox2.Selected.'Relationship Type'),
     'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or
       IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
    

    Источник данных учетных записей.

Search взаимодействие с пользователем

В приведенных ниже примерах используется источник данныхIceCream.

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

Примеры, приведенные в остальной части статьи, — это результаты поиска в списке Customers, содержащие следующие данные:

Search на клиентах.

Чтобы создать этот источник данных в виде коллекции, создайте элемент управления Button и задайте в качестве значения свойства OnSelect следующую формулу:

ClearCollect(Customers, Table({ Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" }) )

Как показано в этом примере, вы можете вывести список записей в элемент управления Gallery (Коллекция) в нижней части экрана. В верхней части экрана можно добавить элемент управления для Text input (Ввод текста) под названием SearchInput, что позволит пользователям указывать интересующие их записи.

Search с помощью входных данных поиска.

При вводе символов в текстовом поле SearchInput результаты в коллекции автоматически фильтруются. В этом случае в коллекции будут отображаться записи, где имена клиентов (не названия компаний) начинаются с последовательности символов, указанных в текстовом поле SearchInput. Если пользователь введет в поле поиска co, в коллекции отобразятся следующие результаты:

Search с начала.

Чтобы выполнить фильтрацию результатов по столбцу Name, задайте в качестве значения свойства Items элемента управления Gallery одну из этих формул:

Формула Description Result
Filter(Customers, StartsWith(Name, SearchInput.Text) ) Фильтрует источник данных Customers по записям, в которых искомая строка находится в начале столбца Name. При проверке регистр не учитывается. Если пользователь введет в поле поиска co, в коллекции отобразятся следующие результаты: Colleen Jones и Cole Miller. В этом случае значение Mike Collins не отобразится, так как в столбце Name запись не начинается с искомой строки. Filter с начала.
Filter(Клиенты, SearchInput.Text в имени) Фильтрует источник данных Customers по записям, в которых искомая строка находится в любом положении в столбце Name. При проверке регистр не учитывается. Если пользователь введет в поле поиска co, в коллекции отобразятся следующие результаты: Colleen Jones,Cole Miller и Mike Collins. Это связано с тем, что записи столбца Name содержат искомую строку (в любом положении). Filter с входными данными поиска.
Search(Customers, SearchInput.Text, Name) Аналогично использованию оператора in функция Search ищет совпадение в любом месте в столбце "Имя" каждой записи. Имя столбца необходимо заключить в двойные кавычки. Search Клиентов.

Вы можете расширить область поиска, добавив столбец Company и Name:

Формула Description Result
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Фильтрует источник данных Customers по записям, в которых записи в столбце Name или Company начинаются со строки поиска (например, co). Если функция || возвращает значение true, оператор также возвращает значение true. Filter клиенты начинаются с.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Фильтрует источник данных Customers по записям, в которых искомая строка (например, co) находится в любом положении в столбце Name или Company. Filter пользователи ищут входные данные.
Search(Customers, SearchInput.Text, Name, Company) Как и в операторе , Search функция выполняет поиск источника данных Customers для записей, в которых столбец Name или столбец "Компания " содержит строку поиска (например, co) в любом месте в нем. Функция Search проще читать и записывать, чем Filter если требуется указать несколько столбцов и несколько операторов . Search клиенты с входными данными поиска.