[Power Query Tutorial] Cách sử dụng Time trong Power BI

Khi làm việc với các hệ thống phân tích dữ liệu kinh doanh, Time trong Power BI (Power Query) là một trong những nhóm công cụ thiết yếu nhưng thường bị xem nhẹ. Việc làm chủ các tính năng thao tác với Time trong Power BI trên thanh công cụ Power Query sẽ giúp bạn dễ dàng bóc tách, chuẩn hóa, phân tích cú pháp văn bản, gom nhóm theo khung giờ và thực hiện các phép trừ thời gian phức tạp chỉ với vài thao tác nhấp chuột hoặc thông qua ngôn ngữ M tùy biến.

Bài viết dưới đây, Starttrain sẽ cung cấp cho bạn bức tranh toàn diện từ lý thuyết, ứng dụng thực tế đến mã lệnh M và các phương pháp tối ưu hóa data model chuẩn doanh nghiệp.

Time trong Power BI (Power Query) là gì?

Trong Power BI, dữ liệu dạng Time đại diện cho mốc thời gian diễn ra sự kiện trong chu kỳ 24 giờ của một ngày (từ 00:00:00 đến 23:59:59), chỉ chứa thông tin giờ, phút, giây độc lập và hoàn toàn không bao gồm thông tin ngày tháng năm.

Ngay tại giao diện Power Query Editor, nhóm công cụ Time đóng vai trò giúp các chuyên gia dữ liệu làm sạch, chuẩn hóa và trích xuất các thành phần thời gian từ những cột DateTime. Việc kiểm soát và làm chủ chức năng Time trong Power Query không chỉ giải quyết triệt để các bài toán phân tích kinh doanh như theo dõi ca kíp, khung giờ cao điểm, … mà còn giúp tối ưu nén bộ nhớ cho engine VertiPaq và tăng tốc độ phản hồi của toàn bộ hệ sinh thái báo cáo.

Chức năng Time trong Power BI (Power Query)

Giao diện Power Query cung cấp hai vị trí chứa bộ công cụ thao tác với dữ liệu thời gian:

  • Thẻ Transform > Time: Biến đổi và ghi đè trực tiếp kết quả lên cột dữ liệu đang chọn.
  • Thẻ Add Column > Time: Giữ nguyên dữ liệu của cột gốc và tạo thêm một cột mới chứa giá trị thời gian vừa trích xuất hoặc tính toán.

Khi nhấp vào menu thả xuống của biểu tượng chiếc đồng hồ Time, Power Query cung cấp các chức năng cụ thể sau:

  • Time Only:
    • Chức năng: Trích xuất thành phần thời gian từ cột kiểu DateTime hoặc chuyển đổi giá trị hợp lệ về kiểu dữ liệu Time thuần túy.
    • Mô tả chi tiết: Loại bỏ hoàn toàn thông tin ngày tháng năm, chỉ giữ lại định dạng chuẩn gồm giờ, phút và giây (hh:mm:ss).
  • Local Time:
    • Chức năng: Chuyển đổi dữ liệu thời gian có chứa múi giờ (DateTimeZone) về mốc thời gian cục bộ tương ứng trên máy tính của người dùng hoặc theo cài đặt vùng của hệ thống.
    • Ứng dụng: Chuẩn hóa dữ liệu log từ các máy chủ đám mây quốc tế về cùng múi giờ làm việc tại Việt Nam (GMT+7).
  • Parse:
    • Chức năng: Tự động nhận diện cấu trúc chuỗi văn bản (Text) chứa mốc thời gian và chuyển đổi trực tiếp thành kiểu dữ liệu Time mà không cần viết hàm công thức thủ công.
  • Hour:
    • Hour: Trả về số nguyên từ 0 đến 23 đại diện cho mốc giờ của dòng dữ liệu.
    • Start of Hour: Làm tròn mốc thời gian về điểm bắt đầu của giờ tương ứng (đưa phút và giây về 00:00:00).
    • End of Hour: Làm tròn mốc thời gian về điểm bắt đầu của giờ tiếp theo.
  • Minute:
    • Chức năng: Trích xuất giá trị số nguyên từ 0 đến 59 của thành phần phút.
    • Ứng dụng thực tế: Phân bổ dữ liệu giao dịch theo từng block 15 hoặc 30 phút phục vụ đo lường lưu lượng khách hàng và phân tích hàng đợi.
  • Second:
    • Chức năng: Trích xuất giá trị số nguyên từ 0 đến 59 của thành phần giây.
    • Ứng dụng thực tế: Phục vụ đo lường vi mô trong các hệ thống viễn thông, nhật ký server và tín hiệu cảm biến IoT.
  • Combine Date and Time:
    • Chức năng: Hợp nhất một cột Ngày (Date) và một cột Giờ (Time) riêng biệt thành một cột duy nhất kiểu DateTime theo cú pháp [Time] & [Date].
  • Subtract:
    • Chức năng: Tính toán khoảng chênh lệch giữa hai cột thời gian được chọn.
    • Định dạng trả về: Dữ liệu hiển thị dưới dạng khoảng thời gian (Duration) với định dạng d.hh:mm:ss.
  • Earliest & Latest:
    • Chức năng: Trả về mốc thời gian nhỏ nhất (Earliest) hoặc lớn nhất (Latest) trong toàn bộ cột thời gian được chọn.
    • Cơ chế: Chuyển đổi bảng dữ liệu thành một giá trị đơn nhằm xác định điểm chặn đầu hoặc cuối của chu kỳ dữ liệu.

Minh họa chi tiết chức năng Time trong Power BI

Dưới đây là minh họa chi tiết từng chức năng xử lý Time trong Power Query Editor:

Tính năng Time Only

Tính năng Time Only loại bỏ hoàn toàn thành phần ngày tháng năm khỏi một cột DateTime, chuyển đổi dữ liệu thành kiểu thời gian thuần túy (Time).

Trên thanh công cụ Transform, nhóm Date & Time Column cung cấp nút lệnh Time với biểu tượng đồng hồ. Menu thả xuống gồm các tùy chọn: Time Only, Local Time, Parse, Hour, Minute, Second, Combine Date and Time, Earliest, Latest. Cột OrderDateTime ban đầu đang chứa dữ liệu đầy đủ ngày và giờ.

Tính năng Time Only

Sau khi click chọn Time Only, cột OrderDateTime được biến đổi hoàn toàn: phần ngày tháng năm đã được loại bỏ, Data Type chuyển sang Time. Bước biến đổi được ghi nhận trong Applied Steps với tên Extracted Time.

Tính năng Time Only Tính năng Time Only

Tính năng Local Time

Chức năng Local Time xử lý các tập dữ liệu có phần bù múi giờ, quy chuẩn mốc thời gian quốc tế về múi giờ thiết lập trên máy cục bộ của người dùng.

Nhấp chuột vào biểu tượng kiểu dữ liệu ở góc trái tiêu đề cột OrderDateTime, chọn định dạng Date/Time/Timezone để chuẩn bị cho thao tác xử lý múi giờ.

Tính năng Local Time

Khi cột dữ liệu đã được định dạng sang kiểu Date/Time/Timezone (chứa phần bù múi giờ như +07:00), nhấp vào menu Time trên thẻ Transform và chọn Local Time để chuyển đổi các giá trị về giờ cục bộ của hệ thống.

Tính năng Local Time

Power Query tạo bước Calculated Local Time trong Applied Steps. Toàn bộ dữ liệu trong cột được chuẩn hóa đồng nhất theo múi giờ cục bộ.

Tính năng Local Time

Tính năng Parse

Khi dữ liệu thời gian đang ở dạng chuỗi văn bản ký tự (Data Type: Text), nhấp vào nút Time trên thanh công cụ và chọn tính năng Parse để Power Query tự động phân tích cú pháp chuỗi thành mốc thời gian chuẩn.

Tính năng Parse

Cột dữ liệu chuỗi ký tự ban đầu đã được chuyển đổi thành công sang kiểu dữ liệu Time thuần túy (hh:mm:ss). Bước thao tác được lưu lại với tên Parsed Time.

Tính năng Parse

Tính năng Hour

Chức năng trích xuất thành phần giờ (Hour) chuyển mốc thời gian thành một số nguyên từ 0 đến 23, là cơ sở để phân tích doanh thu theo từng khung giờ trong ngày.

Từ cột OrderDateTime, nhấp vào công cụ Time > chọn nhóm Hour > nhấp chọn tính năng Hour. Chú thích hiển thị: “Return the hour corresponding to each Date/Time value in the selected columns”.

Tính năng Hour

Cột dữ liệu được chuyển đổi thành số nguyên (Data Type: Whole Number) thể hiện số giờ trong ngày từ 0 đến 23. Trong bảng Applied Steps, bước này được đặt tên là Extracted Hour.

Tính năng Hour

Tính năng Start of Hour

Tính năng Start of Hour đưa phút và giây của mọi dòng dữ liệu về 00:00:00, giúp nén độ biến thiên dữ liệu (Cardinality) cực mạnh cho VertiPaq engine.

Nhấp chuột vào menu Time trên thanh công cụ Transform, di chuột vào mục Hour và chọn lệnh Start of Hour. Chú thích hệ thống giải thích rõ công dụng: “Return the start of the hour corresponding to each Time value in the selected columns”.

Tính năng Start of Hour

Dữ liệu tại cột OrderDateTime được làm tròn toàn bộ phút và giây về 00:00:00 (ví dụ: 2022-01-11 09:35:00 chuyển thành 2022-01-11 09:00:00). Thao tác này sinh ra bước Calculated Start of Hour trong Applied Steps.

Tính năng Start of Hour

Tính năng End of Hour

Ngược lại với Start of Hour, End of Hour xác định điểm chặn kết thúc của khung giờ, phục vụ báo cáo chốt sổ định kỳ hoặc bàn giao.

Từ menu Time > nhóm Hour, nhấp chuột chọn tùy chọn End of Hour. Thao tác này phục vụ việc xác định mốc kết thúc của khung giờ giao dịch hoặc chốt sổ ca làm việc.

Tính năng End of Hour

Dòng dữ liệu được làm tròn đến điểm bắt đầu của giờ tiếp theo. Trong bảng Applied Steps, bước thực hiện được đặt tên là Calculated End of Hour.

Tính năng End of Hour

Tính năng Minute

Tính năng Minute lấy ra số phút độc lập (từ 0 đến 59), phục vụ chia dữ liệu thành các block 15, 30 phút để đo lường dòng khách hàng hoặc phân luồng giao thông.

Trên thanh Transform, mở menu Time và nhấp trực tiếp vào tùy chọn Minute. Tính năng này được dùng khi người phân tích muốn trích xuất riêng biệt số phút để phân tích tần suất đến của khách hàng theo từng chu kỳ ngắn.

Tính năng Minute

Cột OrderDateTime được chuyển đổi hoàn toàn sang kiểu số nguyên (Whole Number, 123) chỉ gồm các giá trị phút từ dòng tương ứng. Thao tác được ghi nhận trong Applied Steps với tên Extracted Minute.

Tính năng Minute

Tính năng Second

Nhấp chuột vào menu Time trên dải lệnh Transform và chọn lệnh Second nhằm tách riêng phần giây phục vụ các yêu cầu đo lường tốc độ phản hồi hệ thống ở mức micro.

Tính năng Second

Cột dữ liệu được trích xuất thành công giá trị giây dưới dạng kiểu số thực (Decimal Number). Trong ví dụ dữ liệu mẫu ban đầu đều có giây bằng 0 nên toàn bộ cột trả về giá trị 0. Bước thực thi được lưu lại là Extracted Second.

Tính năng Second

Tính năng Earliest

Chức năng Earliest quét toàn bộ cột và trả về một giá trị vô hướng (Scalar Value) đại diện cho thời điểm sớm nhất ghi nhận trong tập dữ liệu.

Trên menu thả xuống của công cụ Time, chọn tính năng Earliest. Chú thích hệ thống hiển thị: “Return the earliest Time value in the currently selected column” (Trả về giá trị thời gian sớm nhất hiện có trong cột được chọn).

Tính năng Earliest

Bảng dữ liệu được chuyển đổi ngay thành một giá trị duy nhất 2022-01-11 09:35:00, đại diện cho mốc thời gian sớm nhất của cột dữ liệu ban đầu. Trong Applied Steps, bước thao tác này có tên là Calculated Earliest.

Tính năng Earliest

Tính năng Latest

Tương tự Earliest, chức năng Latest quét cột và trả về một giá trị duy nhất phản ánh thời điểm muộn nhất hoặc mốc dữ liệu cuối cùng được hệ thống ghi nhận.

Từ cột dữ liệu OrderDateTime, mở menu Time trên thanh công cụ Transform và rê chuột chọn tính năng Latest. Lệnh này dùng để xác định thời điểm ghi nhận dữ liệu cuối cùng của hệ thống.

Tính năng Latest

Toàn bộ bảng dữ liệu rút gọn thành một giá trị duy nhất 2022-07-21 06:10:00 thể hiện mốc thời gian muộn nhất trong danh sách. Bước này sinh ra tên Calculated Latest trong Applied Steps.

Tính năng Latest

Tính năng Combine Date and Time

Tính năng Combine Date and Time trên thẻ Add Column cho phép gộp 1 cột Ngày và 1 cột Giờ độc lập thành cột DateTime chuẩn mà không làm mất 2 cột gốc.

Sau khi đã chuẩn bị sẵn một cột kiểu Time và một cột kiểu Date, chuyển sang thanh công cụ Add Column > nhấp vào menu Time > chọn tính năng Combine Date and Time. Thao tác này giúp tái lập một cột ngày giờ chuẩn mà không làm mất hai cột thành phần ban đầu.

Tính năng Combine Date and Time

Một cột mới có tên Merged được tạo ra ở cuối bảng với định dạng DateTime. Các giá trị ngày và giờ được ghép hoàn hảo với nhau. Bước sinh ra trong Applied Steps là Inserted Merged Date and Time.

Tính năng Combine Date and Time

Tính năng Subtract

Khi chọn đồng thời hai cột chứa dữ liệu thời gian, vào thẻ Add Column > mở menu Time > nhấp chọn tính năng Subtract.

Tính năng Subtract

Power Query tạo ra cột mới mang tên Subtraction với biểu tượng đồng hồ bấm giờ (Data Type: Duration). Vì hai cột trừ cho nhau có cùng giá trị nên kết quả hiển thị 0.00:00:00. Bước sinh ra trong Applied Steps là Inserted Time Subtraction.

Tính năng Subtract

Mã M đằng sau chức năng Time trong Power BI

Mọi thao tác nhấp chuột trực quan trên thanh ribbon của Power Query Editor đều được tự động dịch sang các hàm và biểu thức của ngôn ngữ Power Query M (M Language). Dưới đây là bảng tổng hợp toàn bộ các hàm M, toán tử và cú pháp thực tế tương ứng với từng chức năng xử lý thời gian:

Thao tácHàm MCú pháp
Time OnlyDateTime.Time= Table.TransformColumns(#”Removed Columns”, {{“OrderDateTime”, DateTime.Time, type time}})
Local TimeDateTimeZone.ToLocal= Table.TransformColumns(#”Changed Type1″, {{“OrderDateTime”, DateTimeZone.ToLocal, type datetimezone}})
ParseTime.From

DateTimeZone.From

= Table.TransformColumns(#”Changed Type1″, {{“OrderDateTime”, each Time.From(DateTimeZone.From(_)), type time}})
HourTime.Hour= Table.TransformColumns(#”Removed Columns”, {{“OrderDateTime”, Time.Hour, Int64.Type}})
Start of HourTime.StartOfHour= Table.TransformColumns(#”Removed Columns”, {{“OrderDateTime”, Time.StartOfHour, type datetime}})
End of HourTime.EndOfHour= Table.TransformColumns(#”Calculated Start of Hour”, {{“OrderDateTime”, Time.EndOfHour, type datetime}})
MinuteTime.Minute= Table.TransformColumns(#”Removed Columns”, {{“OrderDateTime”, Time.Minute, Int64.Type}})
SecondTime.Second= Table.TransformColumns(#”Removed Columns”, {{“OrderDateTime”, Time.Second, type number}})
EarliestList.Min= List.Min(#”Removed Columns”[OrderDateTime])
LatestList.Max= List.Max(#”Removed Columns”[OrderDateTime])
Combine Date and TimeToán tử ghép &= Table.AddColumn(#”Inserted Date”, “Merged”, each [Time] & [Date], type datetime)
SubtractToán tử trừ –= Table.AddColumn(#”Duplicated Column”, “Subtraction”, each [#”Time – Copy”] – [Time], type duration)

So sánh Time, DateTime, DateTimeZone và Duration trong Power BI

Để tránh nhầm lẫn khi xây dựng mô hình dữ liệu, bảng dưới đây làm rõ sự khác biệt giữa các kiểu dữ liệu liên quan đến thời gian:

Kiểu dữ liệuBiểu tượng trong Power QueryVí dụỨng dụng
TimeChiếc đồng hồ09:35:00Phân tích giờ trong ngày, phân ca, khung giờ cao điểm
DateCuốn lịch2022-01-11Phân tích theo ngày, tuần, tháng, quý, năm
DateTimeLịch kèm đồng hồ2022-01-11 09:35:00Ghi nhận chính xác thời điểm xảy ra sự kiện
DateTimeZoneĐịa cầu kèm lịch2022-01-11 09:35:00 +07:00Xử lý dữ liệu hệ thống đa quốc gia có múi giờ
DurationĐồng hồ bấm giờ0.02:15:30 (2h 15p 30s)Đo lường khoảng cách giữa 2 mốc thời gian

Câu hỏi thường gặp (FAQ) về Time trong Power BI

Power BI có thể tạo Dimension Time (Bảng Dim_Time) riêng biệt không?

Có. Trong kiến trúc kho dữ liệu chuẩn (Star Schema), bạn nên xây dựng một bảng Dim_Time chứa 24 dòng (nếu phân tích theo Giờ) hoặc 1.440 dòng (nếu phân tích theo từng Phút). Bảng này chứa các trường: Hour, Minute, Khung giờ, Ca làm việc. Bảng Fact chỉ cần lưu trữ khóa ngoại liên kết tới bảng này.

Làm thế nào để lọc dữ liệu chỉ lấy các giao dịch trong giờ hành chính?

Trong Power Query, sau khi trích xuất cột Hour bằng lệnh Time > Hour > Hour, bạn chỉ cần nhấn vào mũi tên lọc trên cột Hour và chọn khoảng giá trị từ 8 đến 17 (tương ứng 8:00 đến 17:59).

Có thể dùng DAX để trích xuất Hour và Minute không hay bắt buộc dùng Power Query?

Bạn hoàn toàn có thể dùng hàm DAX như HOUR(‘Table'[DateTime]) hoặc MINUTE(‘Table'[DateTime]) để tạo Calculated Column. Tuy nhiên, theo khuyến nghị chuẩn của Microsoft, mọi biến đổi dữ liệu nên được thực hiện ở tầng Power Query (hoặc Data Source) để tối ưu hiệu năng và tận dụng cơ chế nén dữ liệu của VertiPaq.

Tổng kết

Làm chủ bộ công cụ Time trong Power BI (Power Query) không đơn thuần là việc học cách nhấp chuột trên thanh công cụ, mà là nền tảng cốt lõi để xây dựng một hệ thống báo cáo phân tích hiệu năng cao, chuẩn hóa và chuyên nghiệp.

Nếu bạn muốn rèn luyện và làm chủ toàn diện tư duy xử lý, làm sạch và mô hình hóa dữ liệu chuyên sâu với Power Query theo chuẩn dự án thực tế tại doanh nghiệp, hãy tham khảo ngay khóa học Power BI Business Intelligence Essentials tại Starttrain để bứt phá kỹ năng phân tích dữ liệu một cách bài bản nhất!

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
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
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
190
▶

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

[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