Chức năng Lọc, Tìm kiếm và Tra cứu

Áp dụng cho: Ứng dụng canvas Luồng máy tính để bàn Ứng dụng dựa trên mô hình Power Platform CLI

Tìm một hoặc nhiều bản ghi trong một bảng.

Hãy xem video này để tìm hiểu cách sử dụng các chức năng Bộ lọc, **Tìm kiếm và Tra cứu :

Lưu ý

Các lệnh PAC CLI pac power-fx không hỗ trợ chức năng Tìm kiếm .

Description

Hàm Filter tìm các bản ghi trong một bảng, thỏa mãn một công thức. Sử dụng Bộ lọc để tìm một tập hợp bản ghi phù hợp với một hoặc nhiều tiêu chí và loại bỏ những bản ghi không phù hợp.

Hàm LookUp tìm bản ghi đầu tiên trong bảng, thỏa mãn một công thức. Sử dụng hàm LookUp để tìm một bản ghi phù hợp với một hoặc nhiều tiêu chí.

Cả hai hàm đều dùng công thức để đánh giá mỗi bản ghi của bảng. Hàm sẽ trả về kết quả chứa các bản ghi được đánh giá là true. Ngoài các toán tử công thức thông thường, bạn có thể dùng các toán tử inexactin để khớp các chuỗi con.

Các trường bản ghi hiện đang được xử lý đều có sẵn trong công thức. Sử dụng toán tử ThisRecord hoặc chỉ đơn giản là tham chiếu các trường theo tên như khi làm với bất kỳ giá trị nào khác. Bạn cũng có thể dùng toán tử As để đặt tên cho bản ghi đang được xử lý, điều này có thể giúp cho công thức của bạn dễ hiểu hơn và làm cho các bản ghi lồng nhau có thể truy cập được. Để biết thêm thông tin, hãy xem ví dụ bên dưới và xử lý phạm vi bản ghi.

Hàm Search tìm các bản ghi trong bảng, có một trong các cột chứa chuỗi. Chuỗi có thể xuất hiện ở bất kỳ đâu trong cột; ví dụ: tìm kiếm "rob" hoặc "bert" sẽ tìm thấy kết quả khớp trong cột chứa "Robert". Tìm kiếm có phân biệt chữ hoa chữ thường. Không giống với hàm FilterLookUp, hàm Search dùng chuỗi (chứ không dùng công thức) để so khớp.

Hàm FilterSearch trả về một bảng chứa các cột giống như bảng gốc và những bản ghi khớp với tiêu chí. Hàm LookUp chỉ trả về bản ghi đầu tiên được tìm thấy, sau khi áp dụng công thức để giảm xuống một giá trị cho bản ghi. Nếu không tìm thấy bản ghi nào, hàm FilterSearch sẽ trả về bảng trống còn hàm LookUp trả về blank.

Bảng là một giá trị trong Power Apps, giống như một chuỗi hoặc số. Các hàm cũng có thể sử dụng hoặc trả về giá trị này. Hàm Filter, SearchLookUp không sửa đổi bảng. Thay vào đó, các hàm này sử dụng bảng làm đối số và trả về một bảng, bản ghi hoặc một giá trị duy nhất từ đối số đó. Xem phần thao tác với bảng để biết thêm chi tiết.

Đại diện

Khi có thể, Power Apps sẽ ủy nhiệm cho bộ lọc và sắp xếp các thao tác với nguồn dữ liệu và trang thông qua kết quả theo yêu cầu. Ví dụ: khi bạn bắt đầu một ứng dụng hiển thị một kiểm soát Thư viện có dữ liệu thì chỉ bộ bản ghi đầu tiên mới được chuyển đến thiết bị từ ban đầu. Khi người dùng cuộn, dữ liệu bổ sung sẽ được đưa xuống từ nguồn dữ liệu. Kết quả là thời gian bắt đầu nhanh hơn cho ứng dụng và khả năng truy cập vào các tập hợp dữ liệu rất lớn.

Tuy nhiên, không phải lúc nào cũng có thể ủy nhiệm được. Nguồn dữ liệu thay đổi theo các hàm và toán tử mà nguồn dữ liệu hỗ trợ với việc ủy nhiệm. Nếu không thể ủy nhiệm hoàn toàn một công thức, môi trường tác giả sẽ gắn cờ cảnh báo cho phần không thể ủy nhiệm. Khi có thể, hãy cân nhắc việc thay đổi công thức để tránh các hàm và toán tử không thể ủy nhiệm. Chi tiết danh sách ủy nhiệm mà nguồn dữ liệu và thao tác có thể được ủy nhiệm.

Nếu không thể ủy nhiệm, Power Apps sẽ chỉ kéo xuống một tập hợp bản ghi nhỏ để làm việc tại chỗ. Các hàm bộ lọc và sắp xếp sẽ hoạt động trên một tập hợp bản ghi đã giảm. Những nội dung có trong Thư viện có thể không phải là một câu chuyện hoàn chỉnh, từ đó có thể gây khó hiểu cho người dùng.

Hãy xem tổng quan ủy nhiệm để biết thêm thông tin.

Cú pháp

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

  • Table – Bắt buộc. Bảng sẽ tìm kiếm.
  • Formula(s) – Bắt buộc. Công thức mà hàm dùng để đánh giá từng bản ghi trong bảng. Hàm trả về tất cả các bản ghi được đánh giá là true. Bạn có thể tham chiếu các cột trong bảng. Nếu bạn cung cấp nhiều công thức, kết quả của tất cả các công thức sẽ được kết hợp bằng hàm And.

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

  • Table – Bắt buộc. Bảng sẽ tìm kiếm.
  • SearchString – Bắt buộc. Chuỗi cần tìm. Nếu có chuỗi trống hoặc giá trị blank, hàm sẽ trả về tất cả bản ghi.
  • Column(s) – Bắt buộc. Tên của các cột trong Table sẽ tìm kiếm. Nếu tìm thấy SearchString trong dữ liệu của bất kỳ cột nào dưới dạng khớp một phần, hàm sẽ trả về bản ghi đầy đủ.

Lưu ý

Trong Power Apps trước phiên bản 3.24042, tên cột cho hàm Tìm kiếm đã được chỉ định bằng chuỗi văn bản sử dụng dấu ngoặc kép và nếu được kết nối với nguồn dữ liệu chúng cũng cần phải là tên logic. Ví dụ: tên logic "cr43e_name" có dấu ngoặc kép đã được sử dụng thay vì tên hiển thị Tên không có dấu ngoặc kép. Đối với SharePoint và nguồn dữ liệu Excel chứa tên cột có khoảng trắng, mỗi khoảng trắng được chỉ định bằng "_x0020_", ví dụ "Tên cột""Cột_x0020_Name". Sau phiên bản này, tất cả các ứng dụng đều được tự động cập nhật theo cú pháp mới được mô tả trong bài viết này.

LookUp(Table*, Formula [, *ReductionFormula* ] )

  • Table – Bắt buộc. Bảng sẽ tìm kiếm. Trong giao diện người dùng, cú pháp hiển thị là source phía trên hộp hàm.
  • Formula – Bắt buộc. Công thức mà hàm dùng để đánh giá từng bản ghi trong bảng. Hàm trả về bản ghi đầu tiên được đánh giá là true. Bạn có thể tham chiếu các cột trong bảng. Trong giao diện người dùng, cú pháp hiển thị là condition phía trên hộp chức năng.
  • ReductionFormula – Không bắt buộc. Hàm sẽ đánh giá công thức này đối với bản ghi tìm thấy rồi giảm xuống một giá trị cho bản ghi này. Bạn có thể tham chiếu các cột trong bảng. Nếu bạn không sử dụng thông số này, hàm sẽ trả về bản ghi đầy đủ của bảng. Trong giao diện người dùng, cú pháp hiển thị là result phía trên hộp chức năng.

Ví dụ

Dưới đây là các ví dụ sử dụng nguồn dữ liệuIceCream:

Kem nguồn dữ liệu.

Công thức Description Kết quả
Filter( IceCream, OnOrder > 0 ) Trả về các bản ghi trong đó OnOrder lớn hơn 0. Lọc theo thứ tự.
Filter( IceCream, Quantity + OnOrder > 225 ) Trả về các bản ghi trong đó tổng của các cột QuantityOnOrder lớn hơn 225. Lọc số lượng và thứ tự.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Trả về các bản ghi trong đó từ "chocolate" xuất hiện trong tên Flavor, không phân biệt chữ hoa hay chữ thường. Lọc ở phía dưới.
Bộ lọc(Kem, Số lượng < 10 &&Theo yêu cầu < 20) Trả về bản ghi, trong đó Quantity nhỏ hơn 10 và OnOrder nhỏ hơn 20. Không có bản ghi nào phù hợp với các tiêu chí này, vì vậy hàm trả về bảng trống. Lọc theo số lượng
Search(Kem, "choc", Hương vị) Trả về các bản ghi trong đó chuỗi "choc" xuất hiện trong tên Flavor, không phân biệt chữ hoa hay chữ thường. Tìm kiếm các mục.
Tìm kiếm(Kem, "", Hương vị) Bởi vì cụm từ tìm kiếm trống, nên hàm trả về tất cả bản ghi. Tìm kiếm tất cả các mục.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Tìm kiếm bản ghi có Hương vị bằng "Sô cô la", trong đó có một bản ghi. Khi tìm thấy bản ghi đầu tiên, hàm sẽ trả về Quantity của bản ghi này. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Tìm kiếm bản ghi có Quantity lớn hơn 150 (có nhiều). Khi tìm thấy bản ghi đầu tiên (Flavor "Vanilla"), hàm sẽ trả về tổng các cột QuantityOnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Tìm kiếm bản ghi có Flavor là "Pistachio" (không có). Vì không tìm thấy kết quả khớp, nên Lookup trả về kết quả trống. blank
LookUp( IceCream, Flavor = "Vanilla" ) Tìm kiếm bản ghi có Hương vị bằng "Vanilla", trong đó có một bản ghi. Vì không có công thức giảm, nên hàm sẽ trả về toàn bộ bản ghi. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Lọc với các cột lựa chọn

Ví dụ sau sử dụng bảng Tài khoản trong Microsoft Dataverse làm nguồn dữ liệu. Ví dụ này cho thấy cách Lọc danh sách tài khoản dựa trên các giá trị điều khiển Hộp tổ hợp được chọn:

Hướng dẫn chi tiết

  1. Mở ứng dụng trống.

  2. Thêm màn hình mới bằng cách chọn tùy chọn Màn hình mới.

  3. Trên tab Chèn, chọn Thư viện rồi chọn Dọc.

  4. Trên tab Thuộc tính của ngăn bên phải, hãy mở Nguồn dữ liệu rồi chọn Tài khoản.

  5. (Không bắt buộc) Trong danh sách Bố cục, chọn các tùy chọn khác nhau.

  6. Trên tab Chèn, hãy chọn Đầu vào rồi chọn Hộp tổ hợp. Lặp lại bước này để thêm hai bộ điều khiển hộp tổ hợp khác.

  7. Đối với mỗi bộ điều khiển hộp tổ hợp, trên tab Thuộc tính của ngăn bên phải, hãy mở Nguồn dữ liệu rồi chọn Tài khoản. Chọn Chỉnh sửa bên cạnh tùy chọn Trường, rồi chọn các giá trị Văn bản chínhSearchField. Văn bản chính phải là cột lựa chọn mà bạn muốn thêm vào hộp tổ hợp. Lặp lại bước này đối với hai bộ điều khiển hộp tổ hợp khác.

    Đặt giá trị hộp tổ hợp.

  8. Bây giờ, hãy chọn bộ điều khiển Thư viện và thiết lập thuộc tính Mục cho công thức sau:

    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'))
    

    Tài khoản nguồn dữ liệu.

Trải nghiệm người dùng Tìm kiếm

Dưới đây là các ví dụ sử dụng nguồn dữ liệuIceCream:

Trong nhiều ứng dụng, bạn có thể nhập một hoặc nhiều ký tự vào hộp tìm kiếm để lọc danh sách các bản ghi trong một tập hợp dữ liệu lớn. Khi bạn nhập, danh sách chỉ hiển thị những bản ghi khớp với tiêu chí tìm kiếm.

Các ví dụ trong phần còn lại của bài viết này hiển thị kết quả tìm kiếm một danh sách có tên Khách hàng, chứa dữ liệu này:

Tìm kiếm khách hàng.

Để tạo nguồn dữ liệu này dưới dạng bộ sưu tập, hãy tạo một công cụ điều khiển Button (Nút) và đặt thuộc tính OnSelect theo công thức sau:

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" }) )

Như trong ví dụ này, bạn có thể hiển thị danh sách các bản ghi trong công cụ điều khiển Gallery (Thư viện) ở dưới cùng của một màn hình. Gần đầu màn hình, bạn có thể thêm một công cụ điều khiển Text input (Nhập văn bản) có tên là SearchInput, để người dùng có thể chỉ định bản ghi nào họ quan tâm.

Tìm kiếm bằng cách sử dụng đầu vào tìm kiếm.

Khi người dùng nhập các ký tự vào SearchInput, kết quả trong thư viện được lọc tự động. Trong trường hợp này, thư viện được cấu hình để hiển thị các bản ghi mà tên của khách hàng (không phải tên của công ty) bắt đầu bằng chuỗi ký tự trong SearchInput. Nếu người dùng nhập co vào hộp tìm kiếm, thư viện sẽ hiển thị các kết quả sau:

Tìm kiếm bằng bắt đầu bằng.

Để lọc dựa trên cột Name (Tên), hãy đặt thuộc tính Items (Mục) của công cụ điều khiển thư viện theo một trong các công thức sau:

Công thức Mô tả Kết quả
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó chuỗi tìm kiếm xuất hiện ở đầu cột Name (Tên). Kiểm tra này phân biệt chữ hoa chữ thường. Nếu người dùng nhập co vào hộp tìm kiếm, thư viện hiển thị Colleen JonesCole Miller. Thư viện không hiển thị Mike Collins do cột Name (Tên) cho bản ghi đó không bắt đầu bằng chuỗi tìm kiếm. Lọc bằng bắt đầu bằng.
Filter( Customers, SearchInput.Text in Name ) Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó chuỗi tìm kiếm xuất hiện ở mọi nơi trong cột Name (Tên). Kiểm tra này phân biệt chữ hoa chữ thường. Nếu người dùng nhập co vào hộp tìm kiếm, thư viện sẽ hiển thị Colleen Jones,Cole Miller,Mike Collins vì chuỗi tìm kiếm xuất hiện ở vị trí nào đó trong cột Name (Tên) của tất cả những bản ghi như vậy. Lọc với đầu vào tìm kiếm.
Tìm kiếm(Khách hàng, SearchInput.Text, Tên) Tương tự như việc sử dụng toán tử in, hàm Search tìm kiếm một kết quả trùng khớp ở vị trí bất kỳ trong cột Name (Tên) của mỗi bản ghi. Bạn phải đặt tên cột trong dấu ngoặc kép. Tìm kiếm khách hàng.

Bạn có thể mở rộng lệnh tìm kiếm của mình để bao gồm cột Công ty và cột Tên:

Công thức Mô tả Kết quả
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó cột Name (Tên) hoặc cột Company (Công ty) bắt đầu bằng chuỗi tìm kiếm (ví dụ: co). Toán tử ||true nếu hàm StartsWithtrue. Lọc khách hàng bắt đầu bằng.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó cột Name (Tên) hoặc cột Company (Công ty) chứa chuỗi tìm kiếm (ví dụ: co) ở vị trí bất kỳ trong nguồn dữ liệu đó. Lọc đầu vào tìm kiếm của khách hàng.
Tìm kiếm(Khách hàng, SearchInput.Text, Tên, Công ty) Tương tự như việc sử dụng toán tử in, hàm Search tìm kiếm nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó cột Name (Tên) hoặc cột Company (Công ty) chứa chuỗi tìm kiếm (ví dụ: co) ở vị trí bất kỳ trong nguồn dữ liệu đó. Hàm Search dễ đọc và viết hơn hàm Filter nếu bạn muốn chỉ định nhiều cột và nhiều toán tử in.  Tìm kiếm khách hàng bằng đầu vào tìm kiếm.