[Power Query Tutorial] Hướng dẫn cách sử dụng Reverse Rows

Trong quá trình xử lý và làm sạch dữ liệu bằng Power Query, bạn sẽ thường xuyên gặp phải tình huống dữ liệu nguồn bị sắp xếp ngược so với nhu cầu phân tích. Khi đó, tính năng Reverse Rows chính là công cụ đơn giản nhưng vô cùng hiệu quả giúp bạn giải quyết vấn đề nhanh chóng.

Bài viết này, Starttrain sẽ hướng dẫn chi tiết cách sử dụng chức năng Reverse Rows trong Power Query, giải thích mã M-Code đằng sau, kèm theo các ứng dụng thực tế giúp tối ưu hóa quy trình xử lý dữ liệu của bạn.

Chức năng Reverse Rows trong Power Query

Chức năng Reverse Rows trong Power Query là thao tác đảo ngược thứ tự các dòng trong một bảng dữ liệu. Khi áp dụng Reverse Rows, dòng cuối cùng của bảng sẽ trở thành dòng đầu tiên, dòng kế cuối sẽ thành dòng thứ hai và tiếp tục như vậy cho đến khi dòng đầu tiên chuyển xuống vị trí cuối cùng.

Bạn có thể tìm thấy nút Reverse Rows ở hai vị trí trên thanh ribbon của Power Query Editor:

  • Thẻ Home (Trang chủ): Nhóm Reduce Rows hoặc nhóm Table.
  • Thẻ Transform (Chuyển đổi): Nhóm Table (ngay bên dưới hoặc bên cạnh tính năng Transpose và Count Rows).

Khác biệt giữa Reverse Rows và Sort

  • Sort (Ascending/Descending): Sắp xếp dữ liệu dựa trên giá trị của một hoặc nhiều cột cụ thể (ví dụ: theo thứ tự bảng chữ cái, theo ngày tháng hoặc số lượng).
  • Reverse Rows: Không quan tâm đến giá trị hay dữ liệu bên trong các cột. Nó chỉ thuần túy lật ngược thứ tự vật lý của các dòng từ dưới lên trên.

Ví dụ cách dùng chức năng Reverse Rows trong Power Query

Dưới đây là từng bước thực hiện tính năng Reverse Rows cùng phân tích chi tiết dựa trên giao diện thực tế.

Các bước thực hiện:

  • Mở cửa sổ Power Query Editor.
  • Chọn truy vấn (Query) chứa bảng dữ liệu cần đảo ngược dòng.
  • Chuyển sang thẻ Transform trên thanh công cụ.
  • Tìm đến nhóm Table và nhấn chọn biểu tượng Reverse Rows.

Trong giao diện Power Query Editor, người dùng chọn thẻ Transform trên thanh Ribbon. Tại nhóm chức năng Table, chuột đang rê vào nút Reverse Rows.

Trong danh sách các dòng ban đầu (bước Changed Type), dữ liệu được xếp theo thứ tự gốc. Cụ thể, các dòng đầu tiên chứa card_id có giá trị là 19, client_id là 115, giao dịch ngày 8/31/2023. Danh sách bước xử lý APPLIED STEPS ở khung bên phải chỉ mới dừng lại ở bước Changed Type.

chức năng Reverse Rows trong Power Query

Kết quả sau khi áp dụng Reverse Rows

  • Mã công thức M xuất hiện: Trên thanh công thức (Formula Bar), lệnh Power Query M tự động sinh ra là: = Table.ReverseRows(#”Changed Type”)
  • Thay đổi ở các bước xử lý (Applied Steps): Trong bảng điều khiển Query Settings bên phải, bước mới mang tên Reversed Rows đã được thêm vào ngay bên dưới bước Changed Type.
  • Dữ liệu sau khi xử lý: Thứ tự các dòng đã bị lật ngược hoàn toàn. Các dòng từng nằm ở cuối bảng dữ liệu gốc giờ đây xuất hiện ở ngay những dòng đầu tiên. Cụ thể, dòng 1 hiện tại chứa card_id là 2085, client_id là 357, giá trị amount là 2.59 và ngày 10/25/2024.

chức năng Reverse Rows trong Power Query

Code M cho chức năng Reverse Rows

Mặc dù bạn có thể thao tác hoàn toàn bằng giao diện click chuột, việc hiểu mã M-Code đằng sau giúp bạn làm chủ công cụ và tùy biến kịch bản xử lý dữ liệu nâng cao trong cửa sổ Advanced Editor.

Cú pháp hàm M của Reverse Rows

Table.ReverseRows(table as table) as table

Trong đó, table là bảng dữ liệu đầu vào mà bạn muốn đảo ngược các dòng (thường là tên của bước xử lý ngay trước đó, ví dụ: #”Changed Type” hoặc #”Promoted Headers”).

Ví dụ mã M hoàn chỉnh trong Advanced Editor

let
Source = Csv.Document(File.Contents("C:\Data\FactTransactions.csv"), [Delimiter=",", Encoding=65001]),

#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),

#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers", {{"card_id", Int64.Type}, {"amount", type number}}),

// Bước thực hiện đảo ngược thứ tự các dòng

#"Reversed Rows" = Table.ReverseRows(#"Changed Type")

in

#"Reversed Rows"

Ứng dụng thực tế của chức năng Reverse Rows

Lấy bản ghi mới nhất khi dữ liệu thiếu cột thời gian hoặc ID tự tăng

Nhiều doanh nghiệp sử dụng file Excel hoặc CSV thủ công để quản lý thông tin. Nhân viên thường ghi nhận thông tin mới bằng cách chèn thêm dòng ở dưới cùng của bảng. Do không có cột thời gian hoặc mã giao dịch tự tăng (Auto-increment ID), bạn không thể dùng lệnh Sort để tìm bản ghi mới nhất.

Nếu bạn dùng trực tiếp tính năng Remove Duplicates trên cột Mã khách hàng, Power Query mặc định luôn giữ lại dòng đầu tiên (tương ứng với bản ghi cũ nhất trong quá khứ) và xóa mất dòng mới nhập ở cuối file.

Quy trình xử lý với Reverse Rows:

  • Áp dụng Reverse Rows để đảo ngược toàn bộ bảng dữ liệu. Lúc này, các dòng dữ liệu mới cập nhật ở đáy bảng sẽ được đẩy lên vị trí trên cùng.
  • Chọn cột định danh, nhấp chuột phải và chọn Remove Duplicates. Power Query sẽ giữ lại dòng đầu tiên – chính là trạng thái cập nhật mới nhất mà bạn vừa đẩy lên.
  • Chọn lại Reverse Rows một lần nữa nếu bạn muốn đưa danh sách kết quả trả về đúng thứ tự ban đầu.

Phân tích Log Files và lịch sử giao dịch

Các file Log của hệ thống Server, phần mềm ERP hoặc hệ thống ghi nhận lịch sử giao dịch ngân hàng thường ghi thêm dữ liệu theo trình tự thời gian tăng dần.

Quy trình xử lý:

  • Khi cần lập báo cáo tổng hợp Top N sự kiện gần đây nhất, nhà phân tích dữ liệu chỉ cần thực hiện thao tác Reverse Rows.
  • Tiếp theo, chọn tính năng Keep Top Rows và nhập số lượng bản ghi cần lấy.
  • Phương pháp này giúp lọc nhanh các sự kiện mới mà không đòi hỏi phải chuyển đổi hay định dạng lại các cột thời gian phức tạp.

Tạo cột chỉ số xếp hạng ngược

Trong một số mô hình phân tích nâng cao, bạn cần đánh số thứ tự dòng theo chiều ngược lại: dòng dưới cùng (mới nhất) mang số index là 1, các dòng cũ hơn bên trên mang chỉ số 2, 3, 4….

Quy trình xử lý:

  • Thực hiện Reverse Rows để lật dòng cuối cùng của bảng lên vị trí dòng 1.
  • Chuyển sang thẻ Add Column -> Chọn Index Column -> chọn From 1. Lúc này, dòng vừa lật lên sẽ nhận giá trị chỉ số là 1.
  • Chọn lại Reverse Rows một lần nữa để trả bảng dữ liệu về cấu trúc hiển thị gốc. Kết quả thu được là một bảng dữ liệu chuẩn thứ tự ban đầu nhưng có thêm cột Index đánh số ưu tiên từ dưới lên trên, phục vụ cho các công thức tính toán lũy kế hoặc hàm DAX sau này.

Mẹo tối ưu hiệu suất và lưu ý khi dùng Reverse Rows

Ảnh hưởng đến Query Folding

Hàm Table.ReverseRows thường không hỗ trợ Query Folding trên phần lớn các hệ quản trị cơ sở dữ liệu (SQL Server, MySQL…). Điều này có nghĩa là Power Query phải tải toàn bộ dữ liệu về bộ nhớ cục bộ trước khi thực hiện phép lật ngược dòng.

Nếu làm việc với cơ sở dữ liệu quan hệ, hãy ưu tiên sắp xếp theo một cột thứ tự (Order By/Sort) ở mức nguồn SQL trước khi đẩy vào Power Query.

Thứ tự thực hiện bước lọc (Filter)

Nên lọc loại bỏ bớt dữ liệu thừa (Remove Rows, Filter Nulls) trước khi bấm nút Reverse Rows. Việc giảm số lượng dòng xử lý giúp lệnh Table.ReverseRows chạy nhanh hơn đáng kể.

Đảm bảo tính ổn định của thứ tự dòng

Nếu dữ liệu nguồn không có thứ tự cố định (ví dụ: truy vấn từ API hoặc NoSQL), việc dùng Reverse Rows có thể cho ra kết quả không đồng nhất giữa các lần Refresh. Hãy đảm bảo dữ liệu nguồn có thứ tự nhất định trước khi đảo dòng.

Tổng kết

Tính năng Reverse Rows trong Power Query là một công cụ xử lý dữ liệu nhỏ gọn nhưng sở hữu tính ứng dụng vô cùng linh hoạt. Dù không căn cứ vào giá trị cụ thể của các cột như các lệnh Sort thông thường, Reverse Rows lại tỏ ra vượt trội trong việc giải quyết các bài toán đảo ngược trình tự vật lý, trích xuất bản ghi cập nhật mới nhất từ file thô, tạo chỉ số Index đếm ngược hay xử lý danh sách Log files.

Bằng cách nắm vững thao tác trên giao diện, hiểu rõ cú pháp M-Code Table.ReverseRows, cũng như kết hợp linh hoạt với các lệnh hỗ trợ, bạn sẽ tiết kiệm đáng kể thời gian làm sạch dữ liệu và xây dựng được các luồng xử lý tự động tối ưu nhất cho báo cáo của mình.

Nếu muốn học Excel nâng cao cho phân tích dữ liệu bạn có thể tham khảo khóa Excel for Business Analytics tại Starttrain

Danh sách bài giảng

Power Query trong Power BI
409
▶

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

Starttrain Official

Index Column
218
▶

[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
214
▶

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

Starttrain Official

Unpivot Column
198
▶

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

Starttrain Official

Duration
191
▶

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

Starttrain Official

Promoted - Demoted Headers
248
▶

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

Starttrain Official

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

[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
199
▶

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

Starttrain Official

Statistics
214
▶

[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