Bảng ngày tháng trong Power Pivot là điều cần thiết để duyệt và tính toán dữ liệu theo thời gian. Bài viết này cung cấp sự hiểu biết thấu đáo về bảng ngày tháng và cách bạn có thể tạo bảng trong Power Pivot. Đặc biệt, bài viết này mô tả:
-
Tại sao bảng ngày lại quan trọng trong việc duyệt và tính toán dữ liệu theo ngày và giờ.
-
Cách sử dụng Power Pivot để thêm bảng ngày vào Mô hình Dữ liệu.
-
Cách tạo cột ngày mới, chẳng hạn như Năm, Tháng và Thời gian trong bảng ngày.
-
Cách tạo mối quan hệ giữa bảng ngày tháng và bảng dữ kiện.
-
Làm thế nào để làm việc với thời gian.
Bài viết này dành cho người dùng mới sử dụng Power Pivot. Tuy nhiên, điều quan trọng là phải hiểu rõ về việc nhập dữ liệu, tạo mối quan hệ và tạo các cột và số đo được tính toán.
Bài viết này không mô tả cách sử dụng hàm DAX Time-Intelligence các công thức đo lường. Để biết thêm thông tin về cách tạo số đo với hàm Hiển thị Thời gian Thông minh DAX, hãy xem Hiển thị Thời gian Thông minh trong Power Pivot trong Excel.
Lưu ý: Trong Power Pivot, tên "thước đo" và "trường được tính toán" là đồng nghĩa. Chúng tôi đang sử dụng thước đo tên trong suốt bài viết này. Để biết thêm thông tin, hãy xem Thước đo trong Power Pivot.
Nội dung
Tìm hiểu về bảng ngày
Gần như tất cả các phân tích dữ liệu đều liên quan đến việc duyệt và so sánh dữ liệu theo ngày và thời gian. Ví dụ, bạn có thể muốn tính tổng doanh thu cho quý tài chính trước đây, rồi so sánh các tổng này với các quý khác hoặc bạn có thể muốn tính số dư đóng cuối tháng cho một tài khoản. Trong mỗi trường hợp này, bạn đang sử dụng ngày tháng làm cách để nhóm và tổng hợp các giao dịch bán hàng hoặc số dư cho một khoảng thời gian cụ thể.
Báo cáo Power View
Bảng ngày tháng có thể chứa nhiều dạng biểu thị ngày và giờ khác nhau. Ví dụ, bảng ngày thường có các cột như Năm Tài chính, Tháng, Quý hoặc Giai đoạn mà bạn có thể chọn làm các trường từ Danh sách Trường khi hiển thị và lọc dữ liệu của bạn trong PivotTable hoặc báo cáo Power View.
Danh sách Trường Power View
Để các cột ngày như Năm, Tháng và Quý bao gồm tất cả các ngày trong phạm vi tương ứng, bảng ngày phải có ít nhất một cột với tập hợp các ngày liên tục. Nghĩa là, cột đó phải có một hàng cho mỗi ngày cho mỗi năm được bao gồm trong bảng ngày.
Ví dụ: nếu dữ liệu bạn muốn duyệt có ngày từ 01/02/2010 đến 30/11/2012 và bạn báo cáo về năm dương lịch thì bạn sẽ muốn có bảng ngày có ít nhất một phạm vi ngày từ ngày 1 tháng 1 năm 2010 đến ngày 31 tháng 12 năm 2012. Mỗi năm trong bảng ngày của bạn phải chứa tất cả các ngày cho mỗi năm. Nếu bạn sẽ thường xuyên làm mới dữ liệu của mình với dữ liệu mới hơn, bạn có thể muốn chạy ngày kết thúc trước một hoặc hai năm, vì vậy bạn không phải cập nhật bảng ngày của mình khi thời gian trôi qua.
Bảng ngày tháng với tập hợp ngày tháng liền kề
Nếu bạn báo cáo một năm tài chính, bạn có thể tạo ra một bảng ngày tháng với một tập hợp liên tục các ngày cho mỗi năm tài chính. Ví dụ, nếu năm tài chính của bạn bắt đầu vào ngày 01 Tháng Ba và bạn có dữ liệu cho năm tài chính 2010 cho đến ngày hiện tại (ví dụ, trong Năm Tài chính 2013), bạn có thể tạo một bảng ngày bắt đầu vào ngày 01/03/2009 và bao gồm ít nhất mỗi ngày trong mỗi năm tài chính cho đến ngày cuối cùng trong Năm Tài chính 2013.
Nếu bạn sẽ báo cáo về cả năm lịch và năm tài chính, bạn không cần tạo bảng ngày riêng biệt. Một bảng ngày có thể bao gồm các cột cho năm dương lịch, năm tài chính và thậm chí cả lịch khoảng thời gian mười ba tuần. Điều quan trọng là bảng ngày tháng của bạn chứa một tập hợp các ngày liên tục cho tất cả các năm bao gồm.
Thêm bảng ngày vào Mô hình Dữ liệu
Bạn có thể thêm bảng ngày vào Mô hình Dữ liệu theo một vài cách:
-
Nhập từ cơ sở dữ liệu quan hệ hoặc nguồn dữ liệu khác.
-
Tạo bảng ngày tháng trong Excel rồi sao chép hoặc liên kết đến bảng mới trong Power Pivot.
-
Nhập từ Microsoft Azure Marketplace.
Chúng ta hãy nhìn vào từng cái này kỹ hơn.
Nhập từ cơ sở dữ liệu quan hệ
Nếu bạn nhập một số hoặc tất cả dữ liệu của mình từ một kho dữ liệu hoặc loại cơ sở dữ liệu quan hệ khác, có khả năng đã có một bảng ngày và mối quan hệ giữa nó và phần còn lại của dữ liệu mà bạn đang nhập. Ngày và định dạng có thể khớp với ngày trong dữ liệu dữ liệu thực tế của bạn và ngày có thể bắt đầu tốt trong quá khứ và đi xa hơn trong tương lai. Bảng ngày bạn muốn nhập có thể rất lớn và chứa một phạm vi ngày ngoài những gì bạn sẽ cần đưa vào Mô hình Dữ liệu của mình. Bạn có thể sử dụng các tính năng lọc nâng cao của Trình hướng dẫn Nhập Bảng của Power Pivot để chỉ chọn ngày và cột cụ thể mà bạn thực sự cần. Điều này có thể làm giảm đáng kể kích cỡ sổ làm việc của bạn và cải thiện hiệu suất.
Trình hướng dẫn Nhập Bảng
Trong hầu hết các trường hợp, bạn sẽ không cần tạo bất kỳ cột bổ sung nào như Năm Tài chính, Tuần, Tên Tháng, v.v. vì chúng đã tồn tại trong bảng đã nhập. Tuy nhiên, trong một số trường hợp, sau khi bạn nhập bảng ngày vào Mô hình Dữ liệu, bạn có thể cần tạo cột ngày bổ sung, tùy thuộc vào nhu cầu báo cáo cụ thể. May mắn thay, điều này rất dễ dàng để làm bằng cách sử dụng DAX. Sau này, bạn sẽ tìm hiểu thêm về cách tạo trường bảng ngày. Mỗi môi trường đều khác nhau. Nếu bạn không chắc liệu nguồn dữ liệu của mình có ngày tháng hoặc bảng lịch liên quan hay không, hãy trao đổi với người quản trị cơ sở dữ liệu của bạn.
Tạo bảng ngày tháng trong Excel
Bạn có thể tạo bảng ngày trong Excel, rồi sao chép bảng đó vào bảng mới trong Mô hình Dữ liệu. Điều này thực sự khá dễ dàng để làm và nó mang lại cho bạn nhiều sự linh hoạt.
Khi bạn tạo bảng ngày tháng trong Excel, bạn bắt đầu bằng một cột đơn với phạm vi ngày tháng liền kề. Sau đó, bạn có thể tạo các cột bổ sung như Năm, Quý, Tháng, Năm Tài chính, Giai đoạn, v.v. trong trang tính Excel bằng cách sử dụng công thức Excel hoặc sau khi sao chép bảng vào Mô hình Dữ liệu, bạn có thể tạo chúng dưới dạng cột được tính toán. Việc tạo cột ngày bổ sung trong Power Pivot được mô tả trong phần Thêm Cột Ngày Mới vào Bảng Ngày ở phần sau trong bài viết này.
Cách: Tạo bảng ngày trong Excel và sao chép vào Mô hình Dữ liệu
-
Trong Excel, trong một trang tính trống, trong ô A1, nhập tên tiêu đề cột để xác định phạm vi ngày. Thông thường, đây sẽ lànhững nội dung như Date, DateTime hoặc DateKey.
-
Trong ô A2, nhập ngày bắt đầu. Ví dụ: 01/01/2010.
-
Bấm vào điều khiển điền và kéo xuống đến số hàng có chứa ngày kết thúc. Ví dụ: 31/12/2016.
-
Chọn tất cả các hàng trong cột Ngày (bao gồm tên tiêu đề trong ô A1).
-
Trong nhóm Kiểu , bấm Định dạng như Bảng, rồi chọn một kiểu.
-
Trong hộp thoại Định dạng dưới dạng Bảng, bấm OK.
-
Sao chép tất cả các hàng, bao gồm cả tiêu đề.
-
Trong Power Pivot, trên tab Trang đầu , bấm Dán.
-
Trong Dán Xem > Tên Bảng , nhập tên chẳng hạn như Ngày hoặc Lịch. Đánh dấu chọn Sử dụng hàng đầu tiên làm tiêu đềcột, rồi bấm OK.
Bảng ngày mới (được đặt tên là Lịch trong ví dụ này) trong Power Pivot trông như sau:
Lưu ý: Bạn cũng có thể tạo bảng được liên kết bằng cách sử dụng Thêm vào Mô hình Dữ liệu. Tuy nhiên, điều này làm cho sổ làm việc của bạn lớn không cần thiết vì sổ làm việc có hai phiên bản của bảng ngày; một trong Excel và một trong Power Pivot..
Lưu ý: Ngày tên là một từ khóa trong Power Pivot. Nếu bạn đặt tên cho bảng mình tạo trong Ngày Power Pivot thì bạn sẽ cần đặt tên bảng với dấu ngoặc kép đơn trong mọi công thức DAX tham chiếu bảng trong đối số. Tất cả các hình ảnh và công thức ví dụ trong bài viết này tham chiếu đến một bảng ngày được tạo trong Power Pivot có tên là Lịch.
Bây giờ bạn có một bảng ngày trong Mô hình Dữ liệu của bạn. Bạn có thể thêm cột ngày mới, chẳng hạn như Năm, Tháng, v.v. bằng cách sử dụng DAX.
Thêm cột ngày mới vào bảng ngày
Bảng ngày tháng có một cột ngày có một hàng cho mỗi ngày cho mỗi năm là rất quan trọng để xác định tất cả các ngày trong phạm vi ngày tháng. Cũng cần thiết để tạo mối quan hệ giữa bảng dữ kiện và bảng ngày. Nhưng cột ngày duy nhất có một hàng cho mỗi ngày không hữu ích khi phân tích theo ngày trong báo cáo PivotTable hoặc Power View. Bạn muốn bảng ngày bao gồm các cột giúp bạn tổng hợp dữ liệu cho một phạm vi hoặc nhóm ngày tháng. Ví dụ, bạn có thể muốn tính tổng doanh thu theo tháng hoặc quý hoặc bạn có thể tạo một số đo để tính tăng trưởng theo năm. Trong mỗi trường hợp trong số này, bảng ngày cần cột năm, tháng hoặc quý cho phép bạn tổng hợp dữ liệu trong khoảng thời gian đó.
Nếu bạn đã nhập bảng ngày từ một nguồn dữ liệu quan hệ, bảng có thể đã bao gồm các kiểu cột ngày khác nhau mà bạn muốn. Trong một số trường hợp, bạn có thể muốn sửa đổi một số cột trong số đó hoặc tạo thêm cột ngày. Điều này đặc biệt đúng nếu bạn tạo bảng ngày của riêng mình trong Excel và sao chép nó vào Mô hình Dữ liệu. May mắn là việc tạo cột ngày mới trong Power Pivot khá dễ dàng với hàm Ngày và Thời gian trong DAX.
Mẹo: Nếu bạn chưa làm việc với DAX, một nơi tuyệt vời để bắt đầu học tập là với Hướng dẫn Nhanh: Tìm hiểu Kiến thức cơ bản về DAX trong 30 Phút trên Office.com.
Hàm Ngày và Giờ DAX
Nếu bạn đã từng làm việc với các hàm ngày và giờ trong công thức Excel thì có thể bạn sẽ quen thuộc với Hàm Ngày và Thời gian. Mặc dù các hàm này tương tự như hàm của chúng trong Excel, nhưng có một số khác biệt quan trọng:
-
Hàm Ngày và Giờ CỦA DAX sử dụng kiểu dữ liệu ngày giờ.
-
Chúng có thể lấy giá trị từ một cột làm đối số.
-
Chúng có thể được dùng để trả về và/hoặc thao tác với các giá trị ngày.
Các hàm này thường được sử dụng khi tạo cột ngày tùy chỉnh trong bảng ngày, vì vậy chúng rất quan trọng để hiểu. Chúng tôi sẽ sử dụng một số hàm này để tạo cột cho Năm, Quý, Tháng Tài chính, v.v.
Lưu ý: Hàm Ngày và Giờ trong DAX không giống như hàm Hiển thị Thời gian Thông minh. Tìm hiểu thêm về Hiển thị Thời gian Thông minh trong Power Pivot trong Excel.
DAX bao gồm các hàm Ngày và Giờ sau đây:
Cũng có nhiều hàm DAX khác mà bạn cũng có thể sử dụng trong công thức của mình. Ví dụ: nhiều công thức được mô tả ở đây sử dụng Hàm Lượng giác và Toán học như MOD và TRUNC, Hàm Lô-gic như HÀM IF và Hàm Văn bản như HÀM FORMAT Để biết thêm thông tin về các hàm DAX khác, hãy xem mục Tài nguyên Bổ sung ở phần sau trong bài viết này.
Ví dụ về công thức cho năm dương lịch
Các ví dụ sau đây mô tả công thức được sử dụng để tạo cột bổ sung trong bảng ngày có tên là Lịch. Một cột, có tên là Ngày, đã tồn tại và chứa phạm vi các ngày liên tục từ ngày 01/01/2010 đến 31/12/2016.
Năm
=YEAR([date])
Trong công thức này, hàm YEAR trả về năm từ giá trị trong cột Ngày. Vì giá trị trong cột Ngày là kiểu dữ liệu datetime, hàm YEAR biết cách trả về năm từ nó.
Tháng
=MONTH([date])
Trong công thức này, rất giống với hàm YEAR, chúng ta chỉ cần sử dụng hàm MONTH để trả về giá trị tháng từ cột Ngày.
Quý
=INT(([Month]+2)/3)
Trong công thức này, chúng ta dùng hàm INT để trả về giá trị ngày làm số nguyên. Đối số mà chúng tôi chỉ định cho hàm INT là giá trị từ cột Tháng, cộng 2 và sau đó chia cho 3 để có được quý của chúng ta, từ 1 đến 4.
Tên Tháng
=FORMAT([date],"mmmm")
Trong công thức này, để lấy tên tháng, chúng ta dùng hàm FORMAT để chuyển đổi giá trị số từ cột Ngày thành văn bản. Chúng tôi chỉ định cột Ngày làm đối số đầu tiên, sau đó là định dạng; chúng tôi muốn tên tháng của chúng tôi để hiển thị tất cả các ký tự, vì vậy chúng tôi sử dụng "mmmm". Kết quả của chúng tôi trông như thế này:
Nếu chúng ta muốn trả về tên tháng được viết tắt thành ba chữ cái, chúng ta sẽ dùng "mmm" trong đối số format.
Ngày trong tuần
=FORMAT([date],"ddd")
Trong công thức này, chúng ta dùng hàm FORMAT để lấy tên ngày. Vì chúng ta chỉ muốn một tên ngày viết tắt, chúng ta xác định "ddd" trong đối số format.
PivotTable Mẫu
Sau khi bạn có các trường cho ngày như Năm, Quý, Tháng, v.v., bạn có thể sử dụng chúng trong PivotTable hoặc báo cáo. Ví dụ: hình ảnh sau đây hiển thị trường Số_tiền_doanh_số từ bảng Dữ_kiện_Doanh_số trong giá_trị_doanh_số và Năm và Quý từ bảng thứ nguyên Lịch trong HÀNG. SalesAmount được tổng hợp cho ngữ cảnh năm và quý.
Ví dụ về công thức cho năm tài chính
Năm Tài chính
=IF([Tháng]<= 6,[Năm],[Năm]+1)
Trong ví dụ này, năm tài chính bắt đầu vào ngày 1 tháng 7.
Không có hàm nào có thể trích xuất năm tài chính từ giá trị ngày vì ngày bắt đầu và kết thúc cho năm tài chính thường khác với năm dương lịch. Để có năm tài chính, trước tiên chúng ta dùng hàm IF để kiểm tra xem giá trị cho Tháng có nhỏ hơn hoặc bằng 6 hay không. Trong đối số thứ hai, nếu giá trị cho Month nhỏ hơn hoặc bằng 6, thì trả về giá trị từ cột Year. Nếu không, thì trả về giá trị từ Year và cộng 1.
Một cách khác để xác định giá trị tháng cuối năm tài chính là tạo một số đo chỉ xác định tháng. Ví dụ: FYE:=6. Sau đó, bạn có thể tham chiếu tên số đo thay cho số tháng. Ví dụ: =IF([Month]<=[FYE],[Year],[Year]+1). Điều này cung cấp tính linh hoạt hơn khi tham chiếu tháng cuối năm tài chính trong một số công thức khác nhau.
Tháng Tài chính
=IF([Month]<= 6, 6+[Month], [Month]- 6)
Trong công thức này, chúng tôi chỉ định giá trị cho [Month] nhỏ hơn hoặc bằng 6, thì lấy 6 và cộng giá trị từ Month, nếu không thì trừ 6 từ giá trị từ [Month].
Quý Tài chính
=INT(([FiscalMonth]+2)/3)
Công thức chúng tôi sử dụng cho FiscalQuarter rất giống với công thức dành cho Quý trong năm dương lịch của chúng tôi. Sự khác biệt duy nhất là chúng tôi chỉ định [FiscalMonth] thay vì [Month].
Ngày lễ hoặc ngày đặc biệt
Bạn có thể muốn đưa vào một cột ngày cho biết một số ngày nhất định là ngày lễ hoặc một số ngày đặc biệt khác. Ví dụ: bạn có thể muốn tính tổng doanh thu cho ngày Năm mới bằng cách thêm trường Ngày lễ vào PivotTable, dưới dạng slicer hoặc bộ lọc. Trong các trường hợp khác, bạn có thể muốn loại trừ các ngày đó khỏi các cột ngày khác hoặc theo một số đo.
Bao gồm cả ngày lễ hoặc ngày đặc biệt là khá đơn giản. Bạn có thể tạo bảng trong Excel có ngày bạn muốn đưa vào. Sau đó, bạn có thể sao chép hoặc sử dụng Thêm vào Mô hình Dữ liệu để thêm nó vào Mô hình Dữ liệu dưới dạng bảng được liên kết. Trong hầu hết các trường hợp, không cần tạo mối quan hệ giữa bảng và bảng Lịch. Mọi công thức tham chiếu đến công thức đó đều có thể sử dụng hàm LOOKUPVALUE để trả về giá trị.
Dưới đây là ví dụ về bảng được tạo trong Excel bao gồm ngày lễ sẽ được thêm vào bảng ngày:
Ngày |
Ngày lễ |
---|---|
1/1/2010 |
Năm mới |
11/25/2010 |
Lễ tạ ơn |
12/25/2010 |
Giáng sinh |
01/01/2011 |
Năm mới |
11/24/2011 |
Lễ tạ ơn |
12/25/2011 |
Giáng sinh |
01/01/2012 |
Năm mới |
22/11/2012 |
Lễ tạ ơn |
12/25/2012 |
Giáng sinh |
1/1/2013 |
Năm mới |
11/28/2013 |
Lễ tạ ơn |
12/25/2013 |
Giáng sinh |
11/27/2014 |
Lễ tạ ơn |
12/25/2014 |
Giáng sinh |
01/01/2014 |
Năm mới |
11/27/2014 |
Lễ tạ ơn |
12/25/2014 |
Giáng sinh |
1/1/2015 |
Năm mới |
11/26/2014 |
Lễ tạ ơn |
12/25/2015 |
Giáng sinh |
01/01/2016 |
Năm mới |
11/24/2016 |
Lễ tạ ơn |
12/25/2016 |
Giáng sinh |
Trong bảng ngày, chúng ta tạo một cột có tên là Ngày lễ và sử dụng công thức như sau:
=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])
Hãy xem công thức này cẩn thận hơn.
Chúng tôi sử dụng hàm LOOKUPVALUE để lấy giá trị từ cột Ngày lễ trong bảng Holidays. Trong đối số thứ nhất, chúng tôi chỉ định cột chứa giá trị kết quả của chúng ta. Chúng tôi chỉ định cột Ngày lễ trong bảng Holidays vì đó là giá trị mà chúng tôi muốn trả về.
=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])
Sau đó chúng ta chỉ định đối số thứ hai, cột tìm kiếm có ngày mà chúng ta muốn tìm kiếm. Chúng tôi chỉ định cột Ngày trong bảng Holidays , như sau:
=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])
Cuối cùng, chúng tôi chỉ định cột trong bảng Lịch có ngày mà chúng tôi muốn tìm kiếm trong bảng Ngày lễ . Tất nhiên là cột Ngày trong bảng Lịch .
=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])
Cột Ngày lễ sẽ trả về tên ngày lễ cho mỗi hàng có giá trị ngày khớp với ngày trong bảng Holidays.
Lịch tùy chỉnh - mười ba giai đoạn bốn tuần
Một số tổ chức, chẳng hạn như dịch vụ bán lẻ hoặc thực phẩm, thường báo cáo về các giai đoạn khác nhau, chẳng hạn như mười ba khoảng thời gian bốn tuần. Với lịch thời gian mười ba tuần, mỗi giai đoạn là 28 ngày; do đó, mỗi giai đoạn chứa bốn thứ hai, bốn thứ ba, bốn thứ tư, và như vậy. Mỗi kỳ chứa cùng một số ngày và thông thường, ngày lễ sẽ rơi vào cùng một khoảng thời gian mỗi năm. Bạn có thể chọn bắt đầu một khoảng thời gian vào bất kỳ ngày nào trong tuần. Cũng giống như với ngày trong lịch hoặc năm tài chính, bạn có thể sử dụng DAX để tạo thêm cột với ngày tùy chỉnh.
Trong các ví dụ dưới đây, giai đoạn đầy đủ đầu tiên bắt đầu vào Ngày Chủ Nhật đầu tiên của năm tài chính. Trong trường hợp này, năm tài chính bắt đầu vào ngày 07/1.
Tuần
Giá trị này cho chúng tôi số tuần bắt đầu từ tuần đầy đủ đầu tiên trong năm tài chính. Trong ví dụ này, tuần đầy đủ đầu tiên bắt đầu vào Chủ Nhật, vì vậy tuần đầy đủ đầu tiên trong năm tài chính đầu tiên trong bảng Lịch thực sự bắt đầu vào ngày 04/07/2010 và tiếp tục đến tuần đầy đủ cuối cùng trong bảng Lịch. Mặc dù bản thân giá trị này không phải là tất cả hữu ích trong phân tích, nhưng cần tính toán để sử dụng trong các công thức khác trong khoảng thời gian 28 ngày.
=INT([ngày]-40356)/7)
Hãy xem công thức này cẩn thận hơn.
Trước tiên, chúng ta tạo một công thức trả về giá trị từ cột Ngày dưới dạng số nguyên, như thế này:
=INT([date])
Sau đó chúng tôi muốn tìm chủ nhật đầu tiên trong năm tài chính đầu tiên. Chúng tôi thấy rằng đó là 04/07/2010.
Bây giờ, trừ 40356 (là số nguyên cho 27/06/2010, Chủ Nhật cuối cùng từ năm tài chính trước đó) để lấy số ngày tính từ đầu ngày trong bảng Lịch của chúng tôi, như sau:
=INT([ngày]-40356)
Sau đó chia kết quả cho 7 (ngày trong tuần), như sau:
=INT(([ngày]-40356)/7)
Kết quả sẽ trông như thế này:
Dấu chấm
Khoảng thời gian trong lịch tùy chỉnh này chứa 28 ngày và nó sẽ luôn bắt đầu vào một Chủ nhật. Cột này sẽ trả về số của khoảng thời gian bắt đầu từ Ngày Chủ Nhật đầu tiên trong năm tài chính đầu tiên.
=INT(([Tuần]+3)/4)
Hãy xem công thức này cẩn thận hơn.
Trước tiên, chúng ta tạo một công thức trả về giá trị từ cột Week dưới dạng số nguyên, như thế này:
=INT([Tuần])
Sau đó, thêm 3 vào giá trị đó, như thế này:
=INT([Tuần]+3)
Sau đó chia kết quả cho 4, như sau:
=INT(([Tuần]+3)/4)
Kết quả sẽ trông như thế này:
Năm tài chính của giai đoạn
Giá trị này trả về năm tài chính cho một khoảng thời gian.
=INT(([Dấu chấm]+12)/13)+2008
Hãy xem công thức này cẩn thận hơn.
Trước tiên, chúng ta tạo công thức trả về giá trị từ Dấu chấm và cộng 12:
= ([Dấu chấm]+12)
Chúng tôi chia kết quả cho 13, vì có mười ba khoảng thời gian 28 ngày trong năm tài chính:
=(([Dấu chấm]+12)/13)
Chúng tôi thêm 2010, bởi vì đó là năm đầu tiên trong bảng:
=(([Dấu chấm]+12)/13)+2010
Cuối cùng, chúng ta dùng hàm INT để loại bỏ bất kỳ phân số nào của kết quả và trả về một số nguyên, khi chia cho 13, như thế này:
=INT(([Dấu chấm]+12)/13)+2010
Kết quả sẽ trông như thế này:
Giai đoạn trong năm tài chính
Giá trị này trả về số kỳ, 1 – 13, bắt đầu với Giai đoạn đầy đủ đầu tiên (bắt đầu vào Ngày Chủ Nhật) trong mỗi năm tài chính.
=IF(MOD([Dấu chấm],13), MOD([Dấu chấm],13);13)
Công thức này phức tạp hơn một chút, vì vậy chúng tôi sẽ mô tả công thức đầu tiên bằng ngôn ngữ mà chúng ta hiểu rõ hơn. Công thức này cho biết, hãy chia giá trị từ [Kỳ] cho 13 để có số kỳ hạn (1-13) trong năm. Nếu số đó bằng 0 thì trả về 13.
Trước tiên, chúng ta tạo một công thức trả về phần dư của giá trị từ Dấu chấm của 13. Chúng ta có thể dùng hàm MOD (Toán học và Lượng giác) như sau:
=MOD([Dấu chấm],13)
Trong hầu hết các trường hợp, điều này cho chúng ta kết quả mong muốn, ngoại trừ trường hợp giá trị cho Giai đoạn bằng 0 vì những ngày đó không nằm trong năm tài chính đầu tiên, chẳng hạn như trong năm ngày đầu tiên của bảng ngày trong Lịch ví dụ của chúng tôi. Chúng ta có thể xử lý vấn đề này bằng hàm IF. Trong trường hợp kết quả của chúng tôi bằng 0, chúng tôi trả về 13, như sau:
=IF(MOD([Dấu chấm],13),MOD([Dấu chấm],13);13)
Kết quả sẽ trông như thế này:
PivotTable Mẫu
Hình ảnh dưới đây hiển thị một PivotTable với trường SalesAmount từ bảng dữ kiện Doanh số trong VALUES và các trường PeriodFiscalYear và PeriodInFiscalYear từ bảng chiều ngày trong Lịch trong HÀNG. SalesAmount được tổng hợp cho bối cảnh theo năm tài chính và khoảng thời gian 28 ngày trong năm tài chính.
Quan hệ
Sau khi bạn đã tạo bảng ngày trong Mô hình Dữ liệu, để bắt đầu duyệt dữ liệu trong PivotTable và báo cáo và để tổng hợp dữ liệu dựa trên các cột trong bảng thứ nguyên ngày tháng, bạn cần tạo mối quan hệ giữa bảng dữ kiện với dữ liệu giao dịch của bạn và bảng ngày.
Vì bạn cần tạo mối quan hệ dựa trên ngày tháng, bạn sẽ muốn đảm bảo rằng bạn tạo mối quan hệ giữa các cột có giá trị thuộc kiểu dữ liệu ngày giờ (Ngày).
Đối với mỗi giá trị ngày trong bảng dữ kiện, cột tra cứu liên quan trong bảng ngày phải chứa các giá trị khớp nhau. Ví dụ: một hàng (bản ghi giao dịch) trong bảng Dữ kiện bán hàng có giá trị 15/08/2012 12:00 SA trong cột DateKey phải có giá trị tương ứng trong cột Ngày liên quan trong bảng ngày (có tên là Lịch). Đây là một trong những lý do quan trọng nhất mà bạn muốn cột ngày tháng của mình trong bảng ngày tháng chứa phạm vi ngày tháng liền kề bao gồm bất kỳ ngày nào có thể có trong bảng dữ kiện của bạn.
Lưu ý: Mặc dù cột ngày trong mỗi bảng phải có cùng kiểu dữ liệu (Ngày), định dạng của mỗi cột không quan trọng.
Lưu ý: Nếu Power Pivot không cho phép bạn tạo mối quan hệ giữa hai bảng, trường ngày có thể không lưu trữ ngày và giờ ở cùng mức độ chính xác. Tùy thuộc vào định dạng cột, các giá trị có thể trông giống nhau nhưng được lưu trữ khác nhau. Đọc thêm về làm việc với thời gian.
Lưu ý: Tránh sử dụng các phím thay thế số nguyên trong các mối quan hệ. Khi bạn nhập dữ liệu từ một nguồn dữ liệu quan hệ, cột ngày và giờ thường được thể hiện bằng khóa thay thế, là cột số nguyên được dùng để biểu thị ngày duy nhất. Trong Power Pivot, bạn nên tránh tạo mối quan hệ bằng cách sử dụng các phím ngày/giờ số nguyên, thay vào đó, hãy dùng các cột có chứa các giá trị duy nhất có kiểu dữ liệu ngày. Mặc dù việc sử dụng khóa thay thế được coi là biện pháp tốt nhất trong kho dữ liệu truyền thống, nhưng không cần khóa số nguyên trong Power Pivot và có thể khiến bạn khó nhóm các giá trị trong PivotTable theo các khoảng ngày khác nhau.
Nếu bạn gặp lỗi Nhập không khớp khi cố gắng tạo mối quan hệ, thì có thể là do cột trong bảng dữ liệu không thuộc kiểu dữ liệu Ngày. Điều này có thể xảy ra khi Power Pivot không thể tự động chuyển đổi một kiểu dữ liệu không phải là ngày (thường là kiểu dữ liệu văn bản) thành kiểu dữ liệu ngày tháng. Bạn vẫn có thể dùng cột trong bảng dữ kiện, nhưng bạn sẽ phải chuyển đổi dữ liệu bằng công thức DAX trong một cột được tính mới. Xem mục Chuyển đổi ngày tháng của kiểu dữ liệu văn bản thành kiểu dữ liệu ngày ở phần sau trong phụ lục.
Nhiều mối quan hệ
Trong một số trường hợp, có thể cần tạo nhiều mối quan hệ hoặc tạo nhiều bảng ngày. Ví dụ: nếu có nhiều trường ngày trong bảng dữ kiện Doanh số, chẳng hạn như DateKey, ShipDate và ReturnDate, tất cả các trường này đều có thể có mối quan hệ với trường Ngày trong bảng ngày trong Lịch, nhưng chỉ một trong số đó có thể là mối quan hệ hiện hoạt. Trong trường hợp này, vì DateKey đại diện cho ngày của giao dịch, và do đó ngày quan trọng nhất, điều này tốt nhất có thể đóng vai trò là mối quan hệ hoạt động. Những người khác có mối quan hệ không hoạt động.
PivotTable sau đây tính tổng doanh thu theo Năm Tài chính và Quý Tài chính. Một số đo có tên là Tổng Doanh thu, với công thức Tổng Doanh thu :=SUM([SalesAmount]), được đặt trong các trường VALUES, và các trường Năm Tài chính và Tài chínhQuarter từ bảng ngày trong Lịch được đặt trong HÀNG.
PivotTable chuyển tiếp thẳng này hoạt động chính xác vì chúng tôi muốn tính tổng doanh thu của mình theo ngày giaodịch trong DateKey. Thước đo Tổng Doanh thu của chúng tôi sử dụng ngày trong DateKey và được tính tổng theo năm tài chính và quý tài chính vì có mối quan hệ giữa DateKey trong bảng Doanh số và cột Ngày trong bảng ngày trong Lịch.
Mối quan hệ không hoạt động
Nhưng nếu chúng tôi muốn tính tổng doanh thu của mình không phải theo ngày giao dịch, mà theo ngày giao hàng thì sao? Chúng ta cần có mối quan hệ giữa cột Ngày Vận chuyển trong bảng Doanh số bán hàng và cột Ngày trong bảng Lịch. Nếu chúng ta không tạo ra mối quan hệ đó, các kết tập của chúng ta luôn dựa trên ngày giao dịch. Tuy nhiên, chúng ta có thể có nhiều mối quan hệ, mặc dù chỉ có một mối quan hệ có thể hoạt động và vì ngày giao dịch là quan trọng nhất, nó nhận được mối quan hệ hiện hoạt với bảng Lịch.
Trong trường hợp này, Ngày Vận chuyển có mối quan hệ không hoạt động, vì vậy, bất kỳ công thức đo nào được tạo ra để tổng hợp dữ liệu dựa trên ngày vận chuyển đều phải xác định mối quan hệ không hoạt động bằng cách sử dụng hàm USERELATIONSHIP .
Ví dụ: vì có mối quan hệ không hoạt động giữa cột Ngày Vận chuyển trong bảng Doanh số bán hàng và cột Ngày trong bảng Lịch, chúng tôi có thể tạo số đo tính tổng tổng doanh thu theo ngày vận chuyển. Chúng ta dùng một công thức như thế này để xác định mối quan hệ cần dùng:
Tổng Doanh thu theo Ngày Vận chuyển:=CALCULATE(SUM(Sales[SalesAmount]), USERELATIONSHIP(Sales[ShipDate], Calendar[Date]))
Công thức này chỉ nêu rõ: Tính tổng Doanh_số_doanh_số nhưng lọc bằng cách sử dụng mối quan hệ giữa cột Ngày_Vận_chuyển trong bảng Doanh số và cột Ngày trong bảng Lịch.
Bây giờ, nếu chúng ta tạo Một PivotTable và đặt số liệu Tổng Doanh thu theo Ngày Vận chuyển trong values, và Năm Tài chính và Quý Tài chính trên CÁC HÀNG, chúng ta sẽ thấy cùng một Tổng Cuối, nhưng tất cả các số tiền khác cho năm tài chính và quý tài chính khác nhau vì chúng được dựa trên ngày vận chuyển chứ không phải ngày giao dịch.
Việc sử dụng mối quan hệ không hoạt động cho phép bạn chỉ sử dụng một bảng ngày nhưng không yêu cầu bất kỳ số đo nào (như Tổng Doanh thu theo Ngày Vận chuyển), hãy tham chiếu đến mối quan hệ không hoạt động trong công thức của nó. Có một cách khác là sử dụng nhiều bảng ngày.
Nhiều bảng ngày
Một cách khác để làm việc với nhiều cột ngày trong bảng dữ kiện của bạn là tạo nhiều bảng ngày và tạo các mối quan hệ hiện hoạt riêng biệt giữa chúng. Chúng ta hãy xem lại ví dụ về bảng Doanh số của chúng tôi. Chúng tôi có ba cột với ngày tháng mà chúng tôi có thể muốn tổng hợp dữ liệu trên:
-
DateKey chứa ngày bán cho mỗi giao dịch.
-
Ngày Vận chuyển – với ngày và thời gian khi các mặt hàng bán được giao cho khách hàng.
-
Ngày Trả lại – với ngày và giờ nhận được một hoặc nhiều mục trả về.
Hãy nhớ rằng, trường DateKey có ngày giao dịch là quan trọng nhất. Chúng tôi sẽ thực hiện hầu hết các kết tập dựa trên những ngày này, vì vậy chúng tôi chắc chắn sẽ muốn có một mối quan hệ giữa nó và cột Ngày trong bảng Lịch. Nếu chúng ta không muốn tạo mối quan hệ không hoạt động giữa Ngày_Vận_chuyển và Ngày_Trả_lại_vận_chuyển và trường Ngày trong bảng Lịch, do đó yêu cầu công thức đo lường đặc biệt, chúng ta có thể tạo các bảng ngày bổ sung cho ngày vận chuyển và ngày trả về. Sau đó, chúng ta có thể tạo ra các mối quan hệ tích cực giữa chúng.
Trong ví dụ này, chúng tôi đã tạo một bảng ngày khác có tên là ShipCalendar. Dĩ nhiên, điều này cũng có nghĩa là tạo các cột ngày bổ sung và vì các cột ngày này nằm trong một bảng ngày khác nên chúng tôi muốn đặt tên cho chúng theo cách phân biệt chúng với cùng một cột trong bảng Lịch. Ví dụ: chúng tôi đã tạo các cột có tên là ShipYear, ShipMonth, ShipQuarter, v.v.
Nếu chúng ta tạo PivotTable của mình và đặt thước đo Tổng Doanh thu của chúng ta vào GIÁ TRỊ, và ShipFiscalYear và ShipFiscalQuarter trên CÁC HÀNG, chúng ta sẽ thấy kết quả tương tự mà chúng ta đã thấy khi tạo ra một mối quan hệ không hoạt động và một Tổng Doanh thu đặc biệt theo trường được tính toán Ngày Vận chuyển.
Mỗi phương pháp trong số này đòi hỏi phải cân nhắc cẩn thận. Khi sử dụng nhiều mối quan hệ với một bảng ngày, bạn có thể phải tạo các số đo đặc biệt chuyển tiếp các mối quan hệ không hoạt động bằng cách sử dụng hàm USERELATIONSHIP. Mặt khác, việc tạo nhiều bảng ngày có thể gây nhầm lẫn trong Danh sách Trường và vì bạn có nhiều bảng hơn trong Mô hình Dữ liệu nên sẽ cần nhiều bộ nhớ hơn. Thử nghiệm những gì phù hợp nhất với bạn.
Thuộc tính Bảng Ngày
Thuộc tính Bảng Ngày đặt siêu dữ liệu cần Time-Intelligence các hàm như TOTALYTD, PREVIOUSMONTH và DATESBETWEEN hoạt động chính xác. Khi một phép tính được chạy bằng một trong các hàm này, công cụ công thức của Power Pivot sẽ biết nơi cần đến để lấy ngày tháng cần thiết.
Cảnh báo: Nếu thuộc tính này không được đặt, các số đo sử dụng hàm DAX Time-Intelligence có thể trả về kết quả không chính xác.
Khi bạn đặt thuộc tính Bảng Ngày, bạn chỉ định bảng ngày và cột ngày thuộc kiểu dữ liệu Ngày (ngày giờ) trong đó.
Cách: Đặt thuộc tính Bảng Ngày
-
Trong cửa sổ PowerPivot, chọn bảng Lịch.
-
Trên tab Thiết kế , bấm đánh dấu là bảng ngày.
-
Trong hộp thoại Đánh dấu là Bảng Ngày, chọn một cột có các giá trị duy nhất và kiểu dữ liệu Ngày.
Làm việc với thời gian
Tất cả các giá trị ngày có kiểu dữ liệu Ngày trong Excel hoặc SQL Server thực sự là một số. Bao gồm trong số đó là các chữ số tham chiếu đến thời gian. Trong nhiều trường hợp, thời gian đó cho mỗi hàng là nửa đêm. Ví dụ: nếu trường DateTimeKey trong bảng dữ kiện Bán hàng có các giá trị như 19/10/2010 12:00:00 SA, điều này có nghĩa là các giá trị ở mức độ chính xác ngày. Nếu các giá trị trường DateTimeKey có thời gian được bao gồm, ví dụ: 19/10/2010 8:44:00 SA, điều này có nghĩa là các giá trị ở mức độ chính xác phút. Giá trị cũng có thể là độ chính xác của mức giờ hoặc thậm chí là mức chính xác giây. Mức độ chính xác trong giá trị thời gian sẽ có tác động đáng kể đến cách bạn tạo bảng ngày và mối quan hệ giữa bảng đó và bảng dữ kiện của bạn.
Bạn cần xác định xem bạn sẽ tổng hợp dữ liệu của mình ở mức độ chính xác ngày hay đến mức độ chính xác thời gian. Nói cách khác, bạn có thể muốn sử dụng các cột trong bảng ngày tháng, chẳng hạn như Buổi sáng, Buổi chiều hoặc Giờ làm các trường ngày trong khu vực Hàng, Cột hoặc Lọc của PivotTable.
Lưu ý: Ngày là đơn vị thời gian nhỏ nhất mà các hàm Hiển thị Thời gian Thông minh DAX có thể làm việc cùng. Nếu bạn không cần làm việc với giá trị thời gian, bạn nên giảm độ chính xác của dữ liệu để dùng ngày làm đơn vị tối thiểu.
Nếu bạn dự định tổng hợp dữ liệu của mình theo mức thời gian thì bảng ngày của bạn sẽ cần một cột ngày kèm theo thời gian bao gồm. Trên thực tế, nó sẽ cần một cột ngày với một hàng cho mỗi giờ, hoặc có thể là mỗi phút, mỗi ngày, cho mỗi năm trong phạm vi ngày. Lý do là vì để tạo mối quan hệ giữa cột DateTimeKey trong bảng dữ kiện và cột ngày trong bảng ngày, bạn phải có các giá trị khớp nhau. Như bạn có thể tưởng tượng, nếu bạn bao gồm rất nhiều năm, điều này có thể làm cho một bảng ngày rất lớn.
Mặc dù vậy, trong hầu hết các trường hợp, bạn chỉ muốn tổng hợp dữ liệu của mình cho đến ngày. Nói cách khác, bạn sẽ sử dụng các cột như Năm, Tháng, Tuần hoặc Ngày trong Tuần làm các trường trong khu vực Hàng, Cột hoặc Bộ lọc của PivotTable. Trong trường hợp này, cột ngày trong bảng ngày chỉ cần chứa một hàng cho mỗi ngày trong một năm, như chúng tôi đã mô tả ở phần trước.
Nếu cột ngày của bạn có mức độ chính xác theo thời gian nhưng bạn sẽ chỉ tổng hợp đến mức ngày, để tạo mối quan hệ giữa bảng dữ kiện và bảng ngày, bạn có thể phải sửa đổi bảng dữ kiện bằng cách tạo cột mới cắt bớt các giá trị trong cột ngày thành giá trị ngày. Nói cách khác, chuyển đổi một giá trị như 19/10/2010 8:44:00SA sang 19/10/2010 12:00:00 SA. Sau đó, bạn có thể tạo mối quan hệ giữa cột mới này và cột ngày trong bảng ngày vì các giá trị khớp nhau.
Chúng ta hãy xem xét một ví dụ. Hình ảnh này hiển thị cột DateTimeKey trong bảng Dữ kiện bán hàng. Tất cả các kết tập cho dữ liệu trong bảng này chỉ cần ở mức ngày, bằng cách sử dụng các cột trong bảng ngày trong Lịch như Năm, Tháng, Quý, v.v. Thời gian bao gồm trong giá trị không liên quan, chỉ có ngày thực tế.
Vì chúng tôi không cần phân tích dữ liệu này về mức thời gian nên chúng tôi không cần cột Ngày trong bảng ngày trong Lịch để đưa vào một hàng cho mỗi giờ và mỗi phút mỗi ngày trong mỗi năm. Vì vậy, cột Ngày trong bảng ngày của chúng tôi trông như thế này:
Để tạo mối quan hệ giữa cột DateTimeKey trong bảng Doanh số và cột Ngày trong bảng Lịch, chúng ta có thể tạo cột được tính mới trong bảng Dữ kiện bán hàng và sử dụng hàm TRUNC để cắt bớt giá trị ngày và thời gian trong cột DateTimeKey thành giá trị ngày khớp với giá trị trong cột Ngày trong bảng Lịch. Công thức của chúng tôi trông như thế này:
=TRUNC([DateTimeKey],0)
Tùy chọn này cung cấp cho chúng tôi một cột mới (chúng tôi đã đặt tên là DateKey) với ngày từ cột DateTimeKey và thời gian là 12:00:00 SA cho mỗi hàng:
Bây giờ, chúng ta có thể tạo mối quan hệ giữa cột (DateKey) mới này và cột Ngày trong bảng Lịch.
Tương tự, chúng ta có thể tạo cột được tính trong bảng Doanh số bán hàng giúp giảm độ chính xác thời gian trong cột DateTimeKey xuống mức độ chính xác theo giờ. Trong trường hợp này, hàm TRUNC sẽ không hoạt động nhưng chúng ta vẫn có thể sử dụng các hàm Ngày và Giờ DAX khác để trích xuất và ghép nối lại một giá trị mới với mức độ chính xác một giờ. Chúng ta có thể dùng công thức như thế này:
= DATE (YEAR([DateTimeKey]), MONTH([DateTimeKey]), DAY([DateTimeKey]) ) + TIME (HOUR([DateTimeKey]), 0, 0)
Cột mới của chúng tôi trông như thế này:
Nếu cột Ngày của chúng tôi trong bảng ngày có các giá trị ở mức độ chính xác theo giờ, thì chúng ta có thể tạo mối quan hệ giữa chúng.
Làm cho ngày có thể sử dụng được nhiều hơn
Nhiều cột ngày bạn tạo trong bảng ngày là cần thiết cho các trường khác, nhưng thực sự không phải tất cả đều hữu ích trong phân tích. Ví dụ: trường DateKey trong bảng Doanh số mà chúng tôi đã tham chiếu và hiển thị trong toàn bộ bài viết này rất quan trọng vì đối với mọi giao dịch, giao dịch đó được ghi lại là diễn ra vào một ngày và giờ cụ thể. Nhưng từ quan điểm phân tích và báo cáo, không phải tất cả đều hữu ích vì chúng ta không thể dùng nó làm trường hàng, cột hoặc bộ lọc trong Bảng Pivot hoặc báo cáo.
Tương tự, trong ví dụ của chúng tôi, cột Ngày trong bảng Lịch rất hữu ích, quan trọng trên thực tế nhưng bạn không thể sử dụng cột này làm chiều trong PivotTable.
Để giữ cho bảng và cột trong đó càng hữu ích càng tốt và để dẫn hướng danh sách Trường báo cáo PivotTable hoặc Power View dễ dàng hơn, bạn nên ẩn các cột không cần thiết khỏi công cụ khách. Bạn cũng có thể muốn ẩn một số bảng nhất định. Bảng Ngày lễ hiển thị trước đó chứa các ngày lễ quan trọng đối với một số cột nhất định trong bảng Lịch, nhưng bạn không thể tự dùng cột Ngày và Ngày lễ trong bảng Ngày lễ làm trường trong PivotTable. Ở đây một lần nữa, để giúp dẫn hướng Danh sách Trường dễ dàng hơn, bạn có thể ẩn toàn bộ bảng Holidays.
Một khía cạnh quan trọng khác khi làm việc với ngày tháng là đặt tên quy ước. Bạn có thể đặt tên cho bảng và cột trong Power Pivot bất cứ điều gì bạn muốn. Nhưng hãy ghi nhớ, đặc biệt là nếu bạn sẽ chia sẻ sổ làm việc của mình với người dùng khác, một quy ước đặt tên tốt sẽ giúp bạn dễ dàng hơn trong việc xác định bảng và ngày tháng, không chỉ trong Danh sách Trường, mà còn trong Power Pivot và trong công thức DAX.
Sau khi bạn có bảng ngày trong Mô hình Dữ liệu, bạn có thể bắt đầu tạo các số đo để giúp bạn khai thác tối đa dữ liệu của mình. Một số có thể chỉ đơn giản là tính tổng tổng doanh thu cho năm hiện tại và một số khác có thể phức tạp hơn, khi bạn cần lọc theo một phạm vi ngày duy nhất cụ thể. Tìm hiểu thêm trong Mục đo trong Power Pivot vàHàm Hiển thị Thời gian Thông minh.
Phụ lục
Chuyển đổi ngày tháng kiểu dữ liệu văn bản thành kiểu dữ liệu ngày
Trong một số trường hợp, bảng dữ kiện có dữ liệu giao dịch có thể chứa ngày của kiểu dữ liệu văn bản. Nghĩa là, ngày tháng xuất hiện ở dạng 2012-12-04T11:47:09 thực tế không phải là ngày, hoặc ít nhất là không phải là kiểu ngày mà Power Pivot có thể hiểu được. Đó thực sự chỉ là văn bản đọc như một ngày. Để tạo mối quan hệ giữa cột ngày trong bảng dữ kiện và cột ngày trong bảng ngày tháng, cả hai cột phải thuộc kiểu dữ liệu Ngày.
Thông thường, khi bạn tìm cách thay đổi kiểu dữ liệu cho một cột ngày tháng là kiểu dữ liệu văn bản thành kiểu dữ liệu ngày, Power Pivot có thể diễn giải ngày và chuyển đổi ngày thành kiểu dữ liệu ngày đúng một cách tự động. Nếu Power Pivot không thể chuyển đổi kiểu dữ liệu, bạn sẽ gặp lỗi kiểu không khớp.
Tuy nhiên, bạn vẫn có thể chuyển đổi ngày thành kiểu dữ liệu ngày đúng. Bạn có thể tạo cột được tính mới và sử dụng công thức DAX để phân tích năm, tháng, ngày, thời gian, v.v. từ các chuỗi văn bản, rồi ghép nối lại với nhau theo cách mà Power Pivot có thể đọc dưới dạng ngày đúng.
Trong ví dụ này, chúng tôi đã nhập một bảng dữ kiện có tên là Doanh số vào Power Pivot. Nó chứa một cột có tên là DateTime. Các giá trị xuất hiện như sau:
Nếu chúng ta xem Kiểu Dữ liệu trong tab Trang chủ của nhóm Định dạng power Pivot, chúng ta thấy rằng đó là Kiểu dữ liệu Văn bản.
Chúng tôi không thể tạo mối quan hệ giữa cột DateTime và cột Ngày trong bảng ngày của mình vì các kiểu dữ liệu không khớp. Nếu chúng tôi cố thay đổi kiểu dữ liệu thành Ngày, chúng tôi gặp lỗi loại không khớp:
Trong trường hợp này, Power Pivot không thể chuyển đổi kiểu dữ liệu từ văn bản này sang văn bản khác. Chúng ta vẫn có thể dùng cột này, nhưng để biến cột thành kiểu dữ liệu ngày đúng, chúng ta cần tạo một cột mới phân tích văn bản và tạo lại thành một giá trị mà Power Pivot có thể tạo ra kiểu dữ liệu Ngày.
Hãy nhớ rằng, từ phần Làm việc với thời gian trước đó trong bài viết này; trừ khi nó là cần thiết phân tích của bạn là một mức độ chính xác thời gian-of-ngày, bạn nên chuyển đổi ngày tháng trong bảng thực tế của bạn để một mức độ chính xác ngày. Với ý định đó, chúng tôi muốn các giá trị trong cột mới của mình ở mức độ chính xác ngày (không bao gồm thời gian). Cả hai chúng ta đều có thể chuyển đổi các giá trị trong cột DateTime thành kiểu dữ liệu ngày và loại bỏ mức độ chính xác thời gian bằng công thức sau đây:
=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2))
Thao tác này sẽ cung cấp cho chúng tôi một cột mới (trong trường hợp này, có tên là Ngày). Power Pivot thậm chí còn phát hiện các giá trị là ngày tháng và đặt kiểu dữ liệu tự động thành Ngày.
Nếu chúng ta muốn duy trì mức thời gian chính xác, chúng ta chỉ cần mở rộng công thức để bao gồm giờ, phút và giây.
=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2)) +
TIME(MID([DateTime],12,2), MID([DateTime],15,2), MID([DateTime],18,2))
Bây giờ, chúng ta đã có cột Ngày kiểu dữ liệu Ngày, chúng ta có thể tạo mối quan hệ giữa cột này và cột ngày trong một ngày.
Các tài nguyên khác
Khởi động Nhanh: Tìm hiểu Kiến thức cơ bản về DAX trong 30 Phút