Excel DAX - Toán tử

DAX là một ngôn ngữ công thức bao gồm các hàm, toán tử và giá trị 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ị.

Bạn có thể dùng DAX operatorsđể so sánh các giá trị, thực hiện các phép tính số học và nối các chuỗi. Trong chương này, bạn sẽ tìm hiểu về các toán tử DAX và cách sử dụng chúng.

Các loại toán tử DAX

DAX hỗ trợ các loại toán tử sau:

  • Toán tử số học DAX
  • Toán tử so sánh DAX
  • Toán tử kết nối văn bản DAX
  • Toán tử lôgic DAX

Thứ tự ưu tiên nhà điều hành DAX

Bạn có thể có một công thức DAX với nhiều toán tử DAX kết hợp một số giá trị hoặc biểu thức. Trong trường hợp như vậy, kết quả cuối cùng sẽ phụ thuộc vào thứ tự thực hiện các thao tác. DAX cung cấp cho bạn thứ tự ưu tiên toán tử mặc định và cả các cách ghi đè thứ tự ưu tiên mặc định.

Ưu tiên toán tử mặc định DAX được liệt kê trong bảng sau.

Thứ tự ưu tiên (Các) nhà điều hành Hoạt động
1 ^ Luỹ thừa
2 - Ký tên
3 * và / Phép nhân và phép chia
4 ! KHÔNG PHẢI
5 + và - Cộng và trừ
6 & Kết nối
7 =, <,>, <=,> = và <> Bằng, Nhỏ hơn, Lớn hơn, Nhỏ hơn hoặc bằng, Lớn hơn hoặc bằng và Không bằng

Cú pháp biểu thức DAX

Trước tiên, bạn cần hiểu cú pháp biểu thức DAX và cách đánh giá biểu thức được thực hiện với các toán hạng và toán tử.

  • Tất cả các biểu thức luôn bắt đầu bằng dấu bằng (=). Dấu bằng chỉ ra rằng các ký tự tiếp theo tạo thành một biểu thức.

  • Ở bên phải của dấu bằng, bạn sẽ có các toán hạng được kết nối bởi các toán tử DAX. Ví dụ: = 5 + 4> 5.

    = 5 * 6 - 3.

  • Các biểu thức luôn được đọc từ trái sang phải và các phép tính được thực hiện theo trình tự đó, dựa trên ưu tiên toán tử DAX được đưa ra trong phần trước.

  • Nếu các toán tử DAX có giá trị ưu tiên bằng nhau, chúng được đánh giá từ trái sang phải. Ví dụ: = 5 * 6/10. Cả hai * và / đều có cùng thứ tự tiền lệ. Do đó, biểu thức được đánh giá là 30/10 = 3.

  • Nếu các toán tử DAX trong biểu thức có các giá trị ưu tiên khác nhau, thì chúng được đánh giá theo thứ tự ưu tiên từ trái sang phải.

    • = 5 + 4> 7. Mức độ ưu tiên mặc định là + đầu tiên và> tiếp theo. Do đó, biểu thức được tính từ trái sang phải. - 5 + 4 được tính đầu tiên dẫn đến kết quả là 9 và sau đó 9> 5 được đánh giá là kết quả ĐÚNG.

    • = 5 * 6 - 3. Mức độ ưu tiên mặc định là * đầu tiên và - tiếp theo. Do đó, biểu thức được tính từ trái sang phải. - 5 * 6 được tính trước tiên cho kết quả là 30 và sau đó 30 - 3 được tính cho kết quả là 27.

    • = 2 * 5 - 6 * 3. Mức độ ưu tiên mặc định là * đầu tiên, * tiếp theo và sau đó -. Do đó, biểu thức đánh giá là 10 - 18 và sau đó là -8. Lưu ý rằng nó không phải là 10 - 6 dẫn đến 4 và sau đó 4 * 3 mà là 12.

Sử dụng dấu ngoặc đơn để kiểm soát thứ tự tính toán DAX

Bạn có thể thay đổi thứ tự ưu tiên toán tử mặc định DAX bằng cách sử dụng dấu ngoặc đơn, nhóm các toán hạng và toán tử để điều khiển trình tự tính toán.

Ví dụ: = 5 * 6 - 3 cho kết quả là 27 với thứ tự ưu tiên toán tử mặc định DAX. Nếu bạn sử dụng dấu ngoặc đơn để nhóm các toán hạng và toán tử là = 5 * (6 - 3), thì 6 - 3 được tính trước tiên dẫn đến kết quả là 3 và sau đó 5 * 3 được tính với kết quả là 15.

= 2 * 5 - 6 * 3 cho kết quả là -8 với thứ tự ưu tiên toán tử mặc định DAX. Nếu bạn sử dụng dấu ngoặc đơn để nhóm các toán hạng và toán tử là = 2 * (5 - 6) * 3, thì 5 - 6 được tính đầu tiên dẫn đến -1 và sau đó 2 * (-1) * 3 được tính với kết quả là -6 .

Như bạn thấy, với cùng một toán hạng và toán tử, các kết quả khác nhau có thể có bằng cách bạn nhóm chúng. Do đó, khi bạn sử dụng các toán tử DAX trong công thức DAX, bạn nên chú ý đến trình tự tính toán như thế nào.

Sự khác biệt giữa Excel và DAX

Mặc dù DAX có những điểm tương đồng với các công thức Excel, nhưng có một số điểm khác biệt đáng kể giữa hai công thức.

  • DAX mạnh hơn Excel vì công cụ tính toán thường trú bộ nhớ cơ bản của nó.

  • DAX hỗ trợ nhiều kiểu dữ liệu hơn Excel.

  • DAX cung cấp các tính năng nâng cao bổ sung của cơ sở dữ liệu quan hệ, Mô hình dữ liệu, bao gồm hỗ trợ phong phú hơn cho các loại ngày và giờ.

Trong một số trường hợp, kết quả tính toán hoặc hoạt động của các hàm trong DAX có thể không giống như trong Excel. Điều này là do sự khác biệt trong những điều sau:

  • Truyền kiểu dữ liệu
  • Loại dữ liệu

Sự khác biệt trong truyền kiểu dữ liệu

Trong DAX, khi bạn có biểu thức = value1 toán tử value2, hai toán hạng value1 và value2 phải có cùng kiểu dữ liệu. Nếu các kiểu dữ liệu khác nhau, DAX sẽ chuyển đổi chúng trước tiên thành một kiểu dữ liệu chung. Tham khảo chương - Cú pháp DAX để biết thêm chi tiết.

Ví dụ: bạn phải so sánh hai toán hạng của các kiểu dữ liệu khác nhau, chẳng hạn như một số kết quả từ một công thức, chẳng hạn như = [Số tiền] * 0,08 và một số nguyên. Số đầu tiên có thể là một số thập phân với nhiều chữ số thập phân, trong khi số thứ hai là một số nguyên. Sau đó DAX xử lý nó như sau:

  • Đầu tiên, DAX sẽ chuyển đổi cả hai toán hạng thành số thực bằng cách sử dụng định dạng số lớn nhất có thể lưu trữ cả hai loại số.

  • Tiếp theo, DAX sẽ so sánh hai số thực.

Ngược lại, Excel cố gắng so sánh các giá trị của các kiểu dữ liệu khác nhau mà trước tiên không ép buộc chúng vào một kiểu dữ liệu chung. Vì lý do này, bạn có thể tìm thấy các kết quả khác nhau trong DAX và trong Excel cho cùng một biểu thức so sánh.

Sự khác biệt về các loại dữ liệu

Thứ tự ưu tiên toán tử trong DAX và Excel là giống nhau. Tuy nhiên, toán tử phần trăm (%) và phạm vi dữ liệu mà Excel hỗ trợ không được DAX hỗ trợ. Hơn nữa, DAX hỗ trợ bảng như một kiểu dữ liệu, điều này không đúng trong Excel.

Hơn nữa, trong công thức Excel, bạn có thể tham chiếu đến một ô hoặc một mảng hoặc một dải ô. Trong công thức DAX, bạn không thể tham chiếu đến bất kỳ công thức nào trong số này. Công thức DAX tham chiếu đến dữ liệu phải theo bảng, cột, trường được tính toán và cột được tính toán.

Nếu bạn sao chép công thức từ Excel và dán chúng vào DAX, hãy đảm bảo tính đúng đắn của công thức DAX vì cú pháp DAX khác với cú pháp công thức Excel. Ngoài ra, ngay cả khi một hàm có cùng tên trong DAX và Excel, các tham số của nó có thể khác nhau và kết quả của hàm cũng có thể khác nhau.

Bạn sẽ tìm hiểu thêm về tất cả những điều này trong các chương tiếp theo.