Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Bảng thứ nguyên:Xem xét các loại bảng kích thước phổ biến nhất của Kho dữ liệu

Khi chúng tôi bắt đầu một dự án kho dữ liệu, điều đầu tiên chúng tôi làm là xác định các bảng chiều. Bảng thứ nguyên là các bit thú vị, là khuôn khổ mà chúng ta xây dựng các phép đo của mình. Chúng có nhiều hình dạng và kích cỡ. Trong bài viết này, chúng ta sẽ xem xét kỹ hơn từng loại bảng thứ nguyên.

Bảng thứ nguyên cung cấp bối cảnh cho các quy trình kinh doanh mà chúng tôi muốn đo lường. Họ cho chúng tôi biết tất cả những gì chúng tôi cần biết về một sự kiện. Vì chúng cung cấp nội dung cho các phép đo (tức là bảng dữ kiện) của hệ thống kho dữ liệu (DWH), chúng tôi dành nhiều thời gian hơn cho việc xác định và định nghĩa chúng hơn bất kỳ khía cạnh nào khác của dự án. Bảng dữ kiện xác định sự đo, sự đo lường; bảng chiều cung cấp ngữ cảnh. (Để đọc thêm về bảng dữ kiện, hãy xem các bài đăng này về kho dữ liệu, giản đồ hình sao, giản đồ bông tuyết và thông tin thực tế về bảng dữ liệu).

Đặc điểm chính của bảng thứ nguyên là vô số thuộc tính của chúng . Thuộc tính là các cột mà chúng tôi tóm tắt, lọc hoặc tổng hợp. Chúng có bản số thấp và thường là văn bản và thời gian. Bảng thứ nguyên có một khóa chính dựa trên khóa kinh doanh cơ bản hoặc một khóa thay thế . Khóa chính này là cơ sở để nối bảng thứ nguyên với một hoặc nhiều bảng dữ kiện.

So với bảng thực tế, bảng kích thước có kích thước nhỏ, dễ lưu trữ và ít ảnh hưởng đến hiệu suất.

Bây giờ chúng ta hãy xem xét một số bảng thứ nguyên mà bạn sẽ gặp trong môi trường kho dữ liệu.

Bảng thứ nguyên chung:Thứ nguyên phù hợp

Chúng ta sẽ bắt đầu với một loại cơ bản:thứ nguyên phù hợp. Những thuộc tính này chứa nhiều thuộc tính, có thể được giải quyết trong một số bảng nguồn nhưng tham chiếu đến cùng một miền (khách hàng, hợp đồng, giao dịch, v.v.) Các thứ nguyên phù hợp được sử dụng với nhiều dữ kiện và phải là duy nhất cho giá trị hạt / miền trong kho dữ liệu.

Ví dụ:




Hãy xem bảng thứ nguyên điển hình, DIM_CUSTOMER .

Chúng tôi xác định:

  • id - Khóa chính của bảng thứ nguyên.
  • cust_natural_key - Chìa khóa tự nhiên cho khách hàng.
  • first_name - Tên của khách hàng.
  • last_name - Họ của khách hàng.
  • address_residence - Địa chỉ cư trú của khách hàng.
  • date_of_birth - Ngày sinh của khách hàng.
  • marital_status - Khách hàng đã có gia đình chưa? Được xác định là Y (có) hoặc N (không).
  • gender - Giới tính của khách hàng, M (nam) hoặc F (nữ).

Thuộc tính bảng thứ nguyên phụ thuộc vào nhu cầu kinh doanh. Chúng tôi có thể mở rộng loại bảng này để chứa thông tin về ngành cụ thể (ngày mặc định, hoạt động, v.v.)

Thay đổi từ từ các bảng kích thước

Khi thời gian trôi qua, các thứ nguyên có thể thay đổi giá trị của chúng. Trong các đoạn sau, chúng tôi sẽ xem xét các thứ nguyên được phân loại theo cách chúng lưu trữ (hoặc không lưu trữ) dữ liệu lịch sử.

Giả sử bạn có một thứ nguyên khách hàng. Một số thuộc tính có thể sẽ thay đổi trong thời gian tồn tại của khách hàng - ví dụ:số điện thoại, địa chỉ, tình trạng hôn nhân, v.v. Loại bảng này được Ralph Kimball gọi là thứ nguyên thay đổi chậm hoặc SCD.

SCD có nhiều loại; tám trong số chúng là khá phổ biến. Trong số này, bạn sẽ thấy nhiều nhất từ ​​loại 0 đến 4; loại 5, 6 và 7 là con lai của năm loại đầu tiên. (Lưu ý:Sơ đồ đánh số của các SCD này bắt đầu bằng số 0 thay vì số 1.)

Các SCD kết hợp cung cấp tính linh hoạt hơn và hiệu suất tốt hơn, nhưng với chi phí là sự đơn giản. Chúng tôi sử dụng các loại bảng này khi chúng tôi cần thực hiện phân tích về hiện tại dữ liệu với một số lịch sử cân nhắc.

Loại SCD 0:Làm đầy một lần

Đây là loại cơ bản nhất của bảng thứ nguyên:bạn điền nó một lần và không bao giờ điền vào nó một lần nữa. Hãy coi đây là dữ liệu tham chiếu. Một ví dụ điển hình của điều này là thứ nguyên ngày. Chúng ta không cần phải lấp đầy kích thước này với mọi tải trọng DWH. Bảng chiều không thay đổi theo thời gian. Bạn không thể lấy thêm ngày hoặc thay đổi ngày.

Bảng dữ kiện kết nối với các thuộc tính ban đầu của thứ nguyên.

Ví dụ

Hãy xem thứ nguyên thời gian:




Cấu trúc khá đơn giản:

  1. id - Khóa đại diện
  2. time_date - Ngày thực tế
  3. time_day - Ngày trong tháng
  4. time_week - Tuần trong năm
  5. time_month - Tháng trong năm
  6. time_year - Đại diện bằng số của một năm

Loại SCD 1:Dữ liệu viết lại

Như tên cho thấy, chúng tôi viết lại loại bảng kích thước này với mọi tải trọng DWH. Chúng tôi không cần lưu lại lịch sử của chúng, nhưng chúng tôi hy vọng sẽ có một số thay đổi.

Sự khác biệt giữa SCD Loại 0 và Loại 1 không nằm ở cấu trúc của bảng. Nó liên quan đến việc làm mới dữ liệu. Bạn không bao giờ làm mới dữ liệu ở Loại 0, nhưng đôi khi bạn làm ở Loại 1.

Bảng có thể ghi lại là cách đơn giản nhất để xử lý các thay đổi (xóa / chèn), nhưng nó mang lại ít giá trị kinh doanh. Khi bạn xác định bảng thứ nguyên như thế này, thật khó để cài đặt theo dõi lịch sử.

Bảng dữ kiện kết nối với các thuộc tính hiện tại của thứ nguyên.

Ví dụ

Hãy xem thứ nguyên tài khoản:




Cấu trúc của nó như sau:

  • id - Khóa thay thế của bảng
  • account_name - Tên của tài khoản
  • account_type - Loại tài khoản
  • account_activity - Gắn cờ các loại hoạt động khác nhau

Nếu chúng tôi xem xét dữ liệu trước khi thay đổi, chúng tôi sẽ thấy điều này:

Nếu loại tài khoản đã thay đổi, dữ liệu sẽ chỉ bị ghi đè:

SCD Loại 2:Theo dõi các thuộc tính lịch sử theo hàng

Đây là hình thức theo dõi lịch sử phổ biến nhất trong hệ thống DWH. Bảng SCD Loại 2 thêm các hàng mới cho mọi thay đổi lịch sử của các thuộc tính chiều giữa DWH tải . Trong loại này, chúng tôi xác định khóa chính là khóa thay thế vì khóa nghiệp vụ sẽ có nhiều đại diện theo thời gian. Khi các hàng lưu giữ thay đổi dữ liệu thay đổi, chúng tôi xác định một giá trị mới cho khóa thay thế tương ứng với giá trị trong bảng dữ liệu. Chúng tôi cần thêm ít nhất hai cột, valid_fromvalid_to , để lưu trữ lịch sử theo cách này.

Bảng dữ kiện kết nối với các thuộc tính lịch sử của thứ nguyên thông qua khóa thay thế. Việc tổng hợp được thực hiện trên khóa tự nhiên .

Ví dụ

Hãy xem bảng thứ nguyên khách hàng trước đây, hiện được mở rộng với hai cột ngày:




Hãy xem dữ liệu:

Những điểm cần xem xét:

  • Làm cách nào chúng tôi có thể gắn cờ cho hàng hiện tại, valid_to ? (Thường là 31.12.9999 hoặc NULL .)
  • Làm cách nào chúng tôi có thể gắn cờ cho hàng đầu tiên, valid_from ? (Thường là ngày 01.01.1900 hoặc ngày chèn đầu tiên).
  • Bạn xác định hàng bao gồm hay hàng riêng? (Ở trên, chúng tôi sử dụng valid_from bao gồm và một valid_to độc quyền ).

SCD Loại 3:Theo dõi các thuộc tính lịch sử theo cột

Như với SCD Loại 2, loại này bổ sung một số thứ để đại diện cho các giá trị lịch sử. Tuy nhiên, trong trường hợp này, chúng tôi đang thêm các cột mới. Chúng đại diện cho giá trị của một thuộc tính hàng chiều trước khi nó thay đổi. Thông thường, chúng tôi chỉ giữ phiên bản trước của thuộc tính.

Lưu ý:SCD này hiếm khi được sử dụng.

Bảng dữ kiện kết nối với các thuộc tính hiện tại và trước đó của thứ nguyên.

Ví dụ

Hãy xem xét thứ nguyên khách hàng, lần này với địa chỉ cư trú trước đây:




Trong ví dụ này, chúng tôi đã thêm một cột mới, previous_address_residence , đại diện cho địa chỉ cũ của khách hàng. Nếu chúng ta nhìn vào ví dụ ban đầu của mình, dữ liệu trong bảng này sẽ giống như sau:

Tất cả thông tin lịch sử, ngoại trừ địa chỉ trước đây của khách hàng, đều bị mất.

SCD Loại 4:Thêm một kích thước nhỏ

Loại thứ nguyên này không dựa trên các thay đổi về cấu trúc (Loại 3) hoặc trên giá trị (Loại 2). Đúng hơn, nó dựa trên những thay đổi về thiết kế đối với mô hình. Nếu bảng thứ nguyên của chúng tôi chứa dữ liệu có tính biến động cao - tức là dữ liệu thay đổi thường xuyên - thì kích thước của bảng thứ nguyên sẽ tăng lên đáng kể.

Để giảm thiểu điều này, chúng tôi trích xuất các thuộc tính dễ bay hơi vào một thứ nguyên nhỏ . Sau đó, những thứ nguyên nhỏ này có thể được tổng hợp theo cấp độ phù hợp với doanh nghiệp. Tuy nhiên, tập hợp này không nên bị nhầm lẫn với tổng hợp dữ kiện . Ví dụ sẽ làm rõ điều này.

Bảng dữ kiện kết nối với các thuộc tính lịch sử của thứ nguyên.

Ví dụ

Hãy xem một ví dụ từ kho dữ liệu tài chính đơn giản. Giả sử bạn cần theo dõi mức độ trễ của một số khách hàng nhất định với các khoản thanh toán của họ. Hãy gọi thuộc tính này là ngày quá hạn hoặc DPD. Nếu chúng tôi theo dõi DPD hàng ngày ở thứ nguyên Loại 2, thì kích thước của bảng sẽ sớm vượt quá giới hạn có thể quản lý được. Vì vậy, chúng tôi trích xuất thuộc tính và tìm các khoảng thời gian có liên quan đến doanh nghiệp của DPD - giả sử theo khoảng tăng 30 ngày (0-30 DPD, 30-60 DPD, 60-90 DPD, v.v.)

Chúng tôi có thể lấy các thuộc tính có tính biến động cao khác, chẳng hạn như độ tuổi và xây dựng các giai đoạn phù hợp với doanh nghiệp cho chúng (ví dụ:20-30 tuổi, 30-40 tuổi, v.v.)

Nếu chúng ta xem xét dữ liệu trong thứ nguyên nhỏ của khách hàng, chúng ta sẽ có một cái gì đó như sau:

Các thuộc tính là:

  • id - Thay thế khóa chính
  • DPD_period - Những ngày đã qua kỳ hạn
  • DEM_period - Khoảng thời gian nhân khẩu học

Giản đồ sao đơn giản sẽ giống như sau:




Lưu ý rằng để thực hiện bất kỳ phân tích nào về các thuộc tính từ cả hai bảng, chúng tôi sẽ phải kết nối chúng qua bảng dữ kiện.

SCD Loại 5:Tạo Kích thước Nhỏ với Phần mở rộng Có thể Ghi lại

Đây là cấu trúc bảng thứ nguyên đầu tiên của chúng tôi. Trong SCD Loại 5, chúng tôi thêm phiên bản hiện tại của dữ liệu chiều nhỏ vào bảng chiều. Chúng tôi phải lưu ý rằng chúng tôi sẽ chỉ thêm hiện tại biểu diễn kích thước nhỏ thành kích thước chính.

Chúng tôi lấp đầy tiện ích mở rộng thứ nguyên nhỏ này với mỗi lần tải (SCD "có thể ghi lại" Loại 1).

Mặc dù việc sử dụng tiện ích mở rộng này rất có thể dẫn đến các vấn đề về kích thước, nhưng chúng tôi đã giảm thiểu chúng bằng bảng kích thước nhỏ.

Chúng tôi sử dụng kỹ thuật này khi chúng tôi muốn thực hiện phân tích trực tiếp trên các bảng kích thước.

Ví dụ

Mở rộng ví dụ trước với thứ nguyên nhỏ hiện tại, chúng tôi nhận được:




dim_mini_customer_current bảng chứa các giá trị thuộc tính gần đây nhất tương ứng với dim_customer bàn. Giờ đây, chúng tôi có thể thực hiện phân tích khách hàng cụ thể mà không cần thông qua bảng dữ kiện (rất chậm).

Bảng dữ kiện kết nối với các thuộc tính lịch sử của thứ nguyên.

Loại 6:Thứ nguyên loại 2 (Hàng lịch sử) có thuộc tính có thể ghi lại

Đây là một cấu trúc chiều rất phổ biến. Chúng tôi thêm một thuộc tính lưu trữ một thứ, thường là giá trị cuối cùng đã biết, mà chúng tôi viết lại sau mỗi lần tải. Điều này cho phép chúng tôi nhóm tất cả các sự kiện theo giá trị hiện tại của chúng, trong khi thuộc tính lịch sử hiển thị dữ liệu như khi các sự kiện xảy ra.

Bảng dữ kiện kết nối với các giá trị thứ nguyên tại thời điểm sự kiện với các giá trị thứ nguyên bổ sung hiện tại.

Ví dụ

Hãy mở rộng bảng khách hàng trước với current_address_residence cột.




Bây giờ chúng ta có một thuộc tính mà chúng ta sẽ cập nhật thành giá trị hiện tại, sử dụng khóa tự nhiên (cust_natural_key ).

Loại 7:Kích thước Loại 2 (Hàng lịch sử) với Gương hiện tại

Chúng ta chỉ có thể sử dụng kiểu này nếu có một khóa tự nhiên trong thứ nguyên bảng. Khóa không được thay đổi trong suốt thời gian tồn tại của thực thể.

Ý tưởng rất đơn giản:chúng tôi thêm một biểu diễn hiện tại của bảng chiều vào giản đồ bông tuyết. Sau đó, chúng tôi chèn khóa tự nhiên của thứ nguyên mới vào bảng dữ kiện. (Khóa thay thế của chiều lịch sử vẫn còn.)

Bảng dữ kiện kết nối với giá trị thứ nguyên tại thời điểm sự kiện và với giá trị thứ nguyên hiện tại.

Ví dụ

Hãy xem lược đồ sao tài khoản khách hàng của chúng tôi. Chúng tôi thêm thứ nguyên mới, dim_current_customer , vào bảng thực tế. Bảng này được kết nối với bảng thông tin thông qua một khóa tự nhiên, cust_natural_key .




Cấu trúc này cho phép chúng tôi thực hiện các truy vấn phân tích trên giản đồ hình sao với cả giá trị hiện tại và lịch sử của các thuộc tính khách hàng.

Kích thước tên miền

Thứ nguyên miền là một dạng đơn giản của bảng chiều. Nó chứa thông tin về miền đo lường cơ bản của thuộc tính chiều. Các bảng này lưu trữ các mã và giá trị giải thích khác nhau.

Ví dụ

Một ví dụ đơn giản là bảng đơn vị tiền tệ.




Trong bảng này, chúng tôi lưu trữ thông tin mô tả về các đơn vị tiền tệ khác nhau.

Theo ý kiến ​​cá nhân của tôi, cách sử dụng thứ nguyên miền tốt nhất là trong tài liệu về các giá trị dữ liệu mà chúng tôi tìm thấy trong hệ thống DWH.

Kích thước rác

Hệ thống nguồn giao dịch tạo ra rất nhiều chỉ báo và cờ. Các thuộc tính này có thể được coi là dữ liệu phân loại, nhưng chúng không liên quan đến kinh doanh hoặc không thể giải thích được. Chúng tôi có thể lưu trữ tất cả các chỉ báo và cờ này trong bảng một chiều được gọi là thứ nguyên rác . Thứ nguyên rác là lựa chọn thay thế cho việc sử dụng các thứ nguyên suy biến. Nếu chúng ta không muốn tạo gánh nặng cho bảng dữ kiện có nhiều thứ nguyên suy biến, chúng ta tạo một thứ nguyên rác.

Chúng tôi cần lưu ý rằng chúng tôi không điền vào tất cả các kết hợp có thể có của các chỉ báo và cờ. Chúng tôi chỉ điền vào những cái tồn tại trong hệ thống nguồn.

Ví dụ




Bảng thứ nguyên là bộ xương của thế giới kho dữ liệu:mọi thứ đều được xây dựng xung quanh chúng. Chúng không lớn như bảng dữ kiện, nhưng cấu trúc của chúng có thể phức tạp hơn.

Bạn có thể đặt nhiều loại bảng kích thước lại với nhau, thậm chí ngoài những bảng chúng ta vừa thảo luận. Còn doanh nghiệp và ngành của bạn thì sao? Nếu bạn đã kết hợp các loại bảng thứ nguyên thành một thứ gì đó mới, hãy cho chúng tôi biết về điều đó!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một trường hợp sử dụng cho sp_prepare / sp_prepexec

  2. Đọc cách ly ảnh chụp nhanh đã cam kết

  3. Sử dụng RStudio với Phiên bản Không phải Hệ thống của Trình quản lý Trình điều khiển unixODBC

  4. Ký hiệu IDEF1X

  5. Các giai đoạn tối ưu hóa và các cơ hội bị bỏ lỡ