Forum

Please or Register to create posts and topics.

Tài liệu hướng dẫn DAX

Tài liệu bạn cung cấp là một sách bài tập (Exercise Book) thuộc khóa học Mastering DAX Workshop, được thiết kế để giúp người học thực hành và nắm vững ngôn ngữ DAX (Data Analysis Expressions) trong việc phân tích dữ liệu, chủ yếu sử dụng Power BI hoặc Excel. DAX là một ngôn ngữ truy vấn mạnh mẽ được sử dụng để tạo các phép tính và phân tích dữ liệu trong các mô hình dữ liệu dạng bảng. Tài liệu này chứa các bài tập thực hành (Labs) được chia thành nhiều phần, mỗi phần tập trung vào một khía cạnh cụ thể của DAX, từ cơ bản đến nâng cao.
 
””””
 

 

1. Mục đích của tài liệu

  • Tài liệu này cung cấp các bài tập thực hành để người học áp dụng kiến thức DAX đã được học trong khóa Mastering DAX Workshop.
  • Các bài tập được thiết kế theo từng Lab, mỗi Lab tập trung vào một chủ đề cụ thể (ví dụ: tạo cột tính toán, measure, hàm bảng, ngữ cảnh đánh giá, v.v.).
  • Người học được khuyến khích tự giải bài tập trước, sau đó so sánh với giải pháp được cung cấp để hiểu rõ cách tiếp cận và tối ưu hóa.
 

 

2. Cấu trúc tài liệu

Tài liệu bao gồm nhiều Lab, mỗi Lab có:
  • Mục tiêu: Một kịch bản kinh doanh hoặc bài toán cụ thể cần giải quyết.
  • Hướng dẫn: Các bước thực hiện, thường kèm theo gợi ý hoặc câu hỏi để người học tự suy nghĩ.
  • Giải pháp: Công thức DAX mẫu để giải bài toán, thường đi kèm giải thích.
 
Các Lab chính trong tài liệu:
  1. Lab 1: First Steps with DAX – Làm quen với cột tính toán (calculated columns) và measure.
  2. Lab 2: Table Functions – Sử dụng các hàm bảng như FILTER, RELATEDTABLE.
  3. Lab 3: Evaluation Contexts and CALCULATE – Tìm hiểu ngữ cảnh đánh giá và hàm CALCULATE.
  4. Lab 9: Advanced Relationships – Xử lý các bài toán phân đoạn tĩnh (static segmentation) và mô phỏng (simulation).
 
Ngoài ra, tài liệu sử dụng các mô hình dữ liệu mẫu như Contoso (chủ yếu), AdventureWorks, và một số mô hình giáo dục đơn giản khác để minh họa.
 

 

3. Một số khái niệm quan trọng

  • Calculated Columns (Cột tính toán):
    • Được định nghĩa bằng dấu = trong DAX, ví dụ:
      Sales[SalesAmount] = Sales[Quantity] * Sales[Unit Price]
    • Tạo một cột mới trong bảng, giá trị được tính toán cho từng dòng.
 
  • Measures (Đo lường):
    • Được định nghĩa bằng dấu :=, ví dụ:
      TotalSales := SUMX(Sales, Sales[Quantity] * Sales[Unit Price])
    • Tính toán giá trị tổng hợp dựa trên ngữ cảnh lọc (filter context), không lưu trữ dữ liệu mà chỉ tính khi cần.
 
  • RELATED: Dùng để lấy dữ liệu từ bảng liên quan trong mô hình dữ liệu.
  • SUMX và các hàm lặp (iterators): Lặp qua từng dòng trong bảng để thực hiện phép tính.
  • CALCULATE: Thay đổi ngữ cảnh lọc để tính toán linh hoạt hơn.
 

 

4. Nội dung chi tiết một số Lab

 

Lab 1: First Steps with DAX

  • Bài toán: Tạo báo cáo doanh số bán hàng theo năm.
    • Tạo cột SalesAmount để tính doanh số mỗi dòng:
      Sales[SalesAmount] = Sales[Quantity] * Sales[Unit Price]
    • Tạo measure TotalSales để tính tổng doanh số:
      TotalSales := SUM(Sales[SalesAmount])
    • Tối ưu bằng cách dùng SUMX để tránh cột trung gian:
      TotalSales := SUMX(Sales, Sales[Quantity] * Sales[Unit Price])
 
  • Phân tích giảm giá (Analyze Discounts):
    • Tạo cột phân loại mức giảm giá (FULL PRICE, LOW, MEDIUM, HIGH) dựa trên tỷ lệ giảm giá.
    • Tạo measure tính tổng giá trị giảm giá và trung bình phần trăm giảm giá.
 

Lab 2: Table Functions

  • Bài toán: Đếm số lượng sản phẩm được giảm giá nhiều hơn số lượng bán giá đầy đủ.
    • Sử dụng COUNTROWS, FILTER, và RELATEDTABLE để lọc và đếm:
      NumofDiscountedProducts := COUNTROWS ( FILTER ( Product, COUNTROWS (FILTER (RELATEDTABLE (Sales), Sales[Unit Discount] = 0)) < COUNTROWS (FILTER (RELATEDTABLE (Sales), Sales[Unit Discount] > 0)) ) )
 

Lab 3: Evaluation Contexts and CALCULATE

  • Bài toán: Đếm số khách hàng có doanh số vượt trung bình.
    • Tính trung bình doanh số mỗi khách hàng:
      AvgCustomerSale := AVERAGEX(Customer, [TotalSales])
    • Đếm khách hàng vượt trung bình:
      GoodCustomers := COUNTROWS ( FILTER ( Customer, [AvgCustomerSale] >= CALCULATE([AvgCustomerSale], ALL(Customer)) ) )
 

Lab 9: Advanced Relationships

  • Static Segmentation: Phân loại doanh số theo mức giá (VERY LOW, LOW, MEDIUM, HIGH, VERY HIGH).
    • Công thức:
      Sales[PriceSegment] = CALCULATE ( VALUES (PriceSegments[Segment]), FILTER ( PriceSegments, AND ( PriceSegments[MinPrice] <= Sales[Net Price], PriceSegments[MaxPrice] > Sales[Net Price] ) ) )
  • Courier Simulation: Tính chi phí vận chuyển dựa trên trọng lượng và quốc gia.
    • Công thức phức tạp sử dụng SUMX, CALCULATE, và FILTER để mô phỏng.
 

 

5. Lời khuyên khi học

  • Thực hành từng bước: Bắt đầu từ file khởi đầu (Excel hoặc Power BI) và tự viết công thức trước khi xem giải pháp.
  • Hiểu ngữ cảnh: DAX phụ thuộc nhiều vào filter contextrow context, hãy chú ý cách các hàm như CALCULATE thay đổi ngữ cảnh.
  • Sử dụng mô hình Contoso: Tài liệu cung cấp sơ đồ mô hình dữ liệu Contoso ở cuối, hãy tham khảo để hiểu mối quan hệ giữa các bảng.
 

 

6. Kết luận

Tài liệu này là một công cụ tuyệt vời để học DAX từ cơ bản đến nâng cao. Nó không chỉ cung cấp bài tập mà còn giải thích cách tư duy và giải quyết bài toán thực tế trong phân tích dữ liệu.