[Power Query Tutorial] Cách sử dụng Conditional Column

Conditional Column trong Power Query là tính năng tạo cột dữ liệu mới dựa trên quy tắc logic mà không cần viết code. Thay vì phải nhớ cú pháp phức tạp của ngôn ngữ M hay lồng ghép nhiều hàm IF phức tạp như trong Excel, Conditional Column giúp bạn phân loại, gắn nhãn dữ liệu và so sánh giữa các cột chỉ với vài cú nhấp chuột trên giao diện trực quan.

Bài viết này, Starttrain sẽ hướng dẫn chi tiết cách sử dụng Conditional Column qua các tình huống thực tế, phân tích câu lệnh M tương ứng, so sánh với Custom Column và giải đáp các câu hỏi thường gặp nhất khi chuẩn hóa dữ liệu ETL.

Chức năng Conditional Column trong Power Query

Conditional Column là gì?

Conditional Column là một công cụ dựng sẵn trên Power Query. Công cụ này cho phép bạn xây dựng logic xử lý theo cấu trúc:

Nếu (If) [Tên cột] thỏa mãn [Điều kiện so sánh] Thì (Then) trả về [Giá trị đầu ra], Ngược lại (Else) trả về [Giá trị mặc định].

Về mặt công năng, Conditional Column tương đương với:

  • Hàm IF/IFS lồng nhau trong Microsoft Excel.
  • Hàm IF/SWITCH trong ngôn ngữ DAX của Power BI.
  • Mệnh đề CASE WHEN … THEN … ELSE … END trong SQL.

Điểm vượt trội của Conditional Column là tính năng no-code/low-code: người dùng chỉ cần chọn giá trị trên bảng biểu mẫu mà không sợ sai sót cú pháp lập trình.

Vị trí của Conditional Column trong Power Query Editor

Để kích hoạt tính năng này, bạn thao tác trực tiếp trên giao diện Power Query Editor:

  • Điều hướng đến tab Add Column trên thanh công cụ Ribbon.
  • Tìm đến nhóm lệnh General và chọn nút Conditional Column.

Ví dụ thực tế chức năng Conditional Column

Dưới đây là hai tình huống xử lý dữ liệu thực tế được minh họa trực quan từ giao diện Power Query Editor với tập dữ liệu mẫu gồm 2 cột số: Column1 và Column2.

So sánh giá trị của một cột với một số cố định

Yêu cầu: Tạo cột mới có tên Custom. Kiểm tra giá trị tại Column2: nếu nhỏ hơn 5 thì trả về “yes”, ngược lại trả về “no”.

Mở hộp thoại chức năng. Trên thanh công cụ, mở tab Add Column rồi nhấn vào biểu tượng Conditional Column.

Conditional Column

Hộp thoại Add Conditional Column xuất hiện với các trường cấu hình tiêu chuẩn gồm: tên cột (New column name), điều kiện If… Then…, nút thêm điều kiện Add Clause và giá trị mặc định Else.

Conditional Column

Nhập điều kiện so sánh

  • New column name: Nhập tên cột là Custom.
  • Column Name: Chọn cột kiểm tra là Column2.
  • Operator: Chọn toán tử is less than (nhỏ hơn).
  • Value: Nhập số 5.
  • Output: Nhập chuỗi “yes”.
  • Else: Nhập chuỗi “no”.

Conditional Column

Cột Custom xuất hiện ở cuối bảng. Dòng 1 (Column2 = 0) và Dòng 5 (Column2 = 2) nhận kết quả “yes” vì nhỏ hơn 5. Các dòng còn lại (7, 9, 6) đều lớn hơn hoặc bằng 5 nên trả về “no”.

Conditional Column

So sánh giữa hai cột dữ liệu

Yêu cầu: Tạo cột mới có tên Custom.1. So sánh giá trị giữa Column1 và Column2. Nếu giá trị tại Column1 lớn hơn Column2 thì trả về “yes”, ngược lại trả về “no”.

Mở hộp thoại Add Conditional Column, đặt tên cột mới là Custom.1.

  • Column Name: Chọn Column1.
  • Operator: Chọn is greater than (lớn hơn).
  • Tại ô Value: Mặc định hệ thống để chế độ nhập số/chữ (ABC/123). Bạn nhấp vào biểu tượng mũi tên dropdown tại ô này, chuyển sang chế độ Select a column, sau đó chọn cột Column2.
  • Output: Điền “yes”.
  • Else: Điền “no”.

Conditional Column

Cột Custom.1 xuất hiện với kết quả:

  • Dòng 1: Column1 (1) > Column2 (0) -> Trả về “yes”
  • Dòng 2: Column1 (5) < Column2 (7) -> Trả về “no”
  • Dòng 3: Column1 (2) < Column2 (9) -> Trả về “no”
  • Dòng 4: Column1 (7) > Column2 (6) -> Trả về “yes”
  • Dòng 5: Column1 (9) > Column2 (2) -> Trả về “yes”

Conditional Column

Mã M sinh ra từ chức năng Conditional Column

Mỗi khi bạn thao tác chọn điều kiện trên hộp thoại Conditional Column, Power Query sẽ tự động chuyển đổi toàn bộ cấu hình đó thành một dòng mã nguồn M duy nhất trên thanh công thức (Formula Bar).

Đối chiếu với hai ví dụ vừa thực hiện, hệ thống sinh ra hai câu lệnh như sau:

  • Trường hợp 1:

= Table.AddColumn(#”Changed Type”, “Custom”, each if [Column2] < 5 then “yes” else “no”)

  • Trường hợp 2:

= Table.AddColumn(#”Added Conditional Column”, “Custom.1”, each if [Column1] > [Column2] then “yes” else “no”)

Cả hai câu lệnh trên đều sử dụng hàm Table.AddColumn với cú pháp

Table.AddColumn(table, newColumnName, columnGenerator, optional columnType)

Trong đó:

  • table: Bảng dữ liệu nguồn lấy từ bước xử lý liền trước. Trong ví dụ 1 là #”Changed Type” và ví dụ 2 là #”Added Conditional Column”. Ký hiệu #”” được Power Query dùng để bao bọc tên của các bước có chứa khoảng trắng hoặc ký tự đặc biệt.
  • newColumnName: Text đặt trong dấu ngoặc kép quy định tên cho cột mới sinh ra (ở đây là “Custom” hoặc “Custom.1”).
  • columnGenerator: Biểu thức logic sinh dữ liệu cho từng dòng theo cấu trúc each if … then … else …. Cụ thể gồm:
    • Từ khóa each: Hoạt động như một vòng lặp duyệt qua từng hàng của bảng dữ liệu để áp dụng điều kiện tính toán.
    • Toán tử so sánh: Chuyển đổi tự động từ lựa chọn trên giao diện sang cú pháp ngôn ngữ M (chẳng hạn toán tử is less than trở thành <, còn is greater than trở thành >, …).
    • Cấu trúc điều kiện if … then … else: Cú pháp rẽ nhánh tiêu chuẩn. Nếu biểu thức sau if đúng, hệ thống lấy giá trị sau then (“yes”). Mọi trường hợp còn lại không thỏa mãn sẽ nhận giá trị sau else (“no”).
  • optional columnType: Tham số tùy chọn quy định kiểu dữ liệu cho cột mới. Mặc định khi dùng giao diện, Power Query không điền tham số này và gán kiểu dữ liệu chung (Any). Bạn có thể tối ưu bằng cách điền thêm kiểu cụ thể.

Những lưu ý kỹ thuật khi sử dụng Conditional Column

Để tránh sai sót logic và đảm bảo quy trình xử lý dữ liệu hoạt động tối ưu, bạn cần chú ý các nguyên tắc kỹ thuật sau:

  • Quy tắc phân biệt chữ hoa – chữ thường (Case-sensitive): Ngôn ngữ M phân biệt chính xác chữ hoa và chữ thường. Toàn bộ các từ khóa điều khiển như each, if, then, else đều bắt buộc phải viết ở dạng chữ thường. Nếu sửa code thủ công thành IF hoặc THEN, hệ thống sẽ báo lỗi cú pháp ngay.
  • Cơ chế xử lý null: Khi một ô trong cột so sánh chứa giá trị null, các phép so sánh số học như [Column2] < 5 sẽ trả về giá trị null thay vì false. Theo cơ chế rẽ nhánh của M, dòng dữ liệu đó sẽ tự động rơi vào trường hợp else. Nếu muốn phân loại riêng các dòng null, bạn cần thiết lập điều kiện kiểm tra null lên trước.
  • Thứ tự ưu tiên của các nhánh điều kiện (Clauses): Power Query duyệt các điều kiện theo thứ tự từ trên xuống dưới. Ngay khi một dòng dữ liệu thỏa mãn điều kiện đầu tiên, nó sẽ nhận giá trị tương ứng và lập tức bỏ qua các nhánh còn lại phía sau. Vì vậy, luôn xếp các điều kiện hẹp, cụ thể nhất lên trên cùng và các điều kiện bao quát xuống dưới.

So sánh Conditional Column và Custom Column

Người dùng thường cân nhắc giữa việc chọn Conditional Column hay Custom Column. Dưới đây là bảng đối chiếu chi tiết để bạn lựa chọn công cụ phù hợp với nhu cầu:

Tiêu chíConditional ColumnCustom Column
Độ phức tạpPhù hợp với chuỗi điều kiện rẽ nhánh đơn giản (If … Else If … Else)Đáp ứng mọi logic phức tạp, lồng ghép hàm xử lý text, ngày tháng, toán học
Khả năng sai cú phápRất thấp vì giao diện đã khóa sẵn các trường chọn hợp lệCó thể phát sinh lỗi nếu sai chính tả, thiếu ngoặc hoặc sai quy tắc hoa thường, …
Đối tượng sử dụngNgười mới bắt đầu hoặc người cần tạo phân loại nhanh chóngChuyên viên phân tích dữ liệu, Data Engineer cần viết logic biến đổi nâng cao

[FAQ] Một vài câu hỏi về Conditional Column

Conditional Column có hỗ trợ điều kiện AND hoặc OR trên giao diện không?

Giao diện Add Conditional Column hiện tại chưa có tùy chọn kết hợp toán tử AND hoặc OR trên cùng một dòng thiết lập. Cơ chế của giao diện hoạt động theo mô hình thác nước tuần tự (nhiều nấc Else If). Nếu muốn kiểm tra đồng thời nhiều điều kiện kiểu If Cột 1 > 5 AND Cột 2 < 10, cách nhanh nhất là dùng Custom Column và viết công thức:

if [Column1] > 5 and [Column2] < 10 then “Dat” else “Khong dat”

Thứ tự các điều kiện trong Conditional Column có ảnh hưởng đến kết quả không?

Có ảnh hưởng. Power Query kiểm tra các điều kiện tuần tự từ trên xuống dưới. Ngay khi một dòng dữ liệu thỏa mãn điều kiện đầu tiên, hệ thống sẽ trả về kết quả tương ứng và dừng lại, bỏ qua toàn bộ các quy tắc phía dưới. Do đó, nguyên tắc cốt lõi là luôn đưa các điều kiện cụ thể hoặc có khoảng giá trị hẹp nhất lên đầu tiên.

Làm cách nào để kiểm tra giá trị Null trong Conditional Column?

Tại ô Value, bạn nhập trực tiếp chữ null (viết thường toàn bộ). Ví dụ: If [Column1] equals null Then “Chua co du lieu”.

Tổng kết

Conditional Column là công cụ trực quan và hiệu quả bậc nhất trong Power Query, giúp bạn tạo cột phân loại, gán nhãn và so sánh dữ liệu mà không cần viết mã nguồn M phức tạp. Nhờ cơ chế giao diện dạng biểu mẫu, người dùng có thể hạn chế tối đa các lỗi cú pháp thường gặp, đồng thời tối ưu hóa bước làm sạch dữ liệu ngay từ tầng ETL trước khi đưa vào mô hình báo cáo.

Danh sách bài giảng

Power Query trong Power BI
406
▶

[Power BI Tutorial 2] Cách dùng Power Query trong Power...

Starttrain Official

Index Column
217
▶

[Power Query Tutorial] Cách dùng chức năng Index Column

Starttrain Official

Cách dùng chức năng Pivot Column
213
▶

[Power Query Tutorial] Cách dùng chức năng Pivot Column

Starttrain Official

Unpivot Column
197
▶

[Power Query Tutorial] Cách dùng chức năng Unpivot Column

Starttrain Official

Duration
189
▶

[Power Query Tutorial] Cách dùng Duration trong Power BI

Starttrain Official

Promoted - Demoted Headers
247
▶

[Power Query Tutorial] Cách dùng Promoted – Demoted Headers

Starttrain Official

Cách dùng R-Python Script trong Power BI
186
▶

[Power Query Tutorial] Cách dùng R Script và Python Script

Starttrain Official

Scientific
156
▶

[Power Query Tutorial] Cách dùng Scientific trong Power BI

Starttrain Official

Standard
197
▶

[Power Query Tutorial] Cách dùng Standard trong Power BI

Starttrain Official

Statistics
212
▶

[Power Query Tutorial] Cách dùng Statistics trong Power BI

Starttrain Official

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

Form - đọc sách
Form - Single Report Template

Vui lòng liên hệ qua những thông tin bên dưới. Starttrain sẽ phản hồi bạn trong thời gian sớm nhất.

Form Dashboard service