Top 10 hàm DAX thường dùng nhất trong Power BI kèm ví dụ chi tiết – phần 2

Ngày đăng: 17/12/2023

DAX (Data Analysis Expression) trong Power BI là một tập hợp các hàm, toán tử và hằng số có thể được dùng trong một công thức hoặc biểu thức, để tính toán và trả về một hoặc nhiều giá trị. DAX có rất nhiều hàm được chia thành các nhóm hàm như sau: Date and Time, Time Intelligence, Information, Logical, Mathematical, Statistical, Text, Parent/Child và các hàm khác.

Điều đáng quan tâm là không phải lúc nào chúng ta cũng sử dụng hết tất cả các hàm DAX sẵn có, mà ngược lại, đa phần trong quá trình làm việc, chúng ta sẽ chỉ sử dụng khoảng 20% trên tổng số hàm có sẵn.

Trong bài viết này, Datapot sẽ chia sẻ tiếp tới các bạn các hàm DAX thường được sử dụng nhiều trong công việc của một Data Analyst.

Trước khi đi vào phần 2, hay cùng ôn lại các hàm DAX ở phần 1:

  • Hàm CALCULATE
  • Hàm FILTER
  • Hàm ALL
  • Hàm SWITCH
  • Hàm TOTALYTD
  • Hàm TOTALQTD
  • Hàm TOTALMTD
  • Hàm USERELATIONSHIP
  • Hàm SUMX
  • Hàm RELATED
  • Hàm REMOVEFILTERS
  • Hàm RANKX

Nếu bạn chưa đọc phần này thì đừng bỏ lỡ nhé: Top 10 hàm DAX – phần 1

Tiếp theo đây, xin được giới thiệu tới bạn đọc 10 hàm DAX mà bạn không nên bỏ qua trong việc tạo các measures, cột tính và thao tác với bảng. Chúng ta hãy cũng tìm hiểu về các tìm hiểu về các hàm này cũng như ví dụ về cách ứng dụng của hàm trong thực tế nhé.

HÀM AVERAGEX

Mục đích sử dụng

Hàm AVERAGEX sẽ tính trung bình dựa trên 1 biểu thức trong 1 bảng. Hàm này thuộc nhóm hàm tổng hợp, thường dùng khi bạn muốn thực hiện các phép tính toán, thống kê.

Syntax

Cú pháp của hàm:

AVERAGEX(<tên bảng>, <biểu thức>)
  • <bảng>: bảng muốn tính giá trị trung bình
  • <biểu thức>: biểu thức tính toán áp dụng cho từng dòng trong bảng để tính giá trị trung bình

Uses case

Cũng như hàm AVERAGE, hàm AVERAGEX được sử dụng trong việc tính toán giá trị trung bình của doanh số, doanh thu, số lượng bán,… và giá trị trung bình sẽ được tính dựa vào biểu thức tính doanh số hay số lượng bán. Để cụ thể hơn mời bạn xem ví dụ bên dưới.

Ví dụ

Chúng ta sẽ có bảng sales_table với các cột Product ID, Quantity và Price, để tính trung bình của doanh số chúng ta sẽ sử dung công thức DAX sau:

hàm AVERAGEX dax

Trong đó doanh số = quantity * price

Tim hiểu thêm về hàm AVERAGEX.

HÀM DISTINCTCOUNT

Mục đích sử dụng

Hàm DISCTINCTCOUNT sẽ đếm từng giá trị trong một cột, nhưng mỗi giá trị sẽ chỉ được đếm 1 lần và không lặp lại (tức chỉ đếm giá trị lần đầu xuất hiện)

Syntax

Cú pháp của hàm:

DISCTINTCOUNT(<tên bảng[cột]>)

Uses case

Hàm DISCTINCTCOUNT có thể được sử trong việc đếm các sản phẩm theo tên trong một danh mục sản phẩm để biết được có bao nhiêu sản phẩm đã được bán trong danh mục này.

Ví dụ

Ở ví dụ này chúng sẽ có bảng order_table với các cột là Category, Order ID, Product Name, Quantity và Sale. Để đếm số sản phẩm được bản theo danh mục nhưng chỉ lấy giá trị đầu tiền, ta sẽ sử dụng công thức DAX sau:

DISTINCTCOUNT function (DAX)

Tim hiểu thêm về hàm DISTINCTCOUNT.

HÀM CROSSJOIN

Mục đích sử dụng

Hàm CROSSJOIN trả về một bảng chứa tích Descartes (Cartesian product) của tất cả các hàng từ tất cả các bảng trong tham số. Các cột trong bảng mới là tất cả các cột trong tất cả các bảng tham số.

Syntax

Cú pháp của hàm:

CROSSJOIN(<bảng 1>, <bảng 2>, ...)

Uses case

Bạn có thể sử dụng hàm này để tạo một bảng mục tiêu doanh số theo mã sản phẩm và theo tháng từ 2 bảng không có mối liên hệ. Hãy cùng thử xem ví dụ bên dưới nhé.

Ví dụ

Giả sử chúng ta có 3 bảng là sales_table, date_tableprodcut_target_table_t12 như sau:

CROSSJOIN function (DAX) ví dụ 1
CROSSJOIN function (DAX) ví dụ 2
CROSSJOIN function (DAX) ví dụ 3

Và 3 có mối liên hệ như hình dưới:

CROSSJOIN function (DAX) ví dụ 4

Hiện tại, chúng ta sẽ thấy 2 bảng date_tableproduct_target_table_t12 không có mối liên kết nào, tuy nhiên ta vẫn có thể tạo một bảng mới từ 2 bảng này và sẽ đặt tên là Thang 12 target, và trong bảng này sẽ bao gồm cột Month, Product ID và Target. Để thực hiện điều này, đầu tiên ta tạo một bảng mới rồi sử dụng công thức DAX sau:

CROSSJOIN function (DAX) ví dụ 5

Như vậy ta đã có một bảng mới với Target theo Product ID và Month. Từ bảng này ta có thể tạo liên kết với sales_table.

CROSSJOIN function (DAX) ví dụ 6

Sau đó thực hiện thêm một số phép tính mong muốn như xem tình hình doanh số thực tại so với mục tiêu bằng công thức DAX sau:

CROSSJOIN function (DAX) ví dụ 7

Như vậy, tình hình doanh số thực tế đến nữa tháng 12 cho thấy 2 điểm đáng chú ý:

  • Mã sản phẩm P2 đang vượt mục tiêu
  • Mã sản phẩm P4 mới chỉ được khoảng 2%

Tim hiểu thêm về hàm CROSSJOIN.

HÀM UNION

Mục đích sử dụng

Ngoài tính năng Append trong Power Query Editor để nối 2 hoặc nhiều bảng với nhau, chúng ta cũng có thể sử dụng hàm UNION(). Hàm này sẽ trả về 1 bảng hoàn chỉnh sau khi đã được nối từ các bảng được chỉ định.

Syntax

Cú pháp của hàm:

UNION(<tên bảng 1>, <tên bảng 2>,...)

Uses case

Hàm UNION có thể được sử dụng trong trường hợp khi Data Model của bạn có các bảng như bảng Fact có cầu trúc giống nhau (số lượng cột và thứ tự các cột như nhau) và muốn nối chúng lại với nhau. Thông thường chúng ta sẽ hay thấy hay có nhiều bảng Orders hoặc bảng Sales được chia theo thời gian.

Ví dụ

Ở ví dụ này chúng ta sẽ có 2 bảng là order_table_1 và order_table_2 với cấu trúc giống nhau.

UNION function (DAX) ví dụ 1
UNION function (DAX) ví dụ 2

Để thực hiện gộp 2 bảng, ta chỉ cần áp dụng công thức DAX sau:

UNION function (DAX) ví dụ 3

Lưu ý

  • Vì hàm này thuộc nhóm Table Function, các bạn nhớ chọn New table thay vì New measure nhé
  • Hàm này không nên sử dụng nếu như các bảng có hơn 1 triệu dòng (vì sẽ tiêu tốn nhiều tài nguyên và làm chậm tốc độ xử lý)
  • Hai bảng phải có cùng số cột
  • Thứ tự các cột ở các bảng giống nhau
  • Các hàng trùng lặp sẽ được giữ lại

Tim hiểu thêm về hàm UNION.

HÀM IF

Mục đích sử dụng

Hàm IF trong DAX là một hàm logic hoạt động giống với IF trong Excel hay Google Sheets, mục đích của hàm này là trả về kết quả dựa trên điều kiện nhất định.

Syntax

Cú pháp của hàm:

IF(<LogicalTest>, <ResultIfTrue>, <ResultIfFalse>)

Trong đó:

  • LogicalTest: điều kiện áp dụng
  • ResultIfTrue: kết quả trả về nếu đáp ứng điều kiện
  • ResultIfFalse: kêt quả trả về nếu không đáp ứng được điều kiện (nếu để trống, mặc định trả về ô trống)

Uses case

Hàm IF có thể được sử dụng rất hiệu quả trong việt thêm giá trị dựa trên giá đã có, ví dụ như chúng ta có thể chỉ định nếu doanh số hay lợi nhuận ở khoảng nhất đính sẽ trả về “cao”, “trung bình” hay “thấp”

Ví dụ

Từ ví dụ của hàm UNION, chúng ta đã tạo ra một bảng có tên là union_order_table. Với bảng mới tạo này, chúng ta có thể thêm cột tính (Calculated Column) cho nó bằng hàm IF, ở đây chúng ta sẽ thêm một cột với tên đánh_giá, và nếu lời nhuận (Profit) là giá trị dương sẽ = “Lãi” và nếu giá trị âm sẽ bằng = “Lỗ”. Công thức sẽ như sau:

IF function (DAX)

Mời bạn đọc thêm về ứng dụng của what-if parameter trong Power BI để thay đổi báo cáo theo nhiều chiều khác nhau.

Hoặc bạn có thể xem video hướng dẫn sử dụng what-if parameter để giải case xác định khách hàng có nguy cơ rời bỏ.

HÀM SWITCH

Mục đích sử dụng

Hàm SWITCH được sử dụng để chuyển đổi các giá trị hoặc của 1 biểu thức thành giá trị được tương ứng đã được xác định trước.

Syntax

Cú pháp của hàm:

SWITCH(<biểu thức>, <giá trị 1>, <giá trị chuyển đôi 1>, <giá trị 2>, < giá trị chuyển đôi 2>, <giá trị 3>, < giá trị chuyển đôi 3>,...<giá trị khác>)

Uses case

Một ví dụ nhanh về ứng dụng của hàm này đó là phân loại doanh số, lợi nhuận hoặc chuyển đổi thứ từ dạng số sang tên của ngày.

Ví dụ

Ở ví dụ này ta sẽ chuyển thứ (dạng số) sang thứ (dạng tên). Chúng ta sẽ có các giá trị từ 0-6 tương ứng với 7 ngày trong tuần. Để chuyển đổi sang dạng tên thứ, ta có thể dùng công thức DAX sau:

SWITCH function (DAX)

Tìm hiểu thêm về hàm SWITCH trong Power BI.

HÀM PARALLELPERIOD

Mục đích sử dụng

Hàm PARALLELPERIOD trả về bảng có chứa cột ngày biểu thị thời gian song song với các ngày trong cột đã được chỉ định, các ngày có thể dịch chuyển về quá khứ hoặc tương lại.

Syntax

Cú pháp của hàm:

PARALLELPERIOD(<date>, <number_of_intervals>, <interval>)

Trong đó:

  • date: cột chứa giá trị thời gian
  • number_of_intervals: số nguyên chỉ định khoảng thời gian được cộng vào hoặc trừ đi
  • Interval: khoảng thời gian để thay đổi ngày (tháng, quý, năm)

Uses case

Chúng ta có thể sử dụng hàm này để tính giá trị như doanh số bán hàng của cùng kỳ năm trước. Đây là một trong những use case khá phổ biến với hàm này.

Ví dụ

Ở ví chúng ta sẽ tính doanh số bán hàng của cùng ký nằm trước, và để làm được này, chúng ta sẽ sử dụng thêm hàm CALCULATE, như vậy chúng ta sẽ có công thức DAX sau:

PARALLELPERIOD function (DAX)
  • SUM(order_table[Sales]): được dùng để tính tổng doanh số
  • PARALLELPERIOD(date_table[Date], -1, YEAR): được dùng như là điều kiện lọc khi tính tổng doanh số, trong đó:
    • date_table[Date]: giá trị ngày để tham chiếu đến
    • -1: là khoảng thời trừ đi
    • YEAR: thay đổi ngày thành năm

Tim hiểu thêm về hàm PARALLELPERIOD.

HÀM LOOKUPVALUE

Mục đích sử dụng

Truy xuất một giá trị từ bảng.

Syntax

Cú pháp của hàm:

LOOKUPVALUE( <result column>, <search column>, <search value>, [<more search columns>, <more search values>]…,[<alternate result>])

Trong đó:

  • result column: Cột kết quả muốn lấy làm đầu ra của biểu thức này.
  • search column: Cột cần thực hiện tìm kiếm?
  • search value: Giá trị cần tìm kiếm là gì?
  • alternate result: Giá trị nào sẽ được sử dụng nếu giá trị tìm kiếm không được tìm thấy trong bảng dữ liệu

Uses case

Hàm này có thể sự dụng trong việc tìm kiếm cụ thể một giá trị nào đó như tên sản phẩm hoặc giá của sản phẩm theo mã sản phẩm.

Ví dụ

Ở đây ta sẽ có 2 bảng là product và product_price

LOOKUPVALUE function (DAX) ví dụ 1
LOOKUPVALUE function (DAX) ví dụ 2

Để thực hiện lấy giá trị price cho bảng product từ bảng product_price, ta sẽ thêm một cột mới cho bảng product và sử dụng công thức DAX sau:

LOOKUPVALUE function (DAX) ví dụ 3

Tìm hiểu thêm về hàm LOOKUPVALUE.

HÀM VALUES

Mục đích sử dụng

Hàm VALUES giúp trả về giá trị một bảng từ một cột ban đầu được chỉ định, các giá trị trong bảng trả về sẽ là duy nhất.

Syntax

Cú pháp của hàm:

VALUES(<tên bảng hoặc tên cột>)

Uses case

Chúng ta có thể sử dụng hàm này để kiểm tra các sản phẩm được bán ở một hay nhiều quốc gia, để làm được điều này chúng ta sẽ sử dụng thêm hàm IF và HASONEVALUE. Việc kết hợp với hợp với hàm IF là để chúng ta có thể chỉ định giá trị trả về đối với các giá trị không phải là duy nhất. Cách thực hiện như ví dụ bên dưới.

Ví dụ

Gia sử chúng ta có bảng chứa order từ các nước, trong bảng này có thêm thông về danh mục, danh mục con và tên sản phẩm. Ví dụ nếu ta muốn biết liệu có danh mục con nào chỉ bán ở một số nước, ta có thể sử dụng công thức DAX sau:

VALUES function (DAX)

Trong đó:

  • HASONEVALUE(order_table[Country]): kiểm tra nếu chỉ có duy nhất một giá trị
  • VALUES(order_table[Country]): nếu thỏa mãn điều kiện, trả về giá trị đó
  • Nếu không thỏa mãn diều kiện, trả về: “More than one country”

Tìm hiểu thêm về hàm VALUES.

HÀM SELECTEDVALUE

Mục đích sử dụng

Hàm SELECTEDVALUE trả về giá trị khi chỉ có một giá trị trong cột được chỉ định, nếu giá trị không tồn tại sẽ trả về kết quả thay thế.

Syntax

Cú pháp của hàm:

SELECTEDVALUE(<tên cột>, <giá trị thay thế nếu không tìm thấy giá trị>)

Uses case

Hàm này cũng có thể sử dụng trong việc tìm kiếm sản phẩm có được bán ở một hay nhiều quốc gia hay không và cho ra kết quả tương tự. Chỉ có điều công thức của chúng ta sẽ ngắn gọn hơn.

Ví dụ

Chúng ta có thể đạt được kết tương tự với cách sử VALUES bằng công thức DAX sau:

SELECTEDVALUE function (DAX)

Như chúng ta thấy, 2 kết quả hoàn toàn giống nhau, điều khác nhau ở đây là công thức DAX của chúng ta gọn gàng hơn chút.

Tìm hiểu thêm về hàm SELECTEDVALUE.

Lời tạm kết

Trên đây là các hàm DAX phổ biến, thường được dùng trong Power BI cũng như trong công việc của Data Analyst. Các nội dung này đều nằm trong chương trình giảng dạy trong khóa học Power BI của Datapot. Việc làm chủ các công thức DAX thường sử dụng sẽ giúp bạn giải quyết được tương đối các bài toán kinh doanh với vai trò của một Data Analyst.

Ngoài ra, các bạn có thể đọc thêm các hàm DAX trong tài liệu của Microsoft, cảm ơn các bạn và hãy đón chờ các bài viết tiếp theo của Datapot nhé!

Các khóa học Phân tích dữ liệu với Power BI tại Datapot:

Chia sẻ bài viết này

Để lại một bình luận

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 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.