Lọc Dữ liệu trong Công thức DAX

Lưu ý:  Chúng tôi muốn cung cấp cho bạn nội dung trợ giúp mới nhất ở chính ngôn ngữ của bạn, nhanh nhất có thể. Trang này được dịch tự động nên có thể chứa các lỗi về ngữ pháp hoặc nội dung không chính xác. Mục đích của chúng tôi là khiến nội dung này trở nên hữu ích với bạn. Vui lòng cho chúng tôi biết ở cuối trang này rằng thông tin có hữu ích với bạn không? Dưới đây là bài viết bằng Tiếng Anh để bạn tham khảo dễ hơn.

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 trong công thức, để hạn chế các giá trị từ nguồn dữ liệu được dùng trong 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 một đầu công thức, và sau đó xác định một biểu thức bộ lọc. Biểu thức bộ lọc bạn cung cấp được dùng để truy vấn dữ liệu và trả về chỉ một tập hợp con 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 theo ngữ cảnh hiện tại của 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 sử dụng trong công thức

Bộ lọc đó loại bỏ các mục trùng lặp

Làm thế nào ngữ cảnh ảnh hưởng đến bộ lọc

Xóa các bộ lọc

Ghi đè tất cả các bộ lọc bằng hàm ALL

Ghi đè các bộ lọc cụ thể bằng hàm ALLEXCEPT

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

Bạn có thể áp dụng các bộ lọc trong các công thức lấy một bảng làm dữ liệu nhập. Thay vì nhập tên bảng, bạn sử dụng hàm FILTER để đặt một tập hợp phụ các hàng từ bảng đã cho. Sau đó tập hợp phụ đó được đưa qua một hàm khác, để thực hiện các thao tác như tổng hợp tùy chỉnh.

Ví dụ như, giả sử bạn có một bảng dữ liệu có thông tin đơn hàng về các nhà bán lại và bạn muốn tính số tiền mỗi nhà bán lại đã bán. Tuy nhiên, bạn muốn hiển thị số tiền doanh thu của chỉ những nhà bán lại nào đã bán nhiều đơn vị các sản phẩm có 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, minh họa một ví dụ về cách bạn có thể lập phép tính này bằng cách sử dụng một bộ lọc:

= SUMX (
lọc ('ResellerSales_USD', 'ResellerSales_USD' [số lượng] > 5 & &
'ResellerSales_USD' [ProductStandardCost_USD] > 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 tính gộp Power Pivot , nhận một bảng làm đối số. SUMX tính tổng một bảng.

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

    Biểu thức lọc có hai phần: phần đầu tiên 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 bán lại người bán được hơn 5 đơn vị và sản phẩm có giá hơn $100. Toán tử, & &, một toán tử và lô-gic, cho biết rằng cả hai phần điều kiện phải đúng cho hàng liên tập con đã lọc.

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

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

    Lưu ý: Biểu thức bộ lọc sẽ bị ảnh hưởng bởi ngữ cảnh mà nó được sử dụng. Ví dụ, nếu bạn sử dụng một bộ lọc trong một số đo và thước đo được sử dụng trong PivotTable hoặc PivotChart, tập con của dữ liệu được trả về có thể có bị ảnh hưởng bởi bộ lọc bổ sung hoặc slicer mà người dùng có á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.

Các Bộ lọc Xóa các Nội dung Trùng lặp

Ngoài việc lọc cho giá trị cụ thể, bạn có thể trả về tập giá trị duy nhất 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 các giá trị duy nhất trong một cột, hoặc dùng danh sách các giá trị duy nhất cho các thao tác khác. DAX cung cấp hai hàm để trả về giá trị khác biệt: hàm DISTINCTgiá trị hàm.

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

  • Giá trị hàm cũng trả về một danh sách các giá trị duy nhất, nhưng cũng trả về phần tử không xác định. Điều này rất hữu ích khi bạn sử dụng giá trị từ hai bảng được nối bằng một mối quan hệ, và một giá trị bị thiếu trong một bảng và trình bày trong số các. Để 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 trả lại toàn bộ cột giá trị; do đó, bạn sử dụng các hàm này để có được một danh sách các giá trị sau đó đi qua một hàm khác. Ví dụ như, bạn có thể sử dụng công thức sau đây để có được một danh sách các sản phẩm riêng biệt được bán bởi một nhà bán lại cụ thể, sử dụng mã sản phẩm duy nhất và sau đó đếm 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 thế nào đến các Bộ lọc

Khi bạn thêm công thức DAX tới PivotTable hoặc PivotChart, kết quả của công thức có thể có bị ảnh hưởng bởi ngữ cảnh. Nếu bạn đang làm việc trong một bảng Power Pivot , ngữ cảnh là hàng hiện tại và giá trị của nó. Nếu bạn đang làm việc trong một PivotTable hoặc PivotChart, 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 hoạt động như cắt hoặc lọc. Thiết kế của PivotTable hoặc PivotChart cũng áp dụng ngữ cảnh của chính nó. Ví dụ, nếu bạn tạo một PivotTable nhóm doanh số theo vùng và năm, chỉ có dữ liệu để áp dụng các khu vực và năm sẽ xuất hiện trong PivotTable. Do đó các số đo mà bạn thêm vào PivotTable đượ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 trong công thức số đo.

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

Đầu trang

Xóa Các 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 các bộ lọc hiện tại là gì hoặc bạn có thể muốn điều chỉnh phần bộ lọc của công thức. DAX cung cấp vài hàm cho phép bạn xóa các bộ lọc và kiểm soát các 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 khái quát về cách các hàm này ảnh hưởng đến kết quả trong một 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 được áp dụng trước đó, và trả về tất cả các hàng trong bảng để hàm đang thực hiện thao tác tổng hợp hoặc khác. Nếu bạn sử dụng một hoặc nhiều cột, thay vì một bảng, như là đối số ALL, hàm ALL 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 thuật ngữ cơ sở dữ liệu quan hệ, bạn có thể nghĩ đến ALL như tạo ra sự kết hợp bên ngoài bên trái tự nhiên của tất cả các bảng.

Ví dụ như, giả sử bạn có các bảng, Doanh thu và Sản phẩm và bạn muốn tạo một công thức sẽ tính tổng doanh thu đối với sản phẩm hiện tại chia cho doanh thu đối với tất cả sản phẩm. Bạn phải tính đến việc là nếu công thức đó được sử dụng trong một số đo, người dùng PivotTable có thể sử dụng Slicer để lọc một sản phẩm cụ thể, bằng tên sản phẩm trên các hàng. Do đó, để có được giá trị đúng của mẫu số bất kể có bất kỳ bộ lọc hay Slicer nào, bạn phải thêm hàm ALL để ghi đè 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 hàm ALL để ghi đè hiệu ứng của các bộ lọc trước đó:

= SUM (doanh số [số tiền]) / SUMX (Sales [số tiền], bộ lọc (doanh số, ALL(Products)))

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

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

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

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

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

Hàm ALLEXCEPT cũng sẽ ghi đè các bộ lọc hiện có, nhưng bạn có thể chỉ rõ rằng một số các bộ lọc hiện có sẽ được giữ nguyên. Các cột bạn đã đặt tên là đối số cho hàm ALLEXCEPT xác định cột nào sẽ tiếp tục được lọc. Nếu bạn muốn ghi đè các bộ lọc từ hầu hết các cột nhưng không phải tất cả, ALLEXCEPT thuận tiện hơn so với tất cả. Hàm ALLEXCEPT đặc biệt hữu ích khi bạn đang tạo Pivottable vốn 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 dùng trong công thức. Để biết thêm thông tin, bao gồm một ví dụ chi tiết về cách sử dụng ALLEXCEPT trong PivotTable, hãy xem Hàm ALLEXCEPT.

Đầu trang

Phát triển kỹ năng Office 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 Người dùng nội bộ Office

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

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

Cảm ơn bạn đã phản hồi! Để trợ giúp tốt hơn, có lẽ chúng tôi sẽ kết nối bạn với một trong những nhân viên hỗ trợ Office của chúng tôi.

×