Ngữ cảnh trong Công thức DAX

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

Phần này xác định các loại ngữ cảnh khác nhau: ngữ cảnh hàng, ngữ cảnh truy vấn và ngữ cảnh bộ lọc. Nó giải thích cách đánh giá ngữ cảnh cho các công thức trong các 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 các nối kết đến các ví dụ chi tiết minh họa cách kết quả của các công thức thay đổi theo ngữ cảnh.

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

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

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

Ngữ cảnh hàng có thể được coi là "dò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 và giá trị riêng lẻ trong các cột có liên quan đến hàng hiện tại. Cũng có một số hàm (trước đâysớm nhất) có 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 trên toàn bộ bảng.

Ngữ cảnh truy vấn tham chiếu đến tập hợp con của dữ liệu được tạo ra cho mỗi ô 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ập hợp các giá trị được cho phép trong mỗi cột, dựa trên các ràng buộc về bộ lọc được áp dụng cho hàng hoặc đượ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 một 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 có liên quan đến một bảng khác, nội dung cũng bao gồm tất cả các giá trị từ bảng khác 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ế],

, cho biết thêm hai cột từ cùng một bảng. Công thức này hoạt động giống như các công thức trong một bảng Excel, mà sẽ tự động tham chiếu các giá trị từ cùng một hàng. Lưu ý rằng các bảng khác nhau từ các 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 dải ô và bạn không thể tham chiếu bất kỳ giá trị nào bất kỳ trong một bảng hoặc một ô. Bạn luôn phải làm việc với các bảng và cột.

Ngữ cảnh hàng tự động tuân theo mối quan hệ giữa các bảng để xác định hàng trong các bảng liên quan được 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 liên quan để tải một giá trị thuế từ một bảng liên quan, dựa vào khu vực mà đơn hàng được vận chuyển đến. Giá trị thuế được xác định bằng cách sử dụng giá trị cho khu vực trong bảng hiện tại, tìm kiếm vùng trong bảng liên quan, sau đó nhận lãi suất thuế cho khu vực đó từ bảng liên quan.

= [Cước _ đơn _ hàng] + liên hệ (' vùng ' [TaxRate])

Công thức này chỉ đơn giản là lãi suất thuế đối với khu vực hiện tại, từ bảng khu vực. Bạn không cần phải 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 tính toán trong một bảng. Những 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 điều khoản lập trình, bạn có thể tạo các công thức định hình cho một vòng lặp bên trong và bên ngoài.

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

Trong Excel, tính toán này đòi hỏi một chuỗi tóm tắt trung gian, vốn sẽ được xây dựng lại nếu dữ liệu đã thay đổi. Nếu bạn là người dùng của Excel, bạn có thể xây dựng công thức mảng mà sẽ thực hiện công việc. Ngoài ra, trong một cơ sở dữ liệu quan hệ, bạn có thể viết subsub được chọn.

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

= MAXX (FILTER (Sales, [ProdKey] = sớm hơn ([ProdKey])), doanh số [OrderQty])

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

Trong ngắn hạn, hàm trước đó lưu trữ ngữ cảnh hàng từ các thao tác trước khi thao tác hiện tại. Ở tất cả các thời điểm, các cửa hàng hàm trong bộ nhớ hai bộ ngữ cảnh: một bộ ngữ cảnh đại diện cho hàng hiện tại cho vòng lặp bên trong của công thức và một bộ ngữ cảnh khác đại diện cho hàng hiện tại cho vòng ngoài công thức. DAX tự động nguồn cấp các giá trị giữa hai vòng để bạn có thể tạo các tập hợp phức tạp.

Đầu trang

Ngữ cảnh truy vấn

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

Vì ngữ cảnh có thể thay đổi tùy thuộc vào vị trí 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 sử dụng công thức trong PivotTable với nhiều nhóm và bộ lọc hay trong cột được tính toán không có bộ lọc và ngữ cảnh tối thiểu.

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 lợi nhuận của bảng bán hàng : = Sum (' doanh số ' [lợi nhuận]).

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 bán hàng , kết quả của công thức sẽ giống nhau đối với 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 bán hàng . Kết quả của bạn sẽ có lợi nhuận cho tất cả các khu vực, tất cả các sản phẩm, tất cả các năm, v.v.

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, nhưng thay vào đó bạn muốn có lợi nhuận cho một năm cụ thể, một quốc gia hoặc khu vực cụ thể, một sản phẩm cụ thể hoặc một số kết hợp trong số này, sau đó nhận được tổng cuối.

Trong PivotTable, 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 một công thức như thế này, trong một thước đo, rồi thả nó vào PivotTable. Bất cứ khi nào bạn thêm đầu đề cột hoặc hàng vào PivotTable, bạn sẽ thay đổi ngữ cảnh truy vấn mà số đo được đánh giá. Các hoạt động slicing và lọc cũng ảnh hưởng đến ngữ cảnh. Do đó, công thức giống nhau, được sử dụng trong PivotTable, được đánh giá trong ngữ cảnh truy vấn khác nhau cho từng ô.

Đầ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 trên tập hợp các giá trị được phép trong một cột hoặc bảng, bằng cách sử dụng các đối số vào một công thức. Ngữ cảnh bộ lọc được áp dụng ở đầu các ngữ cảnh khác, chẳng hạn như ngữ cảnh hàng hoặc ngữ cảnh truy vấn.

Ví dụ: PivotTable tính toán giá trị của nó cho mỗi ô dựa trên đầ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ác số đo hoặc các cột được tính toán mà bạn thêm vào PivotTable, bạn có thể chỉ định các biểu thức bộ lọc để điều khiển các giá trị được công thức sử dụng. Bạn cũng có thể xóa có chọn lọc các bộ lọc trên các 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 chức năng bộ lọc.

Để có một ví dụ về cách lọc có thể được xóa để tạo tổng cuối, hãy xem tất cả.

Để biết các ví dụ về cách xóa và áp dụng các bộ lọc trong công thức, hãy xem hàm Allexcept.

Do đó, bạn phải xem xét định nghĩa của các số đo hoặc công thức được sử dụng trong PivotTable để bạn biết được ngữ cảnh của 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 một công thức, Power Pivot cho Excel trước tiên kiểm tra cú pháp chung, sau đó nó sẽ kiểm tra tên cột và bảng mà bạn cung cấp cho các cột và bảng có thể có trong ngữ cảnh hiện tại. Nếu Power Pivot không thể tìm thấy các cột và bảng được xác định bởi công thức, bạn sẽ gặp lỗi.

Ngữ cảnh được xác định như được 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, bất kỳ mối quan hệ nào giữa các bảng và bất kỳ bộ lọc nào đã được áp dụng.

Ví dụ, nếu bạn vừa nhập một số dữ liệu vào một bảng mới và không áp dụng bất kỳ bộ lọc nào, toàn bộ các 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 bởi mối quan hệ và bạn đang làm việc trong PivotTable đã được lọc bằng cách thêm đầu đề cột và sử dụng slicer, 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ẽ mà cũng có thể khiến khó khắc phục các công thức. Chúng tôi khuyên bạn nên bắt đầu với các công thức và mối quan hệ đơn giản để xem ngữ cảnh hoạt động như thế nào, 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 thức các công thức sử dụng các loại ngữ cảnh khác nhau để tự động trả về kết quả.

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

  • Hàm liên quan mở rộng ngữ cảnh của hàng hiện tại để đưa vào các giá trị trong một cột có 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 tương tác của ngữ cảnh lọc và hàng.

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

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

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

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

Đầu trang

Tính toàn vẹn tham khảo

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

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

Tính toàn vẹn tham khảo và các mối quan hệ Power Pivot

Power Pivot không yêu cầu tính toàn vẹn tham khảo được thực thi 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 được tạo ra trên phần "một" của mỗi mối quan hệ một đối nhiều và được dùng để xử lý tất cả các hàng không khớp từ bảng liên quan. Nó hoạt động hiệu quả như một gia nhập bên ngoài SQL.

Trong Pivottable, nếu bạn nhóm dữ liệu theo một bên của mối quan hệ, bất kỳ dữ liệu chưa từng có nào ở nhiều bên của mối quan hệ được nhóm lại với nhau và sẽ được đưa vào tổng với một đầu đề hàng trống. Đầu đề trống xấp xỉ tương đương với "thành viên không xác định."

Hiểu rõ thành viên không xác định

Khái niệm thành viên không xác định có thể là quen thuộc với bạn 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 thuật ngữ này mới cho bạn, ví dụ sau đây sẽ giải thích những gì là thành viên không xác định là gì và cách ảnh hưởng đến tính toán.

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

Vấn đề này là một trong kho dữ liệu phổ biến, trong đó các bảng lớn dữ liệu thực tế phải có liên quan đến các bảng chiều có chứa thông tin về các cửa hàng, khu vực và các thuộc tính khác được sử dụng để phân loại và tính toán dữ liệu. Để giải quyết vấn đề, bất kỳ sự kiện mới nào không liên quan đến một thực thể hiện tại được gán tạm thời cho thành viên 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 gộp nhóm trong PivotTable bên dưới đầu đề trống.

Điều trị các giá trị trống so với hàng trống

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

Đầu trang

Lưu ý:  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. Cho chúng tôi biết thông tin này có hữu ích hay không? Dưới đây là bài viết bằng tiếng Anh để bạn tham khảo..​

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.

×