Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Áp dụng cho: Ứng dụng
Canvas Copilot Studio Desktop
dòng
ứng dụng dựa trên mô
hình Power Platform CLI Chức năng
đảo dữ liệu
Power Pages
Tìm một hoặc nhiều bản ghi trong một bảng.
Xem video này để tìm hiểu cách sử dụng Filter, Searchvà các LookUp hàm:
Lưu ý
Các lệnh pac PAC pac power-fx không hỗ trợ hàm Search .
Sự miêu tả
Hàm Filter tìm các bản ghi trong bảng thỏa mãn công thức. Dùng Filter để tìm một tập hợp các bản ghi khớp với một hoặc nhiều tiêu chí và loại bỏ những bản ghi không khớp.
Hàm LookUp tìm bản ghi đầu tiên trong bảng thỏa mãn công thức. Dùng LookUp để tìm một bản ghi khớ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ử in và exactin để 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 này tìm các bản ghi trong bảng có chứa một chuỗi ở một trong các cột của chúng. 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 Filter giống như LookUp, hàm Search sử dụng một chuỗi đơn để khớp thay vì công thức.
Filter và Search trả về một bảng có chứa các cột giống như bảng gốc và các bản ghi khớp với tiêu chí. 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 bản ghi xuống một giá trị duy nhất. Nếu không tìm thấy bản ghi nào và Filter trả Search về bảng trống và trả về LookUpgiá trị trống.
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. Filter, Searchvà LookUp 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ỗ. Filter và sắp xếp các hàm sẽ hoạt động trên một tập hợp các bản ghi bị 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(Bảng*, Công thức 1 [, *Công thức2*, ... ] )
- Bảng - Bắt buộc. Bảng sẽ tìm kiếm.
- Công thức - 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*, ... ] )
- Bảng - 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.
- Cột - 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, Search tên cột của hàm đã được xác định bằng một 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 lô-gic. Ví dụ: tên lô-gic với "cr43e_name" dấu ngoặc kép được dùng thay cho tên hiển thị Tên không có dấu ngoặc kép. Đối với nguồn dữ liệu SharePoint và Excel có chứa tên cột có khoảng trắng, mỗi khoảng trắng đã được xác định "_x0020_"với , ví dụ "Column Name" như "Column_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(Bảng*, Công thức [, *ReductionFormula* ] )
- Bảng - 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.
- Công thức - 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.
- Công thức rút gọn - Tùy chọn. 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:
| Công thức | Sự miêu tả | Kết quả |
|---|---|---|
Filter(IceCream, OnOrder > 0) |
Trả về các bản ghi trong đó OnOrder lớn hơn 0. |
|
Filter(IceCream, Quantity + OnOrder > 225) |
Trả về các bản ghi trong đó tổng của các cột Quantity và OnOrder lớn hơn 225. |
|
Filter(IceCream, "chocolate" in Lower(Flavor )) |
Trả về bản ghi có từ "chocolate" xuất hiện trong tên Flavor , độc lập với chữ hoa hoặc chữ thường. |
|
Filter(IceCream, Quantity < 10 && OnOrder < 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. |
|
Search(IceCream, "choc", Flavor) |
Trả về bản ghi có chuỗi "choc" xuất hiện trong tên Flavor , độc lập với chữ hoa hoặc chữ thường. |
|
Search(IceCream, "", Flavor) |
Bởi vì cụm từ tìm kiếm trống, nên hàm trả về tất cả bản ghi. |
|
LookUp(IceCream, Flavor = "Chocolate", Quantity) |
Tìm kiếm bản ghi có Flavor bằng "Chocolate", 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). Đối với bản ghi đầu tiên được tìm thấy, là "Vanilla" Flavor, trả về tổng các cột Quantityvà OnOrder . | 250 |
LookUp(IceCream, Flavor = "Pistachio", OnOrder) |
Tìm kiếm bản ghi có Flavor bằng "Pistachio", trong đó không có bản ghi nào. Vì không tìm thấy kết quả khớp, nên Lookup trả về kết quả trống. | trống |
LookUp(IceCream, Flavor = "Vanilla") |
Tìm kiếm bản ghi có Flavor 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", Số lượng: 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 liệt Filter kê các tài khoản dựa trên các giá trị điều khiển hộp tổ hợp đã chọn:
Hướng dẫn chi tiết
Mở ứng dụng trống.
Thêm màn hình mới bằng cách chọn tùy chọn Màn hình mới.
Trên tab Chèn, chọn Thư viện rồi chọn Dọc.
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.
(Không bắt buộc) Trong danh sách Bố cục, chọn các tùy chọn khác nhau.
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.
Đố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ính và SearchField. 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.
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'))
Search trải nghiệm người dùng
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 trong danh sách có tên Khách hàng có chứa dữ liệu này:
Để 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.
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:
Để 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 | Sự miêu 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 Jones và Cole 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. |
|
| 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, và 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. |
|
| Search(Customers, SearchInput.Text, Name) | Tương tự như sử dụng toán tử trong , hàm Search sẽ tìm kiếm một kết quả khớp ở bất kỳ đâu trong cột 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. |
|
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 | Sự miêu 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ử || là true nếu hàm StartsWith là true. |
|
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 đó. |
|
Search(Customers, SearchInput.Text, Name, Company) |
Tương tự như sử dụng toán tử trong, Search hàm sẽ tìm kiếm các bản ghi trong đó cột Tên hoặc cột Công ty chứa chuỗi tìm kiếm (ví dụ: co) ở bất kỳ đâu bên trong nó. Hàm Search này dễ đọc và viết hơn là nếu Filter bạn muốn xác định nhiều cột và nhiều toán tử. |
|