Ngữ cảnh 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.

Ngữ cảnh cho phép bạn thực hiện phân tích linh hoạt trong đó kết quả của một công thức có thể thay đổi để phản ánh hàng hiện tại hoặc lựa chọn ô và cả bất kỳ dữ liệu nào liên quan. Việc hiểu ngữ cảnh và sử dụng ngữ cảnh hiệu quả là rất quan trọng để xây dựng các công thức có hiệu suất cao, phân tích linh hoạt và để khắc phục vấn đề trong công thức.

Phần này xác định các loại ngữ cảnh: ngữ cảnh hàng, ngữ cảnh truy vấn, và bộ lọc ngữ cảnh. Giải thích về cách ngữ cảnh được đánh giá cho công thức trong cột được tính toán và trong Pivottable.

Phần cuối của bài viết này cung cấp liên kết tới các ví dụ chi tiết minh họa cách kết quả công thức thay đổi theo ngữ cảnh.

Tìm hiểu về Ngữ cảnh

Công thức trong Power Pivot có thể có bị ảnh hưởng bởi bộ lọc được áp dụng trong PivotTable, bằng mối quan hệ giữa các bảng và bộ lọc được dùng trong công thức. Ngữ cảnh là gì giúp bạn thực hiện phân tích linh động. Tìm hiểu về ngữ cảnh là quan trọng để xây dựng và để khắc phục sự cố công thức.

Có là các loại ngữ cảnh: ngữ cảnh hàng, ngữ cảnh truy vấn, và bộ lọc ngữ cảnh.

Ngữ cảnh hàng có thể được dùng như "hàng hiện tại." Nếu bạn đã tạo một cột được tính toán, ngữ cảnh hàng bao gồm các giá trị trong mỗi hàng cá nhân và các giá trị trong cột liên quan đến hàng hiện tại. Cũng là một số hàm (hàm EARLIERhàm EARLIEST) mà có được một giá trị từ hàng hiện tại và sau đó sử dụng giá trị đó trong khi thực hiện một thao tác qua toàn bộ một bảng.

Ngữ cảnh truy vấn tham chiếu tới tập hợp con dữ liệu được tạo hoàn toàn cho từng ô trong một PivotTable, tùy thuộc vào tiêu đề hàng và cột.

Ngữ cảnh bộ lọc là đặt giá trị được phép trong mỗi cột, dựa trên ràng buộc bộ lọc mà đã được áp dụng cho hàng hoặc mà được xác định bởi bộ lọc biểu thức trong công thức.

Đầu trang

Ngữ cảnh Hàng

Nếu bạn tạo công thức trong một cột được tính toán, ngữ cảnh hàng cho công thức bao gồm các giá trị từ tất cả các cột trong hàng hiện tại. Nếu bảng liên quan đến bảng khác, nội dung cũng bao gồm tất cả các giá trị từ bảng đó khác liên quan đến hàng hiện tại.

Ví dụ, giả sử bạn tạo một cột được tính toán, = [cước phí] + [thuế],

, cột này cộng hai cột thuộc cùng một bảng lại với nhau. Công thức này hoạt động giống như các công thức trong một bảng Excel, bảng này tự động tham chiếu các giá trị từ cùng hàng. Xin lưu ý rằng bảng khác với phạm vi: bạn không thể tham chiếu một giá trị từ hàng trước hàng hiện tại bằng cách sử dụng ký hiệu phạm vi và bạn không thể tham chiếu bất kỳ giá trị đơn lẻ tùy ý nào trong một bảng hoặc ô. Bạn phải luôn làm việc với bảng và cột.

Ngữ cảnh hàng tự động theo dõi mối quan hệ giữa các bảng để xác định hàng nào trong bảng liên quan liên kết với hàng hiện tại.

Ví dụ: công thức sau đây sử dụng hàm RELATED để tìm nạp giá trị thuế từ một bảng liên quan, dựa vào vùng mà đơn đặt hàng được chuyển tới. Giá trị thuế được xác định bằng cách sử dụng giá trị cho vùng trong bảng hiện tại, tra cứu vùng trong bảng liên quan rồi nhận thuế suất cho vùng đó từ bảng liên quan.

= [Cước phí] + RELATED('Region'[TaxRate])

Công thức này chỉ nhận thuế suất cho vùng hiện tại, từ bảng Vùng. Bạn không cần biết hoặc chỉ định khóa kết nối các bảng.

Ngữ cảnh Nhiều Hàng

Ngoài ra, DAX bao gồm các hàm lặp lại các phép tính qua một bảng. Các hàm này có thể có nhiều hàng hiện tại và ngữ cảnh hàng hiện tại. Trong thuật ngữ lập trình, bạn có thể tạo công thức đệ quy qua vòng lặp bên trong và bên ngoài.

Ví dụ, giả sử sổ làm việc chứa một bảng sản phẩm và bảng doanh số . Bạn có thể muốn thông qua toàn bộ bảng doanh số, đây là đầy đủ giao dịch có liên quan đến nhiều sản phẩm, và tìm số lượng lớn nhất sắp xếp thứ tự cho từng sản phẩm trong bất kỳ một giao dịch.

Trong Excel, phép tính này yêu cầu một loạt các bản tóm tắt trung gian phải được xây dựng lại nếu dữ liệu thay đổi. Nếu bạn là người dùng Excel cao cấp, bạn có thể xây dựng công thức mảng thực hiện công việc này. Thay vào đó, trong cơ sở dữ liệu quan hệ, bạn có thể viết các lựa chọn riêng xếp lồng.

Tuy nhiên, với DAX bạn có thể xây dựng một công thức đơn lẻ trả về giá trị đúng và kết quả được cập nhật tự động bất cứ khi nào bạn thêm dữ liệu vào bảng.

=Maxx(Filter(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Để biết hướng dẫn chi tiết về công thức này, hãy xem hàm EARLIER.

Nói ngắn gọn, hàm EARLIER lưu trữ ngữ cảnh hàng từ tác vụ đi trước tác vụ hiện tại. Hàm này luôn lưu trữ trong bộ nhớ hai tập hợp ngữ cảnh: một tập hợp ngữ cảnh biểu thị hàng hiện tại cho vòng lặp bên trong của công thức và một tập hợp ngữ cảnh khác biểu thị hàng hiện tại cho vòng lặp bên ngoài của công thức. DAX tự động cung cấp giá trị giữa hai vòng lặp để bạn có thể tạo tập hợp phức.

Đầu trang

Ngữ cảnh Truy vấn

Ngữ cảnh truy vấn tham chiếu tới tập hợp con dữ liệu được truy xuất hoàn toàn cho công thức. Khi bạn thả một thước đo hoặc trường giá trị vào một ô trong một PivotTable, công cụ Power Pivot sẽ kiểm tra các tiêu đề hàng và cột, slicer và bộ lọc báo cáo để xác định ngữ cảnh. Sau đó, Power Pivot làm cho các phép tính cần thiết để nhập từng ô trong PivotTable. Tập hợp dữ liệu được truy xuất là ngữ cảnh truy vấn cho mỗi ô.

Do ngữ cảnh có thể thay đổi tùy thuộc vào vị trí mà bạn đặt công thức, kết quả của công thức cũng thay đổi tùy thuộc vào việc bạn có sử dụng công thức trong PivotTable với nhiều nhóm và bộ lọc hay trong một cột được tính không có bộ lọc nào và ngữ cảnh rất ít.

Ví dụ, giả sử bạn tạo công thức đơn giản này tính tổng các giá trị trong cột Profit của table:=SUM('Sales'[Profit]) doanh số .

Nếu bạn sử dụng công thức này trong một cột được tính toán trong bảng Sales , kết quả cho công thức sẽ giống nhau cho toàn bộ bảng, vì ngữ cảnh truy vấn cho công thức luôn là toàn bộ tập dữ liệu của bảng Sales . Kết quả của bạn sẽ có lợi nhuận cho tất cả các vùng, tất cả sản phẩm, tất cả năm, vân vân.

Tuy nhiên, thông thường bạn không muốn nhìn thấy cùng một kết quả hàng trăm lần mà thay vào đó bạn muốn nhận lợi nhuận cho một năm cụ thể, một quốc gia hay một vùng cụ thể, một sản phẩm cụ thể hoặc kết hợp các tiêu chí này rồi nhận tổng cuối.

Trong PivotTable, thật dễ dàng để thay đổi ngữ cảnh bằng cách thêm hoặc loại bỏ tiêu đề cột và hàng và bằng cách thêm hoặc loại bỏ slicer. Bạn có thể tạo công thức như trên, trong một số đo, và sau đó thả nó vào PivotTable. Bất cứ khi nào bạn thêm đề mục cột hoặc hàng trong pivottable, bạn có thể thay đổi ngữ cảnh truy vấn trong đó thước đo được đánh giá. Cắt và lọc các thao tác cũng ảnh hưởng đến ngữ cảnh. Do đó, cùng một công thức, được sử dụng trong PivotTable, được đánh giá trong ngữ cảnh truy vấn khác nhau cho mỗi ô.

Đầu trang

Ngữ cảnh Bộ lọc

Ngữ cảnh bộ lọc được thêm vào khi bạn chỉ rõ ràng buộc bộ lọc trong tập giá trị được phép trong một cột hay bảng, bằng cách sử dụng các đối số công thức. Ngữ cảnh bộ lọc áp dụng ở phía trên cùng các ngữ cảnh, chẳng hạn như ngữ cảnh hàng hoặc các ngữ cảnh truy vấn.

Ví dụ, một PivotTable tính toán các giá trị cho mỗi ô dựa trên các đầu đề hàng và cột, như được mô tả trong phần trước đó trên ngữ cảnh truy vấn. Tuy nhiên, trong cột tính mà bạn thêm vào PivotTable hoặc thước đo, bạn có thể xác định biểu thức bộ lọc để kiểm soát các giá trị được dùng bởi công thức. Bạn cũng có chọn có thể xóa bộ lọc trên cột cụ thể.

Để biết thêm thông tin về cách tạo bộ lọc trong công thức, hãy xem Hàm bộ lọc (DAX).

Để biết ví dụ về cách người có thể xóa bộ lọc để tạo tổng cộng, hãy xem hàm ALL.

Ví dụ về cách xóa có chọn và áp dụng bộ lọc trong công thức, hãy xem Hàm ALLEXCEPT.

Do đó, bạn phải xem lại định nghĩa của các số đo hoặc công thức sử dụng trong PivotTable để bạn biết về ngữ cảnh bộ lọc khi diễn giải kết quả công thức.

Đầu trang

Xác định Ngữ cảnh trong Công thức

Khi bạn tạo công thức, Power Pivot cho Excel trước hết sẽ kiểm tra cú pháp chung, sau đó kiểm tra tên của các cột và bảng mà bạn cung cấp, so với các cột và bảng có thể có trong ngữ cảnh hiện tại. Nếu Power Pivot không tìm được các cột và bảng được xác định trong công thức, bạn sẽ thấy lỗi.

Ngữ cảnh được xác định như mô tả trong các phần trước, bằng cách sử dụng các bảng có sẵn trong sổ làm việc, mối quan hệ bất kỳ giữa các bảng và bộ lọc bất kỳ đã được áp dụng.

Ví dụ: nếu bạn vừa nhập một số dữ liệu vào bảng mới và chưa áp dụng bất kỳ bộ lọc nào, toàn bộ tập hợp cột trong bảng đó là một phần của ngữ cảnh hiện tại. Nếu bạn có nhiều bảng được liên kết với nhau bằng các mối quan hệ và bạn đang làm việc trong PivotTable đã được lọc bằng cách thêm tiêu đề cột và sử dụng Bộ cắt, ngữ cảnh bao gồm các bảng liên quan và bất kỳ bộ lọc nào trên dữ liệu.

Ngữ cảnh là một khái niệm mạnh mẽ cũng có thể khiến khó khắc phục sự cố cho công thức. Chúng tôi khuyên bạn nên bắt đầu bằng các mối quan hệ và công thức đơn giản để xem cách ngữ cảnh hoạt động rồi bắt đầu thử nghiệm với các công thức đơn giản trong PivotTable. Phần sau đây cũng cung cấp một số ví dụ về cách các công thức sử dụng các loại ngữ cảnh khác nhau để trả về kết quả một cách linh hoạt.

Ví dụ về Ngữ cảnh trong Công thức

  • Hàm RELATED mở rộng ngữ cảnh của hàng hiện tại để bao gồm cả các giá trị trong cột liên quan. Điều này cho phép bạn thực hiện tra cứu. Ví dụ trong chủ đề này minh họa sự tương tác giữa ngữ cảnh lọc và ngữ cảnh hàng.

  • Hàm FILTER cho phép bạn chỉ định các hàng để bao gồm trong ngữ cảnh hiện tại. Các ví dụ trong chủ đề này cũng minh hoạ cách nhúng các bộ lọc trong các hàm khác thực hiện tính gộp.

  • Hàm ALL đặt ngữ cảnh trong một công thức. Bạn có thể sử dụng hàm này để ghi đè các bộ lọc được áp dụng như kết quả của ngữ cảnh truy vấn.

  • Hàm ALLEXCEPT cho phép bạn xóa tất cả các bộ lọc ngoại trừ bộ lọc mà bạn chỉ định. Cả hai chủ đề đều bao gồm các ví dụ hướng dẫn bạn về cách xây dựng công thức và tìm hiểu ngữ cảnh phức tạp.

  • Các hàm EARLIER và EARLIEST cho phép bạn tạo vòng lặp thông qua các bảng bằng cách thực hiện phép tính khi tham chiếu một giá trị từ vòng lặp bên trong. Nếu bạn quen với khái niệm phép đệ quy và với vòng lặp bên trong và bên ngoài, bạn sẽ đánh giá cao khả năng mà các hàm EARLIER và EARLIEST cung cấp. Nếu bạn chưa quen các khái niệm này, bạn nên thực hiện các bước trong ví dụ này một cách cẩn trọng để xem cách ngữ cảnh bên trong và bên ngoài được sử dụng trong các phép tính.

Đầu trang

Tính toàn vẹn Tham chiếu

Phần này thảo luận về một số khái niệm nâng cao có liên quan đến các giá trị bị thiếu trong các bảng Power Pivot được kết nối với nhau theo mối quan hệ. Phần này sẽ hữu ích nếu bạn có sổ làm việc có nhiều bảng và các công thức phức tạp và bạn muốn được trợ giúp để hiểu rõ kết quả.

Nếu bạn quen với khái niệm dữ liệu quan hệ, chúng tôi khuyên bạn trước tiên đọc chủ đề giới thiệu Tổng quan về mối quan hệ.

Tính toàn vẹn Thao chiếu và Mối quan hệ Power Pivot

Power Pivot không yêu cầu bắt buộc về tính toàn vẹn tham chiếu giữa hai bảng để xác định một mối quan hệ hợp lệ. Thay vào đó, một hàng trống sẽ được tạo ra ở đầu "một" của từng mối quan hệ một-đến-nhiều và được dùng để xử lý tất cả các hàng không khớp từ bảng có liên quan. Nó hoạt động có hiệu quả như một nối ngoài SQL.

Trong PivotTable, nếu bạn nhóm dữ liệu theo một mặt của mối quan hệ, mọi dữ liệu không khớp trên nhiều mặt của mối quan hệ được nhóm với nhau và sẽ được bảo gồm trong tổng số với tiêu đề hàng trống. Tiêu đề trống gần tương đương với "phần tử không xác định".

Tìm hiểu Phần tử Không xác định

Bạn có thể quen với khái niệm phần tử không xác định nếu bạn đã làm việc với hệ thống cơ sở dữ liệu đa chiều, chẳng hạn như SQL Server Analysis Services. Nếu bạn chưa quen với thuật ngữ này, ví dụ sau đây giải thích phần tử không xác định là gì và phần tử không xác định ảnh hưởng đến phép tính như thế nào.

Giả sử bạn đang tạo một phép tính tính tổng doanh số hàng tháng cho mỗi cửa hàng, nhưng một cột trong bảng doanh số thiếu một giá trị cho tên cửa hàng. Cho rằng các bảng cho lưu trữdoanh thu được kết nối bằng tên cửa hàng, những gì bạn mong muốn xảy ra trong công thức? Làm thế nào nên PivotTable nhóm hoặc hiển thị các số liệu bán hàng không liên quan đến một cửa hàng hiện có?

Đây là vấn đề phổ biến trong kho dữ liệu, nơi các bảng dữ liệu dữ kiện lớn phải được liên quan một cách lôgic đến các bảng chiều chứa thông tin về cửa hàng, vùng và các thuộc tính khác được sử dụng để phân loại và tính dữ kiện. Để giải quyết vấn đề này, mọi dữ kiện mới không liên quan đến thực thể hiện có được tạm thời gán cho phần tử không xác định. Đó là lý do tại sao các dữ kiện không liên quan sẽ xuất hiện ở dạng được nhóm trong một PivotTable dưới tiêu đề trống.

Xử lý Giá trị Trống và Hàng Trống

Giá trị trống sẽ khác nhau từ các hàng trống sẽ được thêm vào phù hợp với phần tử không xác định. Giá trị trống là một giá trị đặc biệt được dùng để đại diện cho null, Chuỗi trống và các giá trị bị thiếu. Để biết thêm thông tin về giá trị trống, cũng như các kiểu dữ liệu DAX, hãy xem loại dữ liệu trong mô hình dữ liệu.

Đầ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.

×