Cách tạo Calendar Table trong Power BI (Phần 2)

Tiếp tục với câu chuyện Calendar Table (bảng lịch), trong phần thứ hai này chúng ta sẽ tìm hiểu về cách kết nối và những cách tạo Calendar Table khác nhau. Ngoài ra, phần cuối cùng của bài viết sẽ tổng hợp một số lưu ý quan trọng giúp bạn tránh các lỗi trong quá trình sử dụng. Đừng quên xem lại phần đầu tiên nếu bạn chưa biết đến khái niệm Power BI Calendar Table.

Tham khảo: Cách tạo Calendar Table trong Power BI (Phần 1)

1. Các tính năng bổ sung của một bảng lịch tốt

Ngoài các tính năng bắt buộc kể trên, có một số điều bạn nên làm để tận dụng tối đa bảng lịch được tạo.

Thêm các cột cho mọi thuộc tính thời gian bạn muốn sử dụng trong báo cáo. Ví dụ, Year, Month, Week, Day Name of Week,…

Thêm một cột ID số nguyên bắt đầu bằng 1 và tăng lên 1 đơn vị cho mọi cột có liên quan trong lịch. Ví dụ, tạo một cột MonthID bắt đầu bằng 1 và tăng lên 1 cho mỗi tháng mà không cần đặt lại vào cuối mỗi năm (1,2,3,… 12,13,14,…). Điều này rất tốt khi viết công thức thời gian thông minh DAX tùy chỉnh.

Thêm một cột số cho mọi cột chữ cái cần được sắp xếp theo một thứ tự cụ thể. Điều này là do các cột Power BI luôn sắp xếp theo thứ tự chữ số. Vì vậy, cột tháng sẽ sắp xếp theo thứ tự Apr (tháng 4), Aug (tháng 8), Dec (tháng 12), Feb (tháng 2) thay vì Jan (tháng 1), Feb (tháng 2), Mar (tháng 3). Bạn cần thêm một cột tháng dạng số để yêu cầu Power BI sắp xếp cột tháng bằng chữ cái theo trật tự khác. Cũng lưu ý rằng cột số sắp xếp phải có mối quan hệ từ 1 đến 1 với cột alpha (tức là chỉ có 1 giá trị trong cột số cho 1 giá trị trong cột chữ).

2. Cách kết nối Data Table với một Calendar Table

Đầu tiên, bạn cần tải bảng lịch vào mô hình dữ liệu Power BI. Sau đó, bạn phải join bảng dữ liệu (Data Table) với bảng lịch (Calendar Table) bằng cách dùng cột ngày từ cả hai bảng. Cũng có thể join hai bảng bằng cách dùng một cột khóa ngày (khóa thay thế) thay vì cột ngày. Điều này thường xảy ra khi bảng lịch của bạn ở cấp độ chi tiết khác với ngày, ví dụ như tuần, tháng, năm,….

Dưới đây là hình ảnh bảng dữ liệu và bảng lịch được join với nhau bằng cách sử dụng cột ngày của cả hai bảng.

3. Cách tạo một Power BI Calendar Table

Có nhiều cách để tạo một bảng lịch trong Power BI.

  • Tải lên từ một kho dữ liệu (data warehouse).
  • Xây dựng trong Excel.
  • Xây dựng trong Power Query.
  • Sử dụng các hàm bảng DAX.
4. Excel Calendar Tables

Bạn chỉ cần tạo một worksheet trống trong Excel và bắt đầu thêm vào các cột bạn cần. Điều này rất tốt nếu bạn có những nguyên tắc kinh doanh thay đổi về thời điểm bắt đầu năm. Bạn có thể dùng công thức trong các cột của mình để tính toán cho các giá trị cho Year (Năm), Month (Tháng),….

Ví dụ, bạn có thể dùng =YEAR([Date]) để tạo một cột năm từ cột ngày tháng, điều này thường chỉ hoạt động với lịch thường. Chỉ cần mã cố định các giá trị không tuân theo bất kỳ công thức logic nào.

Nhập dữ liệu từ Excel workbook vào mọi Power BI workbook nơi bạn cần một bảng lịch.

5. Power Query Calendar Tables

Đối với Power Query, sau khi bạn viết truy vấn, nó sẽ “thiết lập và quên”. Bảng sẽ tự động phát triển theo thời gian, điều không xảy ra với Excel. Bạn có thể tham khảo các hướng dẫn sử dụng Power Query trong các bài viết khác tại BAC’s Blog.

6. Các hàm DAX Table

Mặc dù có thể xây dựng một bảng lịch dùng các hàm DAX nhưng bạn cần lưu ý rằng DAX có giới hạn số dòng lệnh là 1500 dòng. Lời khuyên là hãy sử dụng Power Query để chuẩn bị dữ liệu trong hầu hết các trường hợp  nếu có thể.

7. Cách sử dụng một lịch tuần hoặc tháng

Nếu bạn muốn sử dụng các chức năng thời gian thông minh có sẵn thì bạn phải dùng một lịch hằng ngày như mô tả ở trên. Tuy nhiên, nếu dữ liệu của bạn ở cấp độ hằng tuần hay hằng tháng và bạn muốn dùng những chức năng thời gian thông minh có sẵn, thì bạn có thể dùng lịch tuần hoặc tháng. Sự khác biệt là các chức năng thời gian thông minh có sẵn sẽ không hoạt động. Lưu ý rằng bạn vẫn có thể tạo công thức thời gian thông minh tùy chỉnh của riêng mình nhưng DAX nhìn chung sẽ viết khó hơn.

Ví dụ, thay vì phải viết như sau:

Total Sales FYTD =

TOTALYTD([Total Sales], ‘Calendar'[Date], “30/6”)

Bạn sẽ cần viết như sau:

Total Sales FYTD =

CALCULATE(

[Total Sales],

FILTER(ALL(‘Calendar’),

‘Calendar'[FinYear] = MAX(‘Calendar'[FinYear]) &&

‘Calendar'[FinWeek] <= MAX(‘Calendar'[FinWeek])

)

)

Ngoài ra, trong lịch hàng tuần hoặc hàng tháng, bạn thường không dùng cột ngày mà thay vào đó hãy tạo một dấu ID số để join các bảng. Ví dụ, bạn có thể tạo cột như YYYYWW làm khóa (2101 cho tuần 1 2021, 2102 cho tuần 2 2021,…). Chỉ cần đảm bảo tính hợp lý được sử dụng trong bảng lịch và bảng dữ liệu của bạn. Điều tương tự cũng áp dụng nếu bạn muốn sử dụng tháng làm mức độ chi tiết dữ liệu của mình. Đây là đoạn trích của lịch hàng tuần điển hình sẽ dùng cột FinYearWeek để join vào các bảng bán hàng.

Điều quan trọng cần lưu ý là sử dụng YYYYMM và không dùng MMYYYY cho cột khóa. YYYYMM sẽ tự nhiên sắp xếp theo thứ tự thời gian trong khi MMYYYY thì không.

Mong rằng qua hai phần của bài viết, các bạn đã có thể tự mình tạo ra một Power BI Calendar Table. Đừng quên đón xem các bài viết mới nhất với những nội dung thú vị sẽ được cập nhật thường xuyên tại BAC’s Blog.

Nguồn tham khảo:

https://exceleratorbi.com.au/

Nhu cầu đào tạo doanh nghiệp

BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.

Tham khảo chương trình đào tạo: 

 

Previous Post
Next Post
Exit mobile version