Covid -19 & Time Intelligent trong Power BI

Trong bài viết trước BAC đã giới thiệu đến bạn đọc cách tạo báo cáo phân tích đại dịch COVID-19. Qua ví dụ trên, chắc hẳn bạn đã có thể tự mình tạo ra những mẫu báo cáo cho vấn đề đang “nóng” trên toàn cầu. Tiếp tục với chủ đề này, chúng ta sẽ điểm nhanh qua một vài công thức DAX sẽ giúp khả năng phân tích tốt hơn bằng cách sử dụng Time Intelligent trong Power BI.

Tham khảo: DAX là gì? Tầm quan trọng của DAX trong Power BI

Báo cáo số ca xác nhận và tử vong của đại dịch COVID-19

Nếu bạn chưa thực hành bài viết Hướng dẫn tạo báo cáo phân tích đại dịch COVID-19 bằng Power BI hãy xem lại! hoặc bạn có thể tải dữ liệu tại đây. Sau đó, mở tệp vừa tải về trên Power BI Desktop, chúng ta sẽ thực hiện từng yêu cầu theo thứ tự bên dưới

1. Số liệu tích lũy

Bộ dữ liệu Johns Hopkins cung cấp dưới dạng số tích lũy, có thể dễ dàng tạo biểu đồ đường hiển thị số liệu tích lũy của ca được xác nhận và tử vong. Tuy nhiên, nó lại khó có thể áp dụng các biểu đồ đơn giản như biểu đồ thẻ vì sẽ hiển thị tổng số ca được xác nhận mới nhất.

Để dễ hình dung, chúng ta hãy xét ví dụ sau, kéo thả cột Confirmed vào khu vực Canvas. Sau đó, chọn loại biểu đồ Gauge (có hình dạng là nửa vòng tròn), bạn sẽ thấy rằng số lượng các ca được xác nhận là quá cao và không chính xác.

Power BI áp dụng một biểu thức SUM cho Confirmed

Tại sao lại như vậy? Câu trả lời chính là Power BI đã tự áp dụng một biểu thức SUM đơn giản trên tất cả giá trị trong cột Confirmed. Confimed cases hay các ca được xác định được đại diện bởi chuỗi 1,2,4,8,16… Tương ứng ngày 1 có 1 ca, ngày 5 có tổng cộng 16 ca, khi kéo thả cột Confirmed vào ta sẽ có 31 do 1+2+4+8+16=31. Đáp án chính xác là 16 ca vì ngày 5 là tổng của tất cả bao gồm 4 ngày trước.

Cách sửa lỗi đơn giản, thường dùng trong Power BI đó là sử dụng bộ lọc (Filter). Kéo thả cột Date vào Filters trên biểu đồ, chọn Top N ở vị trí Filter type, nhập số 1 tại Show items, bên cạnh chọn Top. Cuối cùng, kéo thả cột Date vào ô By value và đặt lại giá trị Latest Date, xem ảnh minh họa để biết thứ tự thực hiện.

Thứ tự tạo bộ lọc để lấy kết quả chính xác

Tuy nhiên, phương pháp kéo thả số liệu vào biểu đồ không thật sự là ý hay trong Power BI. Một cách tốt hơn được giới thiệu ở đầu bài học chính là sử dụng DAX. Chọn tab Modeling, nhấn New measure, đặt Home tableCovid-19 Cases và nhập công thức bên dưới vào.

Total Confirmed =
VAR sum_confirmed =
SUMX (VALUES( ‘Covid-19 Cases'[Country/Region] ),
SUMX (VALUES (‘Covid-19 Cases'[Province/State] ),
CALCULATE ( MAX ( ‘Covid-19 Cases'[Confirmed] ))))
RETURN
IF (sum_confirmed = 0, BLANK(), sum_confirmed )
 

Nhập công thức DAX để thay thế cho bộ lọc

Đánh vào dấu tích chữ V để xác nhận hoàn thành công thức DAX. Bây giờ, thay vì sử dụng Confirmed hãy sử dụng trường Total Confirmed vừa tạo để vẽ biểu đồ. Bạn có nhận thấy là kết quả mà chúng ta thu được chính là kết quả sau khi áp dụng bộ lọc Filters ở trên. Đúng vậy, đối với mỗi bang, công thức này sẽ tìm giá trị tối đa của các trường hợp được xác nhận và tổng hợp tất cả giá trị tối đa theo quốc gia và bang.

2. Các ca được xác nhận hằng ngày theo thời gian

Khi dữ liệu là các con số tích lũy, chúng ta cần xây dựng công thức để trừ đi số lượng các trường hợp được xác nhận mỗi ngày bằng số lượng của ngày hôm trước. Để làm điều đó, ta sẽ thêm một bảng lịch trong model của Power BI.

Mở Power BI Desktop lên và chọn tab Model, chọn New Table và thêm vào công thức sau:

Calendar = CALENDAR (MIN ( ‘Covid-19 Cases'[Date] ),
MAX ( ‘Covid-19 Cases'[Date] ))

Tạo bảng bằng cách nhập công thức tương tự measure

Bảng mới sẽ bao gồm một ngày tháng độc lập ở mỗi dòng, bắt đầu từ ngày sớm nhất trong bảng Covid-19 Cases và kết thúc ở ngày cuối cùng. Sở hữu một bảng lịch là bước đầu để sử dụng time intelligent trong Power BI, bạn cần tạo mối quan hệ giữa bảng lịch và bảng chứa cột date trong thực tế (ở đây là bảng Covid-19 Cases).

Tạo mối liên kết bằng cách nối cột của hai bảng

Chuyển sang Model view, kéo dòng Date trong bảng Calendar vào dòng date trong bảng Covid-19 Cases. Bây giờ, bạn có thể tạo một biểu đồ đường, kéo và thả cột Date vào Axis trong thanh Visualizations, kéo thả Total Confirmed vào Values.

Thực hiện các bước theo thứ tự trong ảnh

Tại dòng Axis bạn sẽ thấy cột Date chuyển thành dạng cây gồm Year, Quarter, Month và Day. Để có thể xem số ca được xác nhận theo từng định dạng ngày tháng hãy nhấn vào biểu tượng drill down trên biểu đồ như ảnh minh họa.

Sử dụng tính năng drill-down để xem dữ liệu ở từng cấp độ

Một cách khác là chọn trực tiếp tại khu vực Axis của thanh Visualizations. Lúc này, chúng ta đã tạo được đường xu hướng để biểu diễn số ca được xác nhận. Nhưng bạn sẽ cần một công thức cho các trường hợp được xác nhận hằng ngày theo ngày như ảnh.

Biểu đồ thể hiện các ca được xác nhận theo ngày

Trong tab Modeling, nhấp vào New measure, lưu ý Home table của bạn phải đặt ở Covid-19 Cases và chèn công thức dưới đây vào:

Daily New Cases =
VAR current_day = [Total Confirmed]
VAR prev_day =
CALCULATE (
[Total Confirmed],
DATEADD ( ‘Calendar'[Date], -1, DAY )
) RETURN
IF ( ISBLANK ( prev_day ), BLANK(), current_day – prev_day )
 

Biểu thức DAX ở trên tính toán các trường hợp mới hằng ngày bằng cách tổng hợp các trường hợp được xác nhận tích lũy được trừ vào tổng số trường hợp tích lũy từ ngày hôm trước. Việc tính toán ngày hôm trước được thực hiện bằng cách dùng DATEADD bù vào bảng lịch một ngày để lọc các trường hợp để chỉ hiển thị ngày trước đó.

Hàm ISBLANK bỏ qua trường hợp biên của các quốc gia bắt đầu báo cáo số tích lũy cao hơn các trường hợp được xác nhận mới hằng ngày. Trong DAX, trừ một số bằng BLANK() sẽ dẫn đến số ban đầu, để bỏ qua các trường hợp được xác nhận đầu tiên có thể quá cao.

3. Các trường hợp hoạt động được ước tính

Nếu theo dõi tình hình Coronavirus chỉ bằng số ca được xác nhận và tử vong sẽ khá tiêu cực. Tuy nhiên, do dữ liệu của John Hopkins đã xóa bỏ tệp dữ liệu số ca phục hồi vì cho rằng nó không chính xác.

Chúng ta sẽ tạo ra một công thức giả định số ca hồi phục tương ứng với một quãng thời gian X ngày. Vì vậy, bất kì ngày nào, số ca phục hồi bằng với số trường hợp được xác nhận mà chúng ta có X ngày trước trừ đi số ca tử vong mới trong giai đoạn qua.

Để tính các trường hợp phục hồi ước tính ta cần tính tổng số tử vong. Trong phần một, bạn còn nhớ là một hàm SUM đơn giản sẽ không hoạt động với con số tích lũy chứ? Dưới đây là công thức mà bạn cần, tương tự công thức của Total Confirmed.

Total Deaths =
VAR sum_deaths =
SUMX (
VALUES( ‘Covid-19 Cases'[Country/Region] ),
SUMX (
VALUES (‘Covid-19 Cases'[Province/State] ),
CALCULATE ( MAX ( ‘Covid-19 Cases'[Deaths] ) )
)
) RETURN
IF (sum_deaths = 0, BLANK(), sum_deaths )

Tiếp theo, tạo một công thức lưu trữ X ngày để hồi phục, giả sử mất 17 ngày để hồi phục, ta có thể thay đổi sau. Tạo một measure mới với công thức dưới đây:

Estimated Days to Recover = 17
 
Còn đây là công thức cho các trường hợp hồi phục ước tính:
Estimated Recovered =
VAR prev_period =
DATEADD (
‘Calendar'[Date],
– [Estimated Days to Recover],
DAY
)
RETURN
CALCULATE (
[Total Confirmed] + [Total Deaths],
prev_period
) – [Total Deaths]

Cuối cùng, công thức cho các trường hợp hoạt động ước tính bằng cách trừ tổng số trường hợp được xác nhận bằng các trường hợp được phục hồi ước tính.

Dữ liệu số ca hồi phục theo thời gian

Như vậy, đến bước này bạn đã có thể tạo một biểu đồ đường để xem các trường hợp hoạt động ước tính theo thời gian. Qua đó, thấy được Trung Quốc thể hiện đường cong hình chuông, trong khi các nước khác vào ngày 3 tháng 4 vẫn đang tăng trưởng theo cấp số nhân cho các trường hợp hoạt động của họ.

Biểu đồ mẫu trên Power BI  từ các measure đã tạo

Bài viết khá dài và sử dụng nhiều công thức liên quan đến DAX trong Power BI. Đây là một kỹ thuật quan trọng cần biết đối với nhà phân tích dữ liệu sử dụng Power BI. Bạn đọc có nhu cầu học tập, nghiên cứu và làm việc trong lĩnh vực liên quan hãy tham khảo khóa học tại BAC. Hoặc liên hệ trực tiếp cho chúng tôi theo số Hotline: 0909 310 768 để được tư vấn chương trình đào tạo phù hợp với nhu cầu, kiến thức, kinh nghiệm của bản thân.

Nguồn: datachant.com

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: 

Các bài viết liên quan Power BI: 

Các bài viết liên quan: 

  • TABLEAU – Giải pháp BUSINESS INTELLIGENCE (BI) – click vào đây
  • Hướng dẫn cài đặt và Sử dụng TABLEAU – click vào đây
  • Tính năng mới trên tableau – verion 2019.1 – click vào đây

BAC – Biên soạn và tổng hợp nội dung

Previous Post
Next Post