Tổng quan về DAX trong Power BI

Ngày đăng: 03/09/2022

Khái niệm về DAX

DAX trong Power BI (Data Analysis Expressions) là một tập hợp các hàm, toán tử và hằng số, sử dụng trong công thức hoặc biểu thức tính để giải quyết những bài toán từ cơ bản tới phức tạp, kết quả trả về là một hoặc nhiều giá trị từ dữ liệu có sẵn. Hiểu theo cách đơn giản hơn, DAX giúp tạo thông tin mới từ dữ liệu đã có trong data model của bạn.

Ôn tập lại mô hình dữ liệu (Data Model)

Những đầu việc chung khi phát triển mô hình dữ liệu trong Power BI là gì?

– Kết nối với dữ liệu.

– Biến đổi và chuẩn bị dữ liệu.

– Xác định logic nghiệp vụ bằng cách thêm các phép tính DAX.

– Thực thi quyền với dữ liệu bằng cách thêm vai trò bảo mật cấp hàng.

– Đưa mô hình lên Power BI Service.

Điểm khác nhau giữa bảng dữ kiện (fact table) và bảng chiều (dimension table)?

Ví dụ của mô hình dữ liệu dạng Sao (Star Schema Model)

Các đối tượng Mô hình dữ liệu (Data Model) trong Power BI bao gồm:

  • Bảng
  • Cột
  • Quan hệ giữa các bảng
  • Quan hệ giữa các cột trong một bảng (cấp bậc)
  • Thước đo (tính toán bằng DAX)
  • RLS (Row-Level Security – Bảo mật ở mức độ hàng)

Cú pháp DAX (DAX Syntax)

DAX giúp tạo thông tin mới từ dữ liệu đã có trong mô hình dữ liệu. DAX được sử dụng để tạo đối tượng mô hình (model object) trong mô hình dữ liệu Power BI. Với DAX, chúng ta có thể tạo các đối tượng sau:

Các thước đo (Measures)

  • Các cột (gọi là Cột tính)
  • Các bảng (gọi là Bảng tính)

Ví dụ về một công thức DAX

Giải thích công thức

Công thức này bao gồm các thành phần sau:

  1. Tên thước đo, Total Sales.
  2. Dấu bằng (=) ở đầu công thức, khi được tính toán sẽ trả về một kết quả.
  3. Hàm DAX SUM, cộng tất cả các số trong cột Sales[SalesAmount]. Về các hàm DAX, chúng ta sẽ tìm hiểu sau.
  4. Dấu ngoặc đơn (), bao quanh một biểu thức có chứa một hoặc nhiều đối số. Hầu hết các hàm yêu cầu ít nhất một đối số. Một đối số chuyển một giá trị cho một hàm.
  5. Bảng tham chiếu, ở đây là bảng Sales.
  6. Cột được tham chiếu, [SalesAmount], trong bảng Sales. Với đối số này, hàm SUM biết cột nào để tổng hợp một SUM.

Để học nhiều hơn về các cú pháp DAX, đọc tài liệu sau: DAX syntax

DAX: Calculated Tables (Bảng tính)

Bạn có thể sử dụng DAX để tạo bảng tính từ các bảng có sẵn trong mô hình dữ liệu. Các bảng tính toán tương tự như các bảng khác trong mô hình dữ liệu, nghĩa là bạn có thể tạo mối quan hệ, đổi tên các cột của nó, phân loại kiểu dữ liệu của cột…

Các hàm cho Bảng tính

Những hàm thường dùng cho bảng tính:

DISTINCT

VALUES

CROSSJOIN

UNION

NATURALINNERJOIN

NATURALLEFTOUTERJOIN

INTERSECT

CALENDAR

CALENDARAUTO

Ví dụ của bảng tính

Case: Tạo bảng trung gian từ hai bảng

Trường hợp bạn là một giám đốc nhân sự có một bảng Northwest Employees và một bảng Southwest Employees khác. Bạn muốn kết hợp hai bảng thành một bảng duy nhất được gọi là Western Region Employees.

Bạn tạo các bảng được tính toán bằng cách sử dụng tính năng Bảng mới trong Dạng xem Báo cáo (Report View) hoặc Dạng xem Dữ liệu (Data View) của Power BI Desktop.

Northwest Employees

Southwest Employees

Tiếp tục các bước sau:

Nhập công thức sau trên thanh công thức:

Western Region Employees = UNION(‘Northwest Employees’, ‘Southwest Employees’)

Kết quả:

Lab: Tạo bảng tính và cột tính

Chúng ta sẽ tiếp tục thực hành với AdventureWork Case Study.

Lưu ý rằng bạn phải hoàn thành Data Model Advanced lab in Day 4 trước khi thực hiện bài thực hành này.

Hoặc, bạn có thể tải xuống tệp thực hành sau: DOWNLOAD PRACTICE FILE

Nhiệm vụ 1: Sao chép bảng hiện có từ mô hình dữ liệu

Yêu cầu:

  • Tạo bảng Salesperson (Nhân viên bán hàng) để có quan hệ trực tiếp với bảng
  • Tạo mối quan hệ giữa bảng mới tạo với bảng Sales

Lời giải nhiệm vụ 1

Trong Chế độ xem báo cáo (Report view), trên thanh ribbon Modeling, trong nhóm Calculations, nhấn vào New table.

Trên thanh tính toán (mở trực tiếp bên dưới ribbon khi tạo hoặc chỉnh sửa các phép tính), hãy nhập Salesperson =, nhấn Shift+Enter, nhập ‘Salesperson (Performance)’, và sau đó nhấn Enter.

Chuyển qua Model view và tạo mối quan hệ giữa bảng Sales và bảng Salesperson (cột: EmployeeKey)

Ẩn những cột sau trong bảng Salesperson:

– EmployeeID

– EmployeeKey

– UPN (Skip if you do not have this field – Ẩn nếu bạn không có cột này)

Nhiệm vụ 2: Sử dụng CALENDARAUTO để tạo bảng ngày (date table)

Yêu cầu:

  • Tạo một bảng mới với công thức sau (lưu ý rằng công ty này có năm tài chính kết thúc vào ngày 30 tháng 6):

Date = CALENDARAUTO(6)

  • Tạo cột tính cho bảng Date mới:
    • Năm (Year): số năm tài chính, vid dụ FY2018
    • Quý (Quarter): Số quý tài chính, ví dụ 2018 Q1
    • Tháng (Month): Số tháng tài chính, ví dụ 2018 Jul
    • Khóa tháng (MonthKey): month number, example 201807

Lời giải nhiệm vụ 2

Chọn bảng Date, trên tab Table Tools, trong nhóm Calculations, chọn New Column.

Tạo cột Năm (Year):

Year = “FY” & YEAR(‘Date'[Date]) + IF(MONTH(‘Date'[Date]) > 6, 1)

Tạo cột Quý (Quarter):

Quarter =

‘Date'[Year] & ” Q”

& IF(MONTH(‘Date'[Date]) <= 3, 3,

IF(MONTH(‘Date'[Date]) <= 6, 4,

IF(MONTH(‘Date'[Date]) <= 9, 1, 2)))

Tạo cột Tháng (Month):

Month = FORMAT(‘Date'[Date], “yyyy MMM”)

Create MonthKey column:

MonthKey = (YEAR(‘Date'[Date]) * 100) + MONTH(‘Date'[Date])

Nhiệm vụ 3: Đơn giản hóa bảng Date

Yêu cầu:

  • Tạo phân cấp giữa các cột trong bảng Date, đặt tên là Fiscal (Cấp: Năm> Quý> Tháng)
  • Thay đổi sắp xếp mặc định của cột: Đối với cột Month, hãy thay đổi tính năng Sort by column (trong tab Column tools) từ Month thành MonthKey. (Tìm hiểu thêm về Sắp xếp một cột theo một cột khác)
  • Tạo mối quan hệ kiểu mẫu:
    • Date | Dateto Sales | OrderDate
    • Date | Dateto Targets | TargetMonth
  • Sử dụng tính năng Mark as Date table (trong tab Column tools) cho bảng Date mới tạo.

DAX: Calculated Columns (Cột tính)

Các cột tính được tạo trong Chế độ xem Báo cáo (Report view) hoặc Chế độ xem Dữ liệu (Data view) dựa trên dữ liệu bạn đã tải vào mô hình.

Các tình huống phổ biến:

  • Nối các giá trị từ hai cột khác nhau trong hai bảng khác nhau nhưng có liên quan với nhau.
  • Thực hiện cộng, trừ giá trị các cột khác nhau.
  • Trích xuất chuỗi con (substrings) từ một cột hiện có.

Các chức năng phổ biến:

CONCATENATE

YEAR/MONTH/DATE

SWITCH

LEFT

RIGHT

DAX: Measure (Thước đo)

Bằng cách sử dụng các thước đo (measures), bạn có thể tạo một số giải pháp phân tích dữ liệu hiệu quả nhất trong Power BI Desktop. Các phép đo thực hiện các phép tính trên dữ liệu khi bạn tương tác với báo cáo.

Có hai loại thước đo trong Power BI:

  • Thước đo ngầm định (thước đo mà Power BI tự động tạo): Power BI tự động cho phép trực quan tóm tắt dữ liệu trong cột.
  • Thước đo rõ ràng (thước đo mà bạn sử dụng DAX để tạo): là các phép tính sử dụng DAX và được thêm vào mô hình dữ liệu.

Thước đo ngầm định (Implicit measure)

Chức năng tổng hợp tự động

Tùy thuộc vào loại dữ liệu cột của bạn, Power BI có thể tóm tắt tự động cho cột.

Tóm tắt các Hàm tổng hợp

Các cột dạng số (Numeric columns) hỗ trợ phạm vi lớn nhất của các hàm tổng hợp bao gồm:

  • Sum
  • Average
  • Minimum
  • Maximum
  • Count (Distinct)
  • Count
  • Standard deviation
  • Variance
  • Median

Các cột dạng chữ (Text columns) cho phép các tổng hợp sau:

  • First (alphabetically)
  • Last (alphabetically)
  • Count (Distinct)
  • Count

Các cột dạng ngày (Date columns) cho phép các tổng hợp sau:

  • Earliest
  • Latest
  • Count (Distinct)
  • Count
  • Boolean columns allow the following aggregations:
  • Count (Distinct)
  • Count

Lab: Thước đo ngầm định (Implicit measures)

Yêu cầu: Tạo một số biểu đồ đơn giản từ mô hình dữ liệu AdventureWork để hiểu cách hoạt động của thước đo ngầm định trong Power BI.

Thước đo rõ ràng (Explicit measure)

Bạn có thể chọn xác định thước đo DAX của riêng mình với một số cách tổng hợp nhất định. Các thước đo này được gọi là các thước đo rõ ràng.

Có hơn 200 hàm DAX có thể sử dụng. Để đẩy nhanh tiến độ học DAX của bạn, tốt hơn là:

  • Tìm hiểu DAX bằng cách hiểu các mẫu DAX phổ biến (daxpattern hoặc sqlbi)
  • Tìm hiểu DAX bằng cách nghiên cứu các hàm DAX theo nhóm (DAX tham khảo)

Lab: Thước đo rõ ràng với các hàm DAX tổng hợp đơn giản

Yêu cầu: Tạo các thước đo sau:

  • Tổng doanh thu (trong bảng Sales table), đặt tên là Revenue
  • Tổng chi phí (trong bảng Sales), đặt tên là Cost
  • Lợi nhuận, bằng Doanh thu từ Chi phí, đặt tên là Profit
  • Biên lợi nhuận, bằng Lợi nhuận chia Doanh thu, đặt tên là Profit Margin
  • Nhóm các thước đo liên quan đến Đơn giá (trong bảng Sales):
    • Giá trung bình, đặt tên là Avg Price
    • Giá thấp nhất, đặt tên là Min Price
    • Giá cao nhất, đặt tên là Max Price
  • Đếm tổng đơn hàng, đặt tên là Order Count
  • Đếm tổng số dòng đơn hàng, đặt tên là Order Line Count
  • Tổng doanh số KPI (cột TargetAmount, bảng Targets), đặt tên là Target

Gợi ý: Tham khảo tài liệu này để lựa chọn hàm: Aggregations DAX function

Lời giải

Revenue = SUM(Sales[SalesAmount])

 

Cost = SUM(Sales[Production Cost])

 

Profit = [Revenue] – [Cost]

 

Profit Margin = DIVIDE([Profit], [Revenue]) – 1

 

Avg Price = AVERAGE(Sales[Unit Price])

 

Min Price = MIN(Sales[Unit Price])

 

Max Price = MAX(Sales[Unit Price])

 

Orders = DISTINCTCOUNT(Sales[SalesOrderNumber])

 

Order Lines = COUNTROWS(Sales)

 

Target = SUM(Targets[TargetAmount])

Mẹo quản lý và sắp xếp các thước đo DAX

Do các thước đo không được gắn chính thức vào bất kỳ bảng nào nên khi mô hình của bạn mở rộng với hàng trăm thước đo, bạn cần chú ý tổ chức các thước đo DAX của mình cho hợp lý.

Giải pháp 1: Sử dụng mô hình thư mục ảo (virtual folder model)

Trong chế độ xem Mô hình (Model view), hãy chọn các thước đo thuộc cùng một danh mục kinh doanh (chẳng hạn như thước đo Sales, các thước đo hoạt động Marketing…). Thêm các thước đo này vào tên thư mục Các thước đo Sales.

Giải pháp 2: Sử dụng thư mục thước đo (measure folder)

  • Tạo một bảng trống (Sử dụng DAX / hoặc Sử dụng tính năng Nhập dữ liệu – Enter Data), đặt tên bảng là “Facts”
  • Chọn các thước đo liên quan và chuyển chúng vào bảng trống này.
  • Ẩn tất cả các cột vật lý (physical columns) trong bảng Facts.

Kết quả: Bảng Facts sẽ được tự động chuyển đến vị trí đầu tiên trong danh sách bảng của bạn.

Thước đo (Measures) hoặc Cột tính (Calculated Columns)

Về điểm giống nhau giữa các cột và thước đo, chúng đều là:

  • Các phép tính mà bạn có thể thêm vào mô hình dữ liệu của mình.
  • Được xác định bằng cách sử dụng công thức DAX.
  • Được tham chiếu trong công thức DAX bằng cách đặt tên của chúng trong dấu ngoặc vuông [].

Các khu vực mà các cột tính và thước đo được tính toán khác nhau bao gồm:

  • Mục đích – Các cột tính mở rộng một bảng bằng việc thêm một cột mới, trong khi các thước đo xác định cách tóm tắt dữ liệu mô hình.
  • Đánh giá – Các cột tính được đánh giá bằng cách sử dụng ngữ cảnh hàng tại thời gian làm mới dữ liệu, trong khi các thước đo được đánh giá bằng cách sử dụng ngữ cảnh bộ lọc tại thời điểm truy vấn. Ngữ cảnh bộ lọc được giới thiệu trong mô-đun sau; là một chủ đề quan trọng cần hiểu và nắm vững để bạn có thể làm được những bản tóm tắt phức tạp hơn.
  • Lưu trữ – Các cột tính (trong Bảng chế độ lưu trữ) lưu trữ một giá trị cho mỗi hàng trong bảng, nhưng một thước đo không bao giờ lưu trữ các giá trị trong mô hình.
  • Sử dụng trực quan – Các cột tính (giống như bất kỳ cột nào) có thể được sử dụng để lọc, nhóm hoặc tóm tắt (như một thước đo ngầm định), trong khi các thước đo được thiết kế để tóm tắt.

Tham khảo thêm khóa học: PL – 300: Microsoft Power BI Data Analyst

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *