Professional Documents
Culture Documents
Phan - Tich - Du - Lieu 5.12.2021
Phan - Tich - Du - Lieu 5.12.2021
Hồ Chí Minh
TRUNG TÂM TIN HỌC
2020
Nội dung
1. Introduction
2. Variables
3. Multi Filter
5. Time Intelligence
6. Advanced Relationships
7. Optimizing DAX
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 2
Introduction
DAX thuộc nhóm ngôn ngữ lập trình hàm (Functional Language) trong
đó cho phép kết hợp các các hàm, toán tử và hằng số để phân tích dữ
liệu.
DAX được dùng trong Power Pivot của Excel, SQL Server Analysis
Services và Power BI.
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 3
Introduction
Cú pháp:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 4
Introduction
Để phân tích động, chúng ta cần hiểu rõ ngữ cảnh sử dụng trong hàm
DAX
● Filter Context
● Row Context
Ví dụ: cho Data Model gồm 2 bảng Sales và Customer. Tính doanh thu theo
Country “OZ”
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 5
Introduction
Data Model
Sales
Customer
Để tính doanh thu theo Country “OZ”, ta sử dụng công thức DAX sau:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 6
Introduction
Các bước thực thi công thức DAX:
● Thêm “OZ” vào filter context -> lọc và trả về kết quả là view mới
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 7
Introduction
Các bước thực thi công thức DAX:
● Thêm column “X” trong View mới -> tính tổng theo công thức
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 8
Variables
Biến là đối tượng sử dụng để lưu trữ tạm thời các giá trị.
Ví dụ:
NewDiscount =
VAR Distcount= SUM(Invoices[TotalDiscount])
RETURN
IF(
Distcount > 1000,
Distcount,
Distcount * 1.1
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 9
Variables
Cú pháp:
● Sử dụng từ khóa VAR để khai báo biến, có thể khai báo nhiều biến trong
cùng khối lệnh.
● Sử dụng từ khóa RETURN để trả về giá trị trong khối lệnh, tuy nhiên kết
quả trả về phải là biến hoặc biểu thức duy nhất.
Ví dụ:
SalesAmt =
SUMX (
InvoiceLines,
VAR Quantity = InvoiceLines[LineItem]
VAR Price = InvoiceLines[SalePrice]
RETURN
Quantity * Price
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 10
Variables
Phạm vi sử dụng:
● Biến có thể tham chiếu các biến được định nghĩa trước trong khối lệnh
hoặc các biến được định nghĩa trước đó cấp bên ngoài (Hàm nhiều cấp).
Ví dụ:
Margin =
VAR SalesAmount = SUMX ( Sales, Sales[Quantity] *
Sales[Net Price] )
VAR TotalCost = SUMX ( Sales, Sales[Quantity] *
Sales[Unit Cost] )
VAR Margin = SalesAmount - TotalCost
RETURN
Margin
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 11
Variables
Ví dụ:
AmountCurrent =
SUMX (
'Product’,
VAR CurrentPrice = 'Product'[Unit Price]
RETURN
SUMX (
RELATEDTABLE ( Sales ),
VAR Quantity = Sales[Quantity]
VAR AmountAtCurrentPrice = Quantity * CurrentPrice
RETURN
AmountAtCurrentPrice
)
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 12
Variables
Biến có thể lưu trữ giá trị Scalar hoặc Table.
Ví dụ:
Segments =
VAR Vals =
DATATABLE(
"Segment",STRING,
"Segment Sort", INTEGER,
"Max Sales",CURRENCY,
{
{"Low",1,100000},{"Mideum", 2, 150000},{"High",3,
999999}
}
)
RETURN Vals
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 13
Multi Filter
Tùy theo nhu cầu, ngữ cảnh phân tích và thống kê dữ liệu, đôi khi chúng
ta cần kết hợp nhiều tiêu chí bộ lọc.
DAX cung cấp các hàm kết hợp và sử dụng các bộ lọc để đáp ứng theo
từng yêu cầu nghiệp vụ khác nhau.
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 14
Multi Filter
Hàm KEEPFILTERS:
● Qui định cách bộ lọc được áp dụng trong khi sử dụng hàm CALCULATE.
● Cú pháp
KEEPFILTERS (<Expression>)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 15
Multi Filter
Ví dụ: xem thống kê doanh thu theo hãng xe
Revenue = SUM(InvoiceLines[Sales])
RevenueBentley =
CALCULATE(
SUM(InvoiceLines[Sales]),
Stock[Make]=“Bentley”
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 16
Multi Filter
Ví dụ: xem thống kê doanh thu theo hãng xe
RevenueBentley =
CALCULATE(
SUM(InvoiceLines[Sales]),
Stock[Make]=“Bentley”
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 17
Multi Filter
Ví dụ: xem thống kê doanh thu theo hãng xe
RevenueBentley =
CALCULATE(
SUM(InvoiceLines[Sales]),
KEEPFILTERS( Stock[Make]=“Bentley”)
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 18
Multi Filter
Hàm ALL:
● Trả về tất các dòng trong bảng hoặc tất cả các giá trị trong cột. Bỏ qua
các bộ lọc đang áp dụng.
● Cú pháp
ALL([<table>|<column>[,<column>[,…]]])
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 19
Multi Filter
Ví dụ: xem thống kê doanh thu theo hãng xe và màu “Black”
Revenue = SUM(InvoiceLines[Sales])
RevenueColorBlack =
CALCULATE(
SUM(InvoiceLines[Sales]),
FILTER(
ALL(Colors),
Colors[Color]="Black”
)
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 20
Multi Filter
Ví dụ: xem thống kê doanh thu theo hãng xe và màu “Black”
RevenueColorBlack =
CALCULATE(
SUM(InvoiceLines[Sales]),
FILTER(
ALL(Colors),
Colors[Color]="Black”
)
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 21
Multi Filter
Hàm REMOVEFILTERS:
● Xóa các bộ lọc đang áp dụng trên Table | Column.
● Cú pháp
REMOVEFILTERS([<table>|<column>[,<column>[,…]]])
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 22
Multi Filter
Ví dụ: tính tỉ lệ phần trăm Revenue theo Category “%GT”
% GT =
DIVIDE(
SUM(Sales[Revenue]),
CALCULATE(
SUM(Sales[Revenue]),
REMOVEFILTERS('Product’),
VALUES('Product'[Category])
)
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 23
Multi Filter
Ví dụ: tính tỉ lệ phần trăm Revenue theo Category “%GT”
% GT = DIVIDE(
SUM(Sales[Revenue]),
CALCULATE(
SUM(Sales[Revenue]),
REMOVEFILTERS('Product’),
VALUES('Product'[Category])
)
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 24
Calculate & Nested Level
Hàm CALCULATE:
● Đánh giá biểu thức với tham số ngữ cảnh bộ lọc mới được truyền vào.
● Cú pháp
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 25
Calculate & Nested Level
Ví dụ: xem thống kê Revenue theo Country “USA”
RevenueCountrySumX =
SUMX(
FILTER(Sales,Sales[Country]="USA"),
Sales[Revenue]
)
RevenueCountryCalculate =
CALCULATE(
SUM(Sales[Revenue]),
Geography[Country]="USA"
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 26
Calculate & Nested Level
Khi sử dụng hàm CALCULATE “Nested Level”, theo thứ tự thực thi từ cấp
ngoài vào trong.
Revenue = SUM(InvoiceLines[Sales] )
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 27
Calculate & Nested Level
Ví dụ: xem thống kê Sales theo Color và Make
RevenueNestLevel =
CALCULATE (
CALCULATE (
SUM(InvoiceLines[Sales] ),
Colors[Color] IN { "Green", "Black" }
),
ALLSELECTED(Stock[Make])
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 28
Time Intelligence
Trong mô hình dữ liệu doanh nghiệp thường lưu trữ thông tin về ngày
tháng kinh doanh.
Phân tích dữ liệu theo thời gian là nhu cầu quan trọng và cần thiết, do đó
DAX cung cấp cho chúng ta các tính năng để thực hiện các xử lý nghiệp
vụ theo thời gian.
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 29
Time Intelligence
Ví dụ: xem thống kê Revenue theo năm và tháng, trong đó:
● TotalRevenue: doanh thu tháng trong năm
● RunningTotalYear: doanh thu tích lũy tháng trong năm
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 30
Time Intelligence
Mô hình dữ liệu sau khi kết nối và chuẩn hóa:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 31
Time Intelligence
Sử dụng hàm DAX để tạo table Date:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 32
Time Intelligence
Tạo Relationship giữa table Date và Sales:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 33
Time Intelligence
Tạo thống kê Revenue theo năm và tháng:
RunningTotalYear =
VAR Result=
CALCULATE(
[TotalRevenue],
VAR CurrentDate= MAX('Date'[date])
VAR FilterDate= FILTER(ALL('Date'), 'Date'[Date] <=
CurrentDate && YEAR('Date'[Date])=YEAR(CurrentDate))
RETURN
FilterDate
)
RETURN
Result
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 34
Time Intelligence
Trực quan hóa với Matrix
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 35
Time Intelligence
Ví dụ: xem thống kê trung bình số ngày giao hàng theo năm và tháng, trong
đó:
● NumberDate = (DeliveryDate – InvoiceDate) + 1
● Lưu ý: không tính thứ 7, chủ nhật và các ngày nghỉ lễ
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 36
Time Intelligence
Thiết kế Mô hình dữ liệu:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 37
Time Intelligence
Thống kê số ngày giao hàng trung bình:
AvgDateDelivery = AVERAGEX (
Invoices,
VAR RangeOfDates =
DATESBETWEEN (
DateDimension[DateKey],
Invoices[InvoiceDate], Invoices[DeliveryDate]
)
VAR NumberOfWorkingDays = CALCULATE (
COUNTROWS ('DateDimension’),
RangeOfDates
)
RETURN
NumberOfWorkingDays
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 38
Time Intelligence
Thống kê số ngày giao hàng trung bình (không tính thứ 7, chủ nhật):
AvgDateDelivery = AVERAGEX (
Invoices,
VAR RangeOfDates =
DATESBETWEEN (
DateDimension[DateKey],
Invoices[InvoiceDate], Invoices[DeliveryDate]
)
VAR NumberOfWorkingDays = CALCULATE (
COUNTROWS ('DateDimension’),
RangeOfDates,
NOT(WEEKDAY('DateDimension'[DateKey]) IN { 1, 7 })
)
RETURN
NumberOfWorkingDays
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 39
Time Intelligence
Thống kê số ngày giao hàng trung bình (không tính ngày lễ):
AvgDateDelivery = AVERAGEX (
Invoices,
VAR RangeOfDates =
DATESBETWEEN (
DateDimension[DateKey],
Invoices[InvoiceDate], Invoices[DeliveryDate]
)
VAR NumberOfWorkingDays = CALCULATE (
COUNTROWS ('DateDimension’), RangeOfDates,
NOT(WEEKDAY('DateDimension'[DateKey]) IN { 1, 7 }) ,
NOT(DateDimension[DateKey] IN ALL(Holiday[Date]))
)
RETURN
NumberOfWorkingDays
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 40
Time Intelligence
Table Holiday chứa danh sách các ngày nghỉ lễ được nhập theo từng năm
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 41
Time Intelligence
Trực quan hóa với Matrix
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 42
Time Intelligence
Ví dụ: xem thống kê Revenue và DeliveryCharge theo năm và tháng
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 43
Time Intelligence
Sử dụng hàm DAX để tạo table DateDelivery và DateInvoice:
DateDelivery =
CALENDAR(
MIN(Invoices[DeliveryDate]),
MAX(Invoices[DeliveryDate])
)
DateInvoice =
CALENDAR(
MIN(Invoices[InvoiceDate]),
MAX(Invoices[InvoiceDate])
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 44
Time Intelligence
Thiết kế Mô hình dữ liệu:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 45
Time Intelligence
Thống kê Revenue và DeliveryCharge
Revenue =
SUM(
InvoiceLines[Sales]
)
TotalDeliveryCharge =
SUM(
Invoices[DeliveryCharge]
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 46
Time Intelligence
Trực quan hóa với Matrix
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 47
Advanced Relationships
DAX thực thi dựa trên mô hình dữ liệu quan hệ. Do đó, hiểu và tối ưu
thiết kế bảng và quan hệ giữa các bảng giúp nâng cao kỹ năng sử dụng
DAX.
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 48
Advanced Relationships
Ví dụ: xem thống kê Revenue và DeliveryCharge theo năm và tháng
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 49
Advanced Relationships
Sử dụng hàm DAX để tạo table Date:
Date =
CALENDAR(
MIN(Invoices[InvoiceDate]),
MAX(Invoices[DeliveryDate])
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 50
Advanced Relationships
Thiết kế mô hình dữ liệu
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 51
Advanced Relationships
Thống kê Revenue và DeliveryCharge
Revenue =
SUM(
InvoiceLines[Sales]
)
TotalDeliveryCharge =
CALCULATE (
SUMX( Invoices, Invoices[DeliveryCharge]),
USERELATIONSHIP( Invoices[DeliveryDate], 'Date'[Date])
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 52
Advanced Relationships
Trực quan hóa với Matrix
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 53
Advanced Relationships
Dữ liệu trong phân tích có thể từ nhiều nguồn hay trong quá trình phân
tích có thể phát sinh bảng nên trong một số trường hợp giữa các bảng
không thiết lập mối quan hệ
Chúng ta có thể sử dụng DAX để thống kê và trực quan hóa trong ngữ
cảnh trên.
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 54
Advanced Relationships
Ví dụ: mô hình dữ liệu bán điện thoại Xiaomi
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 55
Advanced Relationships
Dữ liệu bảng KPI
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 56
Advanced Relationships
Dữ liệu bảng Sale
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 57
Advanced Relationships
Yêu cầu: thống kê và trực quan KPI và Sale của Nhân viên theo năm tháng
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 58
Advanced Relationships
Sử dụng hàm DAX thống kê Sale của nhân viên theo năm tháng:
TotalSale =
SUMX(
FILTER(
Sale,
Sale[Year-Mon] = SELECTEDVALUE('KPI'[Year-Mon]) &&
Sale[Saleman Name] =SELECTEDVALUE('KPI'[Saleman Name])
),
Sale[Sale]
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 59
Advanced Relationships
Trực quan KPI và Sale với Clustered column chart
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 60
Optimizing DAX
Tối ưu hóa biểu thức DAX là điều cần thiết trong các phân tích nghiệp vụ
nâng cao nhằm tăng hiệu suất thực thi.
DAX Studio là một trong các công cụ hỗ trợ thực thi truy vấn DAX, cho
phép xem và cải tiến hiệu suất thực thi truy vấn DAX
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 61
Optimizing DAX
Truy cập link tải và cài đặt DAX Studio https://daxstudio.org
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 62
Optimizing DAX
Kết nối nguồn dữ liệu và thực thi truy vấn DAX
● PowerPivot in Excel
● Power BI Desktop
● Analysis Services Tabular
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 63
Optimizing DAX
Kết nối nguồn dữ liệu và thực thi truy vấn DAX
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 64
Optimizing DAX
Cú pháp:
[DEFINE
{ MEASURE <tableName>[<name>] = <expression> }
{ VAR <name> = <expression>}]
EVALUATE <table>
[ORDER BY
{<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
● Từ khóa DEFINE: định nghĩa variable, measure dùng trong truy vấn DAX
● Từ khóa EVALUATE: kết quả trả về của truy vấn DAX, ở dạng table.
● Từ khóa ORDER BY: chỉ định biểu thức | cột cần sắp xếp tăng | giảm
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 65
Optimizing DAX
Ví dụ: tính tổng doanh thu bán hàng
DEFINE
MEASURE Sales[Total Sales] =
SUM ( Sales[Revenue] )
EVALUATE
ROW("Total", [Total Sales])
Kết quả:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 66
Optimizing DAX
Ví dụ: thống kê tổng doanh thu theo nhóm hàng
EVALUATE
SUMMARIZECOLUMNS(
'Product'[Category],
'Product’,
"Total", SUM(Sales[Revenue])
)
Kết quả:
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 67
Optimizing DAX
Ví dụ: thống kê tổng doanh thu nhóm hàng “Mix” và “Urban”
DEFINE
MEASURE Sales[Total]= Sum(Sales[Revenue])
EVALUATE
SUMMARIZECOLUMNS(
'Product'[Category],
TREATAS({"urban","mix"},'Product'[category]),
"Total",[Total]
)
Kết quả
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 68
Optimizing DAX
Ví dụ: hiển thị danh sách Product, thêm cột Manufacturer từ bảng
Manufacturer
EVALUATE
GENERATE(
'Product',
VAR Tri='Product'[ManufacturerID]
RETURN
CALCULATETABLE(
SELECTCOLUMNS(
Manufacturer,
"Manufacturer",
Manufacturer[Manufacturer]
),
Manufacturer[ManufacturerID]=Tri
)
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 69
Optimizing DAX
Kết quả
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 70
Optimizing DAX
Ví dụ: thống kê 3 sản phẩm có doanh thu cao nhất theo từng năm
EVALUATE
GENERATE(
SUMMARIZE('Date', 'Date'[Year]),
VAR Top3Product=
TOPN(
3,
ADDCOLUMNS(
VALUES('Product'[Product]),"@Amt",[TotalRevenue]
),
[@Amt]
)
RETURN
Top3Product
)
ORDER BY [Year], [@Amt] DESC
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 71
Optimizing DAX
Kết quả
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 72
Optimizing DAX
Để xem kịch bản thực thi và tối ưu truy vấn DAX, chúng ta sử dụng chức
năng:
● Query Plan: kịch bản thực thi truy vấn DAX
● Server Timings: hiệu suất và thời gian thực thi truy vấn DAX
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 73
Optimizing DAX
Ví dụ: cho mô hình dữ liệu sau
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 74
Optimizing DAX
Trong đó:
● Sales[SaleAmount]: số tiền thanh toán, chưa trừ giảm giá
● Customers[CustomerDiscount]: tỉ suất giảm của mỗi khách hàng
● Products[ProductDiscount]: tỉ suất giảm của mỗi sản phẩm
Yêu cầu:
● Thống kê doanh thu bán hàng theo năm
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 75
Optimizing DAX
Truy vấn DAX thống kê doanh thu theo năm:
DEFINE
MEASURE Sales[DiscountSale]=
SUMX(
Customers, --18484 rows
SUMX(
Products, -- 397 rows
VAR CustomerDiscount= Customers[CustomerDiscount]
VAR ProductDiscount= Products[ProductDiscount]
VAR SaleAmount= [TotalAmount]
RETURN SaleAmount * (1- CustomerDiscount)*(1-ProductDiscount)
)
)
EVALUATE
SUMMARIZECOLUMNS(
'Calendar'[CalendarYear],
"Amt",
[DiscountSale]
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 76
Optimizing DAX
Query Plan
● Line
● Records
● Physical Query Plan
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 77
Optimizing DAX
Server Timings
● Total
● SE (storage engine)
● FE (formula engine)
● SE CPU
● SE Queries
● SE Cache
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 78
Optimizing DAX
Tối ưu truy vấn DAX thống kê doanh thu theo năm:
DEFINE
MEASURE Sales[DiscountSale]=
SUMX(
Sales, -- 60398 rows
VAR CustomerDiscount= RELATED(Customers[CustomerDiscount])
VAR ProductDiscount= RELATED(Products[ProductDiscount])
VAR SaleAmount= [TotalAmount]
RETURN SaleAmount * (1- CustomerDiscount)*(1-ProductDiscount)
)
EVALUATE
SUMMARIZECOLUMNS(
'Calendar'[CalendarYear],
"Amt",
[DiscountSale]
)
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 79
Optimizing DAX
Query Plan
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 80
Optimizing DAX
Server Timings
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 81
Thảo luận
Bài 03: Phân tích dữ liệu với DAX (Data Analysis Expressions) 82