Khi Power BI hiểu tháng thành ngày & ngày thành tháng

Ngô Đào Nam Phương
Ngô Đào Nam Phương

12/26/20252 mins read

798
0
Khi Power BI hiểu tháng thành ngày & ngày thành tháng

Khi Power BI hiểu tháng thành ngày & ngày thành tháng 

Vấn đề thường gặp khi load data vào Power BI: NGÀY & THÁNG bị đảo ngược 

Khi bạn có nhiều file Excel/CSV, mỗi file lại dùng một định dạng: 

  • dd/mm/yyyy 

  • mm/dd/yyyy 

  • yyyy-mm-dd 

  • hoặc text như "12/3" 

Power BI sẽ tự suy đoán và sẽ có nhiều trường hợp khi load data vào Power BI. 

 

Power BI “tự suy đoán” Date hay theo logic cụ thể? 

Không phải kiểu “AI đoán mò”. Power BI parse (chuyển chuỗi → Date) theo một logic rất cụ thể, và cái logic đó phụ thuộc vào: 

  1. Kiểu dữ liệu gốc (Date/DateTime thật hay chỉ là text) 

  2. Ngôn ngữ/Regional settings của Power Query khi import/transform 

  3. Culture/Locale bạn dùng khi “Change Type” (đổi kiểu) trong Power Query 

  4. Với một số connector, driver/nguồn đã trả Date dạng chuẩn (ISO/typed) thì gần như không có “suy đoán” nữa. 

Shape 

1) Trường hợp “an toàn”: nguồn đã là Date thật (typed) 

  • SQL Server, PostgreSQL, Dataverse… thường trả về type Date/DateTime

  • Power BI nhận đúng kiểu → không dính bẫy format quốc gia (dd/MM vs MM/dd). 
    Kết luận: Lúc này không phải đoán; Power BI chỉ map kiểu dữ liệu. 

Nên làm: ưu tiên convert Date ngay từ nguồn.

Shape

2) Trường hợp nguy hiểm: cột Date thực ra là TEXT 

Ví dụ: "01/02/2025" 

  • US culture hiểu là Jan 2, 2025 (MM/dd) 

  • VN/UK culture hiểu là 1 Feb, 2025 (dd/MM) 
    => Đây là chỗ người dùng tưởng “Power BI tự đoán”, nhưng thực ra là Power Query đang parse theo culture mặc định

Culture mặc định lấy từ đâu? 

  • Thường dựa vào Regional settings của môi trường chạy Power BI Desktop/Service (và/hoặc trong Power Query). 

  • Khi bạn bấm “Change Type” mà không chỉ định locale, Power Query dùng mặc định → dễ lệch nếu file/nguồn dùng format khác. 

Shape 

3) Logic cụ thể trong Power Query: “Change Type” vs “Using Locale” 

Trong Power Query (Transform Data): 

  • Change Type: đổi kiểu theo locale mặc định 

  • Change Type → Using Locale...: đổi kiểu theo locale bạn chọn (ví dụ English (United States), Vietnamese (Vietnam), English (United Kingdom)) 

✅ Đây là cách “chốt hạ” để Power BI không hiểu sai. 

Shape 

4) Các format thường gây lỗi 

A) Ngày-tháng mơ hồ 

  • 01/02/2025, 03-04-2025 (không biết dd/MM hay MM/dd) 

B) Text “tháng/năm” kiểu khác nước 

  • 2025-12 (year-month) 

  • 12/2025 (month/year) 

  • Dec-2025, Thg 12 2025 
    => tuỳ culture + pattern mà parse được hay fail. 

C) Excel “Date” nhưng thực ra là text 

Nhiều file Excel nhìn như Date nhưng cell format/text lẫn lộn → Power BI đọc vào thành text, rồi parse theo locale. 

Shape 

Checklist xử lý chuẩn (không cãi nhau dd/MM vs MM/dd) 

Nên 

  • Chuẩn hoá data trước khi vào Power BI: YYYY-MM-DD hoặc YYYY-MM-DD

  • Nếu bắt buộc parse từ text: Dùng Change Type → Using Locale... và chọn đúng culture 

  • Với dữ liệu tháng/năm:  Tạo ngày “đại diện” rõ ràng: DATE(Year, Month, 1) (đầu tháng) để lưu trữ và join 

  • Tạo DimDate riêng, mark as date table (tránh auto date/time lộn xộn) 

Không nên 

  • Không để text mơ hồ kiểu 01/02/2025 mà “hy vọng Power BI hiểu đúng” 

  • Không dựa vào “máy của tôi chạy đúng” vì lên Power BI Service có thể khác môi trường 

  • Không để nguồn trộn nhiều format ngày trong cùng một cột 

 

Ví dụ minh hoạ: trường hợp bên dưới, đây là file kế hoạch kinh doanh hàng tháng, trong cột định dạng là m/d/yyyy nhưng khi load vào Power BI lại hiểu là d/m/y vì vậy thay vì doanh thu được chỉ định cho mỗi tháng thì doanh thu trong bảng này lại được hiểu tất cả vào tháng 1 năm 2022. 

Cách xử lí: 

Sau khi load vào Power BI định dạng tháng sẽ như thế này: 

✔ Bước 1: Convert cột Date về Text trước: Chọn cột có date bị hiểu sai, chuyển sang text. 

= Table.TransformColumnTypes(Source,{{"Date", type text}}) 

✔ Bước 2: Dùng “Change Type → Using Locale…” 

Chuột phải cột → Change Type → Using Locale… 

Chọn: 

  • Data type: Date 

  • Locale: English (United States) (hoặc đúng format của file gốc). Trong trường hợp này tháng đang bị hiểu là ngày vì nó nằm trước ngày, đây là kiểu định dạng date của US. Nên khi mình chuyển sang Locale US thì nó sẽ hiểu đúng bản chất của ngày đang có trong cột. 

✔ Bước 3: Apply & close date -> vào Table View của PBI Desktop để format lại cột theo ý mình muốn. Ví dụ nó đang hiển thị là mm/dd/yyyy thì mình có thể chuyển lại thành dd/mm/yyyy để người dùng dễ đọc hiểu theo kiểu ngày ở Việt Nam. 

 

Sau khi đã giúp Power BI hiểu đúng định dạng ngày thì nó sẽ update được report theo đúng ngày tháng chứ không bị dồn hết doanh thu vào 1 tháng như ban đầu.