Phần này mô tả cách tạo bộ lọc trong công thức Biểu thức Phân tích Dữ liệu (DAX). Bạn có thể tạo bộ lọc bên trong công thức, để hạn chế giá trị khỏi dữ liệu nguồn được sử dụng trong các phép tính. Bạn thực hiện điều này bằng cách xác định bảng làm đầu vào cho công thức, rồi xác định biểu thức lọc. Biểu thức lọc bạn cung cấp được sử dụng để truy vấn dữ liệu và chỉ trả về một tập con của dữ liệu nguồn. Bộ lọc được áp dụng tự động mỗi khi bạn cập nhật kết quả của công thức, tùy thuộc vào ngữ cảnh hiện tại trong dữ liệu của bạn.

Trong bài viết này

Tạo một Bộ lọc trên một Bảng được dùng trong một Công thức

Bạn có thể áp dụng bộ lọc trong các công thức lấy bảng làm dữ liệu đầu vào. Thay vì nhập tên bảng, bạn sử dụng hàm FILTER để xác định một tập hợp con các hàng từ bảng đã xác định. Tập hợp con đó sau đó được chuyển đến một hàm khác, cho các phép toán như tổng hợp tùy chỉnh.

Ví dụ: giả sử bạn có một bảng dữ liệu chứa thông tin đơn hàng về các đại lý bán lẻ và bạn muốn tính toán số lượng từng nhà bán lại được bán. Tuy nhiên, bạn muốn hiển thị doanh số chỉ dành cho những đại lý bán lẻ đã bán nhiều đơn vị sản phẩm giá trị cao hơn của bạn. Công thức sau đây, dựa trên sổ làm việc mẫu DAX, hiển thị một ví dụ về cách bạn có thể tạo phép tính này bằng bộ lọc:

=SUMX(
     FILTER ('ResellerSales_USD', ''ResellerSales_USD'[Số lượng] > 5 &&
     'ResellerSales_USD'[ProductStandardCost_USD] 100> 100),
     'ResellerSales_USD'[SalesAmt]
     )

  • Phần đầu tiên của công thức xác định một trong các hàm Power Pivot tổng hợp, theo đó lấy bảng làm đối số. Hàm SUMX tính tổng trên một bảng.

  • Phần thứ hai của công thức, bạn FILTER(table, expression),cho biết bạn SUMX dữ liệu nào cần dùng. SUMX yêu cầu bảng hoặc biểu thức có kết quả là bảng. Tại đây, thay vì sử dụng tất cả dữ liệu trong bảng, bạn sử dụng hàm FILTER để chỉ định hàng nào trong bảng được sử dụng.

    Biểu thức bộ lọc có hai phần: phần đầu tiên đặt tên bảng mà bộ lọc áp dụng. Phần thứ hai xác định một biểu thức để sử dụng làm điều kiện lọc. Trong trường hợp này, bạn đang lọc trên các đại lý bán lẻ đã bán được hơn 5 đơn vị và sản phẩm có chi phí hơn $100. Toán tử, &&, là một toán tử AND lô-gic, cho biết rằng cả hai phần của điều kiện phải đúng đối với hàng thuộc tập hợp con đã lọc.

  • Phần thứ ba của công thức cho người SUMX biết cần tính tổng các giá trị nào. Trong trường hợp này, bạn chỉ sử dụng số tiền bán hàng.

    Lưu ý rằng các hàm như FILTER, trả về bảng, không bao giờ trả về trực tiếp bảng hoặc hàng nhưng luôn được nhúng vào hàm khác. Để biết thêm thông tin về FILTER và các hàm khác được sử dụng để lọc, bao gồm các ví dụ khác, hãy xem Hàm Lọc (DAX).

    Lưu ý: Biểu thức bộ lọc bị ảnh hưởng bởi ngữ cảnh mà biểu thức được sử dụng. Ví dụ, nếu bạn dùng một bộ lọc trong một số đo và số đo được dùng trong PivotTable hoặc PivotChart, thì tập hợp con của dữ liệu được trả về có thể bị ảnh hưởng bởi các bộ lọc bổ sung hoặc Slicer mà người dùng đã áp dụng trong PivotTable. Để biết thêm thông tin về ngữ cảnh, hãy xem Ngữ cảnh trong Công thức DAX.

Bộ lọc Loại bỏ Trùng lặp

Ngoài việc lọc các giá trị cụ thể, bạn có thể trả về một tập hợp giá trị duy nhất từ một bảng hoặc cột khác. Điều này có thể hữu ích khi bạn muốn đếm số lượng giá trị duy nhất trong một cột hoặc sử dụng danh sách giá trị duy nhất cho các thao tác khác. DAX cung cấp hai hàm để trả về các giá trị riêng biệt: Hàm DISTINCT vàHàm VALUES.

  • Hàm DISTINCT kiểm tra một cột đơn mà bạn chỉ định làm đối số cho hàm và trả về một cột mới chỉ chứa các giá trị riêng biệt.

  • Hàm VALUES cũng trả về một danh sách các giá trị duy nhất nhưng cũng trả về phần viên Không xác định. Điều này rất hữu ích khi bạn sử dụng các giá trị từ hai bảng được nối bằng một mối quan hệ và thiếu một giá trị trong một bảng và hiện diện trong bảng kia. Để biết thêm thông tin về phần từ Không xác định, hãy xem Ngữ cảnh trong Công thức DAX.

Cả hai hàm này đều trả về toàn bộ một cột giá trị; do đó, bạn sử dụng các hàm để có được danh sách giá trị sau đó được chuyển sang hàm khác. Ví dụ, bạn có thể dùng công thức sau đây để có được danh sách các sản phẩm riêng biệt mà một người bán lại cụ thể bán, bằng cách sử dụng khóa sản phẩm duy nhất, sau đó đếm các sản phẩm trong danh sách đó bằng cách sử dụng hàm COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

Đầu trang

Ngữ cảnh Ảnh hưởng đến Bộ lọc như thế nào

Khi bạn thêm công thức DAX vào PivotTable hoặc PivotChart Công thức, kết quả của công thức có thể bị ảnh hưởng bởi ngữ cảnh. Nếu bạn đang làm việc trong bảng Power Pivot thì ngữ cảnh là hàng hiện tại và các giá trị của hàng đó. Nếu bạn đang làm việc trong PivotTable hoặc PivotChart thì ngữ cảnh có nghĩa là tập hợp hoặc tập hợp con dữ liệu được xác định bởi các thao tác như cắt cắt hoặc lọc. Thiết kế của PivotTable hoặc PivotChart áp đặt ngữ cảnh của riêng mình. Ví dụ, nếu bạn tạo PivotTable nhóm doanh số theo khu vực và năm, thì chỉ dữ liệu áp dụng cho các khu vực và năm đó mới xuất hiện trong PivotTable. Do đó, mọi số đo mà bạn thêm vào PivotTable đều được tính toán trong ngữ cảnh của đầu đề cột và hàng cùng với bất kỳ bộ lọc nào trong công thức đo.

Để biết thêm thông tin, hãy xem Ngữ cảnh trong Công thức DAX.

Đầu trang

Loại bỏ Bộ lọc

Khi làm việc với các công thức phức tạp, bạn có thể muốn biết chính xác bộ lọc hiện tại là gì hoặc bạn có thể muốn sửa đổi phần bộ lọc của công thức. DAX cung cấp một số hàm cho phép bạn loại bỏ bộ lọc và để kiểm soát những cột nào được giữ lại như một phần của ngữ cảnh bộ lọc hiện tại. Phần này cung cấp thông tin tổng quan về ảnh hưởng của những hàm này đối với kết quả trong công thức.

Ghi đè Tất cả Bộ lọc bằng Hàm ALL

Bạn có thể dùng hàm ALL để ghi đè lên bất kỳ bộ lọc nào đã được áp dụng trước đó và trả tất cả các hàng trong bảng về hàm đang thực hiện phép toán tổng hợp hoặc thao tác khác. Nếu bạn sử dụng một hoặc nhiều cột, thay vì một bảng, làm đối số cho ALL, hàm ALL sẽ trả về tất cả các hàng, bỏ qua mọi bộ lọc ngữ cảnh.

Lưu ý: Nếu bạn quen thuộc với thuật ngữ cơ sở dữ liệu quan hệ, bạn có thể nghĩ rằng ALL tự nhiên nối ngoài bên trái của tất cả các bảng.

Ví dụ: giả sử bạn có các bảng, Doanh số và Sản phẩm và bạn muốn tạo một công thức để tính tổng doanh thu cho sản phẩm hiện tại chia cho doanh thu của tất cả các sản phẩm. Bạn phải cân nhắc đến thực tế rằng, nếu công thức được sử dụng trong một số đo, thì người dùng PivotTable có thể đang sử dụng Slicer để lọc một sản phẩm cụ thể, với tên sản phẩm trên các hàng. Do đó, để có được giá trị thực tế của denominator, bất kể bộ lọc hay Slicer nào, bạn phải thêm hàm ALL để ghi đè lên bất kỳ bộ lọc nào. Công thức sau đây là một ví dụ về cách sử dụng ALL để ghi đè hiệu ứng của các bộ lọc trước đó:

=SUM (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales, ALL(Products)))

  • Phần đầu tiên của công thức, SUM (Sales[Amount]), tính toán tử số.

  • Tổng sẽ tính đến ngữ cảnh hiện tại, nghĩa là nếu bạn thêm công thức vào cột được tính, ngữ cảnh hàng sẽ được áp dụng và nếu bạn thêm công thức vào PivotTable làm số đo thì mọi bộ lọc được áp dụng trong PivotTable (ngữ cảnh lọc) đều được áp dụng.

  • Phần thứ hai của công thức, tính toán denominator. Hàm ALL sẽ ghi đè mọi bộ lọc có thể được áp dụng cho Products bảng.

Để biết thêm thông tin, bao gồm các ví dụ chi tiết, hãy xem Hàm ALL.

Ghi đè Bộ lọc Cụ thể bằng Hàm ALLEXCEPT

Hàm ALLEXCEPT cũng ghi đè lên các bộ lọc hiện có, nhưng bạn có thể chỉ định rằng nên bảo toàn một số bộ lọc hiện có. Các cột mà bạn đặt tên làm đối số cho hàm ALLEXCEPT xác định những cột nào sẽ tiếp tục được lọc. Nếu bạn muốn ghi đè lên bộ lọc từ hầu hết các cột nhưng không phải tất cả, ALLEXCEPT sẽ thuận tiện hơn ALL. Hàm ALLEXCEPT đặc biệt hữu ích khi bạn tạo PivotTable có thể được lọc trên nhiều cột khác nhau và bạn muốn kiểm soát các giá trị được sử dụng trong công thức. Để biết thêm thông tin, trong đó có ví dụ chi tiết về cách sử dụng ALLEXCEPT trong PivotTable, hãy xem Hàm ALLEXCEPT.

Đầu trang

Bạn cần thêm trợ giúp?

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft dùng nội bộ

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?

Điều gì ảnh hưởng đến trải nghiệm của bạn?

Bạn có góp ý gì thêm không? (Không bắt buộc)

Cảm ơn phản hồi của bạn!

×