Bỏ qua tới nội dung chính
Quay lại tin tức

Giải thích Lineage trong DAX

Towards Data Science· Salvatore Cagliari· 29/5/2026general

Một trong những khái niệm quan trọng nhất trong DAX là lineage (nguồn gốc dữ liệu). Khái niệm này đề cập đến thông tin về nguồn gốc của một đối tượng. Chúng ta sẽ tìm hiểu lineage là gì và cách thao tác với nó. Bài viết Giải thích Lineage trong DAX xuất hiện lần đầu trên Towards Data Science.

Power BI Giải thích Lineage trong DAX Một trong những khái niệm quan trọng nhất trong DAX là lineage (nguồn gốc dữ liệu). Khái niệm này đề cập đến thông tin về nơi xuất xứ của dữ liệu. Chúng ta hãy cùng tìm hiểu lineage là gì và cách thao tác với nó. Salvatore Cagliari Ngày 29/5/2026 10 phút đọc Chia sẻ Ảnh của A. C. trên Unsplash Giới thiệu Trong DAX, lineage là một khái niệm quan trọng và việc hiểu cách làm việc cũng như thao tác với nó là rất cần thiết. Như trong các bài viết trước, tôi sẽ sử dụng các truy vấn DAX để giải thích khái niệm này và các tác động của nó. Tôi bắt đầu với một truy vấn đơn giản để lấy số lượng đơn hàng cho sản phẩm của thương hiệu “Adventure Works”: EVALUATE        CALCULATETABLE(               SUMMARIZECOLUMNS('Date'[Year]                                          ,'Date'[MonthShortName]                                          ,'Date'[MonthKey]                                          ,'Product'[ProductCategoryName]                                          ,"Order Count", [Online Order Count]                                          )                                   ,'Product'[BrandName] = "Adventure Works"                                   )               ORDER BY 'Date'[MonthKey]                                          ,'Product'[ProductCategoryName] Đây là một phần kết quả từ truy vấn: Hình 1 – Kết quả của truy vấn cơ sở (Hình ảnh của Tác giả) Truy vấn này trả về 180 hàng. Hãy ghi nhớ điều này, vì nó sẽ quan trọng sau này. Tiếp theo, tôi sẽ giới thiệu một bộ lọc cho một tháng cụ thể và chỉ ra vai trò của lineage. Thiết lập lineage Tôi sẽ thêm bộ lọc cho tháng 4 năm 2026: DEFINE     VAR YearMonthFilter = 202604 EVALUATE     CALCULATETABLE(         SUMMARIZECOLUMNS('Date'[Year]                         ,'Date'[MonthShortName]                         ,'Date'[MonthKey]                         ,'Product'[ProductCategoryName]                         ,"Order Count", [Online Order Count]                         )                     ,'Product'[BrandName] = "Adventure Works"                     ,'Date'[MonthKey] = YearMonthFilter                     )         ORDER BY 'Date'[MonthKey]                         ,'Product'[ProductCategoryName] Trong trường hợp này, tôi định nghĩa một biến và đặt giá trị là 202604. Tiếp theo, tôi thêm nó làm bộ lọc vào hàm CALCULATETABLE(). Cho đến nay không có gì đặc biệt. Đây là kết quả: Hình 2 – Truy vấn và kết quả của truy vấn với bộ lọc đơn giản (Hình ảnh của Tác giả) Trong trường hợp này, lineage không quan trọng, vì một giá trị vô hướng (scalar value) thiết lập bộ lọc. Nhưng chúng ta có thể thiết lập một lineage bằng cách sử dụng hàm TREATAS(): DEFINE     VAR YearMonthFilter = TREATAS({ 202604 }, 'Date'[MonthKey]) EVALUATE     CALCULATETABLE(         SUMMARIZECOLUMNS('Date'[Year]                         ,'Date'[MonthShortName]                         ,'Date'[MonthKey]                         ,'Product'[ProductCategoryName]                         ,"Order Count", [Online Order Count]                         )                     ,'Product'[BrandName] = "Adventure Works"                     ,YearMonthFilter                     )         ORDER BY 'Date'[MonthKey]                         ,'Product'[ProductCategoryName] Việc giới thiệu hàm TREATAS() cho phép truyền biến dưới dạng bộ lọc. Hàm CALCULATETABLE() sử dụng nguồn gốc được thiết lập bởi TREATAS() làm bộ lọc trên cột 'Date'[MonthKey]. Kết quả không thay đổi, nhưng truy vấn đơn giản hơn, do không cần truyền điều kiện dưới dạng "cột bằng giá trị bộ lọc". Hình 3 – Kết quả truy vấn sử dụng TREATAS() (Hình ảnh do Tác giả cung cấp) Trên thực tế, Power BI luôn sử dụng hình thức này khi truyền các bộ lọc được thiết lập trong báo cáo vào mô hình ngữ nghĩa. Tuy nhiên, Power BI thực hiện khác: Power BI định nghĩa các biến, thiết lập nguồn gốc và thêm tất cả các bộ lọc trực tiếp vào SUMMARIZECOLUMNS(): DEFINE     VAR YearMonthFilter = TREATAS({ 202604 }, 'Date'[MonthKey])     VAR SelectedBrand = TREATAS( { "Adventure Works" }, 'Product'[BrandName]) EVALUATE         SUMMARIZECOLUMNS('Date'[Year]                         ,'Date'[MonthShortName]                         ,'Date'[MonthKey]                         ,'Product'[ProductCategoryName]                         ,YearMonthFilter                         ,SelectedBrand                         ,"Order Count", [Online Order Count]                         )         ORDER BY 'Date'[MonthKey]                         ,'Product'[ProductCategoryName] Xóa nguồn gốc Người dùng có thể gặp phải các tình huống cần xóa nguồn gốc. Phương pháp thực hiện khác nhau tùy thuộc vào việc có một hay nhiều giá trị làm bộ lọc. Ví dụ, hãy xem đoạn mã sau, trong đó tôi sử dụng VALUE() để loại bỏ nguồn gốc trên biểu thức trước đó: DEFINE     VAR YearMonthFilter = TREATAS({ 202604 }, 'Date'[MonthKey])     VAR YearMonthFilter_cleared = VALUE(YearMonthFilter) EVALUATE     CALCULATETABLE(         SUMMARIZECOLUMNS('Date'[Year]                         ,'Date'[MonthShortName]                         ,'Date'[MonthKey]                         ,'Product'[ProductCategoryName]                         ,"Order Count", [Online Order Count]                         )                     ,'Product'[BrandName] = "Adventure Works"                     ,YearMonthFilter_cleared                     )         ORDER BY 'Date'[MonthKey]                         ,'Product'[ProductCategoryName] Đây là lỗi do Power BI đưa ra: Hình 4 – Thông báo lỗi khi xóa nguồn gốc bằng VALUES(). Nếu không có nguồn gốc, chúng ta sẽ cần thêm một bộ lọc bằng như đã hiển thị ở Hình 2 (Hình ảnh do Tác giả cung cấp) Công cụ không thể hoạt động với bộ lọc ở dòng 71 vì

Nguồn tin: Towards Data Science — Tác giả: Salvatore Cagliari. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.