Bài viết Biểu thức DAX trong Power BI trung trình bày các nội dung về DAX và cách xây dựng công thức DAX trong Power BI – một phần mềm kinh doanh thông minh giúp doanh nghiệp khai thác được những thông tin quan trọng đến từ nguồn dữ liệu đang có của mình. Mời các bạn cùng tham khảo!
Trang 1BIỂU THỨC DAX TRONG POWER BI
Đinh Nguyễn Thúy Nguyệt
Khoa Công nghệ Thông tin, Trường Đại học Tài chính –Marketing
Email: dntnguyet@ufm.edu.vn
Tóm tắt: DAX (viết tắt của Data Analysis Expressions) là một tập hợp các hàm, toán tử và
hằng số có thể được sử 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ị Công thức DAX giúp tạo ra nhiều thông tin mới từ dữ liệu sẵn có trong mô hình bằng cách tổ hợp lại và tính toán chúng Tạo công thức DAX hiệu quả sẽ giúp người dùng tận dụng tối
đa dữ liệu của mình, giúp giải quyết các vấn đề kinh doanh của tổ chức Bài viết tập trung trình bày các nội dung về DAX và cách xây dựng công thức DAX trong Power BI – một phần mềm kinh doanh thông minh giúp doanh nghiệp khai thác được những thông tin quan trọng đến từ nguồn dữ liệu đang có của mình
Từ khóa: Data Analysis Expressions in Power BI, DAX Power BI
1 TỔNG QUAN VỀ POWER BI
Trong thời đại công nghệ 4.0, sự tham gia của máy móc kỹ thuật và phần mềm vào quá trình kinh doanh của doanh nghiệp là điều tất yếu Kinh doanh thông minh (Business Intelligence – BI) là sự kết hợp của phân tích kinh doanh, khai thác, trực quan hóa dữ liệu, công cụ và cơ sở hạ tầng dữ liệu, cũng như các phương pháp hay nhất để giúp các tổ chức đưa ra quyết định dựa trên dữ liệu (data-driven decisions)
Microsoft Power BI là công cụ khai thác dữ liệu kinh doanh của Microsoft dành cho lĩnh vực kinh doanh thông minh, dùng để phân tích và trực quan hóa dữ liệu, cung cấp thông tin chi tiết Power BI kết nối với hàng trăm nguồn dữ liệu và làm cho dữ liệu trở nên sống động với bảng điều khiển và báo cáo trực tiếp Người dùng có thể sử dụng Power BI để lấy
dữ liệu từ nhiều hệ thống trong đám mây và tại on-premises, đồng thời tạo trang tổng quan theo dõi các chỉ số quan tâm nhất hoặc đi sâu vào và đặt câu hỏi về ý nghĩa của các dữ liệu này với doanh nghiệp/ hoạt động kinh doanh
Power BI giúp đưa ra quyết định nhanh chóng Kết nối, mô hình hóa và sau đó khám phá dữ liệu với các báo cáo trực quan mà người dùng có thể cộng tác, xuất bản và chia
sẻ Power BI tích hợp với các công cụ khác, bao gồm Microsoft Excel, do đó người dùng
có thể tăng tốc nhanh chóng và làm việc liền mạch với các giải pháp hiện có của mình
Trang 2Khởi tạo: Kết nối với dữ liệu của người dùng ở bất cứ nơi nào Sau đó khám phá dữ
liệu với hình ảnh tương tác tuyệt đẹp Power BI có thể kết nối được với mọi loại hình kho lưu trữ dữ liệu tại chỗ khác nhau như SQL Server, Oracle hoặc Hadoop Đối với kho lưu trữ điện toán đám mây như Google BigQuery hay Azure, Power BI có sẵn các trình kết nối được nhà phát triển xây dựng trước nhằm tạo nên trải nghiệm đa nhiệm nhất
Hợp tác và chia sẻ: Xuất bản báo cáo và bảng điều khiển (dashboard), cộng tác với
nhóm và chia sẻ những hiểu biết bên trong và bên ngoài tổ chức làm việc Người dùng có thể xuất các báo cáo trực quan trực tiếp lên mạng Internet và gửi qua email cho những người liên quan Để đảm bảo an ninh, có thể thiết lập giới hạn quyền truy cập vào báo cáo hoặc thiết lập các vùng dữ liệu đặc thù, chỉ cho phép những người nhất định truy cập
Truy cập thông tin ở bất cứ nơi đâu: Người dùng có thể dễ dàng xem thông tin ở cả
máy tính và ở điện thoại thông minh có cài Power BI Mobile Power BI cho phép chia sẻ thông tin dữ liệu và báo cáo với người khác, không bị phụ thuộc vào điều kiện địa lý, thời gian hay thiết bị Hệ thống này cũng có tính linh hoạt vì nó hoạt động với các hệ điều hành hàng đầu – Windows, iOS và Android Khi những người có quyền truy cập tiến hành chỉnh sửa, cập nhật dữ liệu, hệ thống sẽ thông báo ngay đến chủ sở hữu để nhanh chóng phân tích kịp thời
Microsoft Power BI ban đầu được gọi là Project Crescent và được phát hành vào tháng 7 năm 2011, đi kèm với SQL Server, tên mã là Denali Sau đó, nó được đổi tên thành Power BI và được công bố vào tháng 9 năm 2013 với tên gọi Power BI cho Office 365 (nay
là Microsoft 365) Khởi đầu dựa trên các tính năng của Excel như Power Query, Power Pivot và Power View, Microsoft đã thêm nhiều tính năng theo thời gian, bao gồm các tùy chọn bảo mật và kết nối dữ liệu cấp doanh nghiệp Power BI được phát hành dưới dạng sản phẩm độc lập vào tháng 7 năm 2015
Microsoft Power BI bao gồm một bộ sưu tập các ứng dụng và có thể được sử dụng trên máy tính để bàn (desktop), dưới dạng sản phẩm SaaS (phần mềm dưới dạng dịch vụ)
hoặc trên thiết bị di động Power BI Desktop là phiên bản On-premise, Power BI Service là dịch vụ dựa trên đám mây và Power BI Mobile chạy trên thiết bị di động, điện thoại và
máy tính bảng
Các công cụ khác nhau của Power BI nhằm cho phép người dùng tạo và chia sẻ những hiểu biết về dữ liệu theo cách phù hợp với vai trò của họ
Trang 32 NHỮNG KHÁI NIỆM CƠ BẢN VỀ DAX POWER BI
DAX là viết tắt của cụm từ Data Analysis Expressions, cơ bản được hiểu 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 Nói một cách ngắn gọn, DAX trong Power BI giúp tạo lập thông tin mới từ những dữ liệu có sẵn trong mô hình dữ liệu bằng cách tập hợp và tính toán
DAX thường được ví von như hàm trong Excel, giúp nâng tầm Power BI Trong lĩnh vực phân tích dữ liệu, khi cần thực hiện những bài toán đa chiều, phức tạp như phân tích phần trăm tăng trưởng giữa các loại sản phẩm cho phạm vi ngày khác nhau hay tính tăng trưởng hằng năm so với xu hướng thị trường… Lúc này, DAX sẽ là một cứu cánh tuyệt vời
để giải quyết những vấn đề của doanh nghiệp Đưa ra các dữ liệu, số liệu cần thiết cho những định hướng, quyết định trong hiện tại và tương lai DAX đóng một vai trò rất lớn trong Power BI:
- DAX trong Power BI là một bộ hàm đa dạng, bao gồm những hàm tính toán từ cơ bản
tới nâng cao, hàm phân tích giá trị theo thời gian, liên kết các trường dữ liệu giữa các bảng khác nhau, giúp xử lý nhanh chóng và đơn giản những bài toán đa chiều, phức tạp
- Hỗ trợ hiệu quả trong công việc bóc tách dữ liệu và tối ưu hiệu suất hệ thống
- Dễ dàng kết nối dữ liệu tạo ra các biểu đồ trực quan, giúp đưa ra các số liệu cần thiết
tổng quan tới chi tiết cho những quyết định và định hướng của doanh nghiệp
Cú pháp công thức DAX (Syntax)
Trước khi tạo ra các công thức tính toán, người dùng cần biết cú pháp của DAX trong Power BI Cú pháp bao gồm các thành phần khác nhau tạo thành công thức DAX, hay đơn giản hơn là cách viết công thức
Công thức DAX phải có cú pháp chính xác, nếu cú pháp không đúng, lỗi cú pháp
sẽ được trả về Trình chỉnh sửa DAX trong Power BI Desktop có chứa tính năng gợi ý, được sử dụng để tạo các công thức chính xác về mặt cú pháp bằng cách giúp người dùng chọn các phần tử chính xác
Một ví dụ về về công thức DAX Power BI để tạo ra dữ liệu mới:
Trang 4Công thức này bao gồm các thành phần sau đây:
- A Tên của measure, ở đây là Total Sales Vì measure có thể sử dụng lại nhiều lần
nên việc đặt tên gợi nhớ thường được khuyến khích
- B Dấu bằng (=) là ký tự bắt đầu của công thức
- C Tên hàm của DAX, ở đây là hàm SUM thực hiện phép tính tổng
- D Dấu ngoặc dùng để chứa các phần bên trong hàm, sau tên hàm luôn là dấu mở
và đóng ngoặc để chứa các phép tính bên trong
- E Bảng được tham chiếu đến, ở đây là Sales
- F Cột được tham chiếu đến trong bảng, ở đây là cột SalesAmount của bảng Sales
Công thức trên sẽ tạo ra một measure có tên là Total Sales và có giá trị bằng tổng các giá trị trong cột SalesAmount của bảng Sales
Hàm (Function)
Hàm là công thức được xác định trước, thực hiện tính toán bằng cách sử dụng các giá trị cụ thể, được gọi là các đối số (arguments) theo một thứ tự hoặc cấu trúc cụ thể Đối số có thể là các hàm khác, một công thức khác, tham chiếu cột, số, văn bản, giá trị luận lý như TRUE hoặc FALSE hoặc hằng số Hàm trong DAX giúp người dùng tạo ra các công thức mạnh mẽ, người dùng có thể xây dựng một công thức DAX sử dụng nhiều hàm kết hợp với nhau
Power BI DAX bao gồm những loại hàm như sau: Date and Time, Time Intelligence, Information, Logical, Mathematical, Aggregation, Satistical, Text(chữ), Parent and Child, và một số khác
Date & Time: Tương tự hàm Date and Time của Microsoft Excel Tuy nhiên, hàm
DAX sẽ dựa trên kiểu dữ liệu ngày tháng được sử dụng bởi Microsoft SQL Server
Trang 5Ví dụ: DATEDIFF, YEARFRAC, YEAR/MONTH/DAY,
HOUR/MINUTE/SECOND, TODAY/NOW, WEEKDAY/WEEKNUM
Time-intelligence: Những hàm này có thể giúp bạn tạo ra những phép tính sử
dụng kiến thức tích hợp về lịch và ngày tháng Bằng cách sử dụng thời gian và các khoảng ngày kết hợp những phép tính, tổng hợp để tạo ra các so sánh trong những khoảng thời gian
Ví dụ: DATESYD, DATESQTD, DATESMTD, DATEADDDATESINPERIOD
Filter: Trả về những giá trị cụ thể, tra cứu giá trị trong các bảng liên quan và lọc
theo giá trị liên quan Các hàm tra cứu sẽ làm việc bằng cách sử dụng các bảng và mối quan hệ giữa chúng Các hàm lọc sẽ cho phép bạn thao tác với bối cảnh dữ liệu (context) để tạo ra những phép tính động Những hàm FILTER là đặc trưng của PowerBI với tác dụng nhằm tra cứu dựa trên các bảng có liên quan và các hàm lọc để tính toán
Ví dụ: CALCULATE, FILTER, ALL, ALLEXCEPT, RELATED,
RELATEDTABLE, DISTINCT, VALUES, EARLIER/EARLIEST,
HASONEVALUE, HASONEFILTER, ISFILTERED, USERELATIONSHIP
Information: Xem xét một bảng hoặc cột được dùng làm đối số cho hàm khác và
cho bạn biết liệu giá trị có khớp với dự kiến không
Ví dụ: hàm ISERROR trả về TRUE nếu giá trị tham chiếu chứa một lỗi (error)
Logical: Trả về thông tin các giá trị trong biểu thức
Ví dụ: IF, IFERROR, AND, OR, NOT, SWITCH, TRUE, FALSE
Mathematical hay Math and Trig: Tương tự như các hàm mathematical và
trigonometric(toán học và lượng giác) của Excel
Ví dụ: ABS, DIVIDE, INT, POWER, ROUND, RAND, PI, LOG,
ROUNDDOWN, ROUNDUP, EVEN, EXP
Aggregation: Thực hiện tổng hợp như tính tổng, tìm trung bình, giá trị tối thiểu
và tối đa… Trong DAX bạn còn có thể lọc một cột trước khi tổng hợp hoặc tạo tổng hợp dựa trên các bảng liên quan
Trang 6Ví dụ: SUM, AVERAGE, MAX/MIN, COUNT, COUNTA, COUNTROWS, DISTINCTOUNT, SUMX, AVERAGEX, MAXX, MINX, COUNTAX,
COUNTX, PRODUCT, PRODUCTX
Satistical: Thực hiện tính toán các giá trị liên quan tới phân phối và xác xuất trong
thống kê
Ví dụ: BETA.DIST, BETA.INV, COMBIN, COMBINA, MEDIAN,
MEDIANX, RANKX, RANK.EQ, SAMPLE, STDEV.P, STDEV.S,
STDEVX.P, STDEVX.S
Text: Trả về một phần của chuỗi, tìm kiếm văn bản trong chuỗi hoặc nối các giá
trị chuỗi
Ví dụ: CONCATENATE, FORMAT, LEFT/MID/RIGHT, UPPER/LOWER, PROPER, LEN, SEARCH/FIND, REPLACE, REPT, SUBTITUTE, TRIM, UNICHAR
Parent and Child: Có chức năng giúp người dùng quản lý dữ liệu, được trình bày
dưới dạng phân cấp cha/con
Ví dụ: PATH, PATHCONTAINS, PATHITEM, PATHITEMREVERSE,
PATHLENGTH
Other: Các hàm này thực hiện những hành động đặc biệt mà không thể được xác
định bởi bất cứ loại hàm nào
Hàm DAX trong Power BI cũng có chức năng tương tự như các hàm trong Excel
và được xây dựng trên thư viện hàm Excel, giúp người sử dụng có thể dễ dàng tính toán các dữ liệu, các bài toán từ đơn giản tới phức tạp Tuy nhiên, hàm DAX trong Power
BI vẫn có những điểm khác biệt so với các hàm trong Excel Cụ thể như sau:
Một số hàm DAX và Excel có cùng tên gọi, thậm chí là chức năng nhưng kiểu dữ liệu đầu vào và đầu ra có thể khác nhau Vì vậy, nếu bạn muốn kết nối dữ liệu từ tệp Excel sang Power BI, cần chú ý sử dụng theo đúng cấu trúc và dữ liệu của hàm DAX trong Power BI, không thể dùng hàm Excel
Hàm DAX không lấy tham chiếu ô hoặc phạm vi làm tham chiếu mà chỉ sử dụng bảng hoặc cột
Trang 7 Kết quả trả về đối với hàm thời gian: Đối với hàm thời gian như ngày tháng năm, giờ, phút , hàm Excel sẽ trả về kiểu số nguyên, còn hàm DAX trong Power BI sẽ trả về kiểu datetime
Nhiều hàm DAX có thể trả về bảng chứa các giá trị hoặc thực hiện các phép tính dựa trên dữ liệu đầu vào là một bảng chứa các giá trị Trong khi đó, Excel không
có hàm trả về bảng, nếu dữ liệu Excel của bạn không thể đáp ứng nhu cầu này bạn
có thể kết nối đến Power BI và xử lý trực tiếp bằng các hàm DAX
Hàm DAX trong Power BI cũng có những hàm tra cứu mới với chức năng tương
tự hàm tra cứu mảng trong Excel Tuy nhiên, cần lưu ý là DAX yêu cầu thiết lập mối quan hệ giữa các bảng
Trong Power BI, dữ liệu trong cùng cột sẽ luôn có cùng kiểu Nếu các dữ liệu không được định dạng cùng kiểu với nhau, hàm DAX trong Power BI sẽ tự động thay đổi các dữ liệu đó thành kiểu thích hợp nhất, phù hợp với tất cả các dữ liệu cho cột
Ngữ cảnh trong DAX (Context)
Ngữ cảnh là một khái niệm quan trọng cần hiểu khi tạo công thức DAX Ngữ cảnh cho phép thực hiện các phân tích động, kết quả của công thức sẽ thể hiện khác nhau theo ngữ cảnh lựa chọn Hiểu ngữ cảnh và sử dụng ngữ cảnh một cách hiệu quả là rất quan trọng để xây dựng các phân tích động, hiệu suất cao và khắc phục sự cố trong công thức Power BI Desktop có các loại ngữ cảnh trong DAX đó là Row Context và Filter Context
Row Context: nếu tạo công thức cho một cột tính toán (caculated column), row
context cho công thức sẽ bao gồm các giá trị từ các cột trong hàng hiện tại Ví dụ:
giả sử tạo cột được tính, =[Cước phí] + [Thuế], để cộng các giá trị từ cột Cước
phí và Thuế từ cùng một bảng Công thức này chỉ lấy các giá trị từ trong cột đã chỉ định hàng hiện tại để tính toán
Ngữ cảnh hàng cũng tuân theo bất kỳ mối quan hệ nào đã được xác định giữa các bảng, bao gồm các quan hệ được xác định trong một cột tính toán bằng công thức DAX, để xác định những hàng nào trong các bảng có liên quan liên kết với hàng
Trang 8 Filter Context: Hãy hình dung Filter Context giống như là một hoặc nhiều bộ lọc
được áp dụng trong một phép tính giúp xác định kết quả hoặc giá trị Filter Context không tồn tại thay cho Row Context, nó sẽ được áp dụng bên ngoài Row Context
Ví dụ: để thu hẹp các giá trị cần đưa vào tính toán, bạn có thể áp dụng Filter Context không chỉ xác định Row Context mà còn xác định một giá trị cụ thể trong Row Context đó
Filter Context dễ dàng được nhìn thấy trong báo cáo Ví dụ khi bạn muốn thêm TotalCost vào biểu đồ và sau đó thêm vào Year và Region, bạn sẽ có một Filter Context để chọn dữ liệu năm(Year) và vùng(Region)
Tại sao Filter Context lại quan trọng đối với DAX? Đó là bởi vì Filter Context có thể dễ dàng được thêm từ Fields vào Visualization Nó cũng có thể được áp dụng trong một công thức DAX bằng cách xác định một bộ lọc sử dụng các hàm như là ALL, RELATED, FILTER, CALCULATE bằng các mối quan hệ, measures và cột khác
Ví dụ: Hãy cùng xét ví dụ dưới đây được lấy từ công thức trong một measure có tên Store Sales
Để dễ hiểu hơn về công thức này, tách công thức ra thành nhiều phần như cách đã làm trong phần Cú pháp công thức trong DAX Công thức này bao gồm các thành phần sau đây:
A Tên của measure, Store Sales
B Dấu bằng(=) để bắt đầu công thức
C Hàm CALCULATE, đánh giá một biểu thức dưới dạng đối số trong một ngữ
cảnh được sửa đổi bởi các bộ lọc xác định
D Dấu ngoặc “()” sử dụng để chứa các nội dung bên trong hàm CALCULATE
Trang 9E Measure [Total Sales] trong cùng một bảng với biểu thức, ở đây được dùng
như một đối số Bản thân Total Sales có công thức =SUM(Sales[SalesAmount])
F Dấu phẩy để ngăn cách hai phần trong hàm CALCULATE
G Cột được tham chiếu, Channel[ChannelName] Đây là Row Context với mỗi
dòng trong cột này chỉ định một channel, như là Store hay Online
H Giá trị cụ thể, ở đây là Store, được sử dụng như là một bộ lọc Đây chính
là Filter Context của chúng ta
Công thức này đảm bảo giá trị bán hàng Total Sales sẽ chỉ được tính toán cho hàng của cột Channel[Channel Name] với giá trị là Store Hiểu được Filter Context trong công thức sẽ mang đến sức mạnh lớn trong việc phân tích dữ liệu bằng Power BI Desktop
3 TẠO MỘT CÔNG THỨC ĐƠN GIẢN TRONG DAX
Trình chỉnh sửa DAX trong Power BI Desktop có tính năng gợi ý cú pháp đúng nhằm giúp người dùng chọn đúng các thành phần trong công thức Thực hiện ví dụ dưới đây để hiểu được cách dùng gợi ý của Power BI, qua đó, giúp người dùng viết đúng cú pháp
Bước 1: Tải và mở file dữ liệu mẫu Contoso Sale Sample [5] trong Power BI Desktop
Bước 2: Tại cửa sổ Report, ở tab Fields, click phải vào bảng Sales và chọn New
Measure
Bước 3: Đặt lại tên mới cho measure là Previous Quarter Sales (tên mặc định sẽ là
measure, measure1, measure2… nếu người dùng không đổi tên)
Bước 4: Sau dấu bằng (=), nhập vào từ CAL và double-click vào hàm muốn dùng
Trong công thức này sẽ sử dụng hàm CALCULATE để lọc con số muốn tính tổng bằng một tham số được chuyển cho nó Ở đây được gọi là lồng chức năng (tức chúng
ta sẽ lồng thêm 1 hàm bên trong hàm CALCULATE)
Hàm CALCULATE sẽ có ít nhất 2 đối số (arguments) cần nhập vào, thứ nhất là biểu thức tính toán và thứ hai là bộ lọc
Bước 5: Sau tên hàm CALCULATE là dấu mở ngoặc “(”, nhập vào SUM và chọn
hàm SUM từ gợi ý
Trang 10 Bước 6: Nhập 3 ký tự Sal, chọn Sales[SalesAmount] từ gợi ý và đóng ngoặc “)” Đây
chính là biểu thức đối số thứ nhất của hàm CALCULATE
Bước 7: Dùng dấu phẩy “,” để kết thúc đối số thứ nhất và chuyển đến đối số thứ hai
Sau đó, nhập PREVIOUSQUARTER Sử dụng hàm thời gian thông minh (time intelligence) PREVIOUSQUARTER để lọc kết quả SUM(đối số thứ nhất) theo quý liền kế trước đó
Bước 8: Nhập dấu dấu mở ngoặc “(” cho hàm PREVIOUSQUARTER, nhập tiếp
Calendar[DateKey] Hàm PREVIOUSQUARTER có một đối số, là một cột chứa dãy giá trị các ngày Trong công thức này là cột DateKey của bảng Calendar
Bước 9: Đóng các tham số trong hàm PREVIOUSQUARTER và hàm
CALCULATE bằng việc nhập 2 dấu đóng ngoặc “))” Công thức hoàn chỉnh sẽ như sau:
Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]),
PREVIOUSQUARTER(Calendar[DateKey]))
Chú ý có đến 2 dấu ngoặc đóng ở cuối, dấu ngoặc đầu tiên của hàm PREVIOUSQUATER và dấu ngoặc thứ hai của hàm CALCULATE
Bước 10: Chọn dấu check bên trái công thức để xác nhận hoàn tất và thêm nó vào
bảng Sales, hoặc nhấn phím Enter trên bàn phím
Như vậy là người dùng đã tạo xong một measure sử dụng công thức DAX, công thức này sẽ tính Total Sales cho quý trước, tùy thuộc vào các bộ lọc (filter) được áp dụng trong báo cáo Công thức bao gồm hai hàm PREVIOUSQUARTER, là hàm thời gian thông minh, được lồng vào như là một đối số của hàm CALCULATE; nó là một hàm bộ lọc (filter) Bộ lọc thu hẹp những gì sẽ được tính toán Hàm CALCULATE là một trong những hàm mạnh mẽ nhất trong DAX Khi tạo ra các mô hình và tạo các công thức phức tạp hơn, người dùng có thể sẽ sử dụng hàm này nhiều lần
Cần lưu ý, dữ liệu mẫu chỉ chứa một lượng nhỏ dữ liệu bán hàng trong một phạm vi ngày nhất định Nếu người dùng chọn một năm hoặc một quý không thể tổng hợp SalesAmount hoặc measure của người dùng không thể tính toán dữ liệu bán hàng cho quý trước đó, thì sẽ không có dữ liệu nào cho khoảng thời gian đó được hiển thị