Testing SCD Loại 1 trong ETL validator

by hanhtm2
222 views

Xin chào mọi người, ở bài viết SCD (Slowly Changing Dimension) là gì? Các loại SCD và ví dụ cụ thể (https://magz.techover.io/2023/07/03/scd-slowly-changing-dimension-la-gi-cac-loai-scd-va-vi-du-cu-the/) chúng ta đã nắm được sơ lược về SCD type 1. Hôm nay chúng ta cùng đi tìm hiểu kỹ hơn về SCD type 1 và các test cases cần thiết trong quá trình kiểm thử nhé!

1. Tìm hiểu về SCD type 1 (Ghi đè – Overwrite)

Ở SCD1 các dữ liệu mới sẽ ghi đè dữ liệu cũ, không theo dõi dữ liệu lịch sử.

Ví dụ:

Original Record – Dữ liệu gốc

Cust_ID Name City
1001 Nguyễn Văn A HCM
1002 Nguyễn Văn B Nam Định

Updated Record – Dữ liệu được thay đổi

Cust_ID Name City
1001 Nguyễn Văn A Hà Nội
1002 Nguyễn Văn B Nam Định

Ưu điểm: Dễ bảo trì.

Nhược điểm: Không kiểm tra được dữ liệu lịch sử.

2. SCD1 validation test cases

image

Kiểm tra SCD Loại 1 khá đơn giản vì chúng ta có thể đạt được kết quả bằng cách so sánh đơn giản giữa dữ liệu nguồn và dữ liệu đích. Ví dụ chúng ta có bẳng nguồn và bảng đích như sau:

Employee table – bảng nguồn với các cột:

Cust_ID
Name
City

EMPLOYEE_DIM SCD Type 1 – bảng đích với các cột dưới đây:

Cust_ID
Name
City
Partition_date

2.1 Test case 1: Chúng ta sẽ đi kiểm tra số lượng cột, tên cột và data type từng cột có đúng với yêu cầu document không?

VD: Cus_ID có type là bigint, thì trên bảng đích data type cũng là bigint.

Target Query: Describe Table_Name; or Desc Table_Name

2.2 Test case 2: Kiểm tra số lượng records.

Source Query: Select count (*) from db.Emlpoyee

Target Query: Select count (*) from db.Employee_Dim

2.3 Test case 3: Kiểm tra logic insert

  1. Insert thêm records mới ở bảng nguồn:

Chúng ta sẽ thêm các records mới tại bảng nguồn, rồi khởi chạy job ETL. Sau khi job chạy thành công thì kiểm tra dữ liệu ở bảng đích có lên đúng và đủ so với bảng nguồn không.

  1. Delete records ở bảng nguồn

Ngược lại với thêm mới, chúng ta sẽ xóa bớt dữ liệu ở bảng nguồn rồi chạy job ETL. Sau khi job chạy thành công thì kiểm tra dữ liệu ở bảng đích và bảng nguồn có mapping với nhau không.

2.4 Test case 4: Kiểm tra logic update

Tại bảng nguồn chúng ta sẽ update các bản ghi trước đó, rồi chạy job ETL. Sau khi job chạy thành công, kiểm tra dữ liệu bảng đích có lên đúng so với bảng nguồn không.

2.5 Test case 5: Kiểm tra dữ liệu có bị duplicate không? – Xác minh tính duy nhất của dữ liệu

Target Query:

Select Cust_ID, Name, City, Partition_date, count(*) from db.Employee_Dim group by Cust_ID, Name, City, Partition_date having count(*) > 1 ;

Select Cust_ID, count(Cust_ID) from db.Employee_Dim group by Cust_ID having count(Cust_ID) > 1;

2.6 Test case 6: Kiểm tra dữ liệu null

Target Query:

Select * from db.Employee_Dim where Cust_ID is not null;

Kết luận

  • SCD1: các dữ liệu mới sẽ ghi đè dữ liệu cũ, không theo dõi dữ liệu lịch sử
  • Kiểm tra số lượng bản ghi bảng đích so với bảng nguồn
  • Sau khi thay đổi dữ liệu bảng nguồn (insert, delete, update) phải thực hiện quy trình ETL để EMPLOYEE_DIM có dữ liệu mới nhất
  • Sửa đổi một vài bản ghi trong bảng nguồn bằng cách cập nhật các giá trị trong các cột chính (key columns) để kiểm tra logic update
  • Xác minh tính duy nhất của dữ liệu
  • Xác minh rằng sự khác biệt là như mong đợi

Trên đây là những chia sẻ của mình về testing SCD type 1 trong ETL testing, mong rằng bài viết này sẽ giúp ích được cho các bạn. Nếu mọi người có thắc mắc hay câu hỏi gì đừng ngần ngại comment và cùng nhau giải đáp nhé!

Hẹn gặp lại mọi người trong bài viết tiếp theo.

2 comments

Anonymous July 23, 2023 - 9:48 AM

Rất hữu ích

Reply
Anonymous July 23, 2023 - 9:54 PM

Hí…

Reply

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

%d bloggers like this: