Tài liệu hướng dẫn DAX
bsdinsight@bsdinsight-com
837 Posts
#1 · 30 March 2025, 07:41
Quote from bsdinsight on 30 March 2025, 07:41Tà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:
Lab 1: First Steps with DAX – Làm quen với cột tính toán (calculated columns) và measure. Lab 2: Table Functions – Sử dụng các hàm bảng nhưFILTER
,RELATEDTABLE
. Lab 3: Evaluation Contexts and CALCULATE – Tìm hiểu ngữ cảnh đánh giá và hàmCALCULATE
. 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ộtSalesAmount
để tính doanh số mỗi dòng:Sales[SalesAmount] = Sales[Quantity] * Sales[Unit Price] Tạo measureTotalSales
để tính tổng doanh số:TotalSales := SUM(Sales[SalesAmount]) Tối ưu bằng cách dùngSUMX
để 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ụngCOUNTROWS
,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ụngSUMX
,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 context và row 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.
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:
-
Lab 1: First Steps with DAX – Làm quen với cột tính toán (calculated columns) và measure.
-
Lab 2: Table Functions – Sử dụng các hàm bảng như
FILTER
,RELATEDTABLE
. -
Lab 3: Evaluation Contexts and CALCULATE – Tìm hiểu ngữ cảnh đánh giá và hàm
CALCULATE
. -
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 context và row 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.
Click for thumbs down.0Click for thumbs up.0
Last edited on 30 March 2025, 07:42 by bsdinsight