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

SCD loại 1

Dữ liệu về chiều thay đổi chậm hoặc không thể đoán trước được sẽ được ghi lại trong phân tích Kích thước thay đổi chậm (SCD). Trong môi trường kho dữ liệu, bảng thứ nguyên có khóa chính xác định duy nhất từng bản ghi và các phần thông tin khác được gọi là dữ liệu thứ nguyên.

Tất cả các phương pháp cập nhật cho các loại SCD khác nhau có thể được thực hiện bằng cách sử dụng chương trình SortCL trong IRI CoSort. Trong IRI Voracity có một trình hướng dẫn để hỗ trợ tạo các tập lệnh công việc SCD được sử dụng khi chạy chương trình SortCL. Hầu hết các loại sử dụng một phép nối bên ngoài đầy đủ để khớp các bản ghi từ nguồn dữ liệu ban đầu với các bản ghi trong nguồn cập nhật dựa trên việc cân bằng một khóa từ mỗi loại. Hồ sơ với các trận đấu cần được cập nhật. Bản ghi trong nguồn cập nhật không khớp cần được thêm vào bản chính.

Bài viết này đề cập đến mô hình SCD Loại 1, trong đó thông tin mới từ dữ liệu cập nhật sẽ ghi đè thông tin ban đầu trong nguồn chính. Bản ghi trong nguồn cập nhật không có kết quả phù hợp sẽ được thêm vào bản chính mới. Vì mô hình này liên quan đến việc ghi đè các giá trị cũ bằng các giá trị hiện tại và không lưu giữ lịch sử nên nó không thường được sử dụng.

Quá trình cập nhật được thực hiện bằng cách kết hợp với trường ProductCode. Đối với ví dụ này, dữ liệu hiện tại sẽ là tệp nguồn master1.dat và update.dat được sử dụng để thay đổi giá trị hoặc thêm bản ghi trong nguồn chính hiện tại.

Nguồn master1.dat chứa:

Mã sản phẩm Chi phí Ngày Bắt đầu
C123 125,50 20110228
F112 2365,00 20120101
G101 19,25 20110930
J245 450.50 20110430
S022 98,75 20110515

Trong trường hợp này, tất cả dữ liệu cập nhật sẽ có cùng Ngày bắt đầu. Nguồn update.dat chứa các bản ghi có các giá trị sau:

Mã sản phẩm Chi phí Ngày Bắt đầu
F112 2425,00 20120701
J245 550.50 20120701
M447 101,75 20120701
S022 101,75 20120701

Bảng thứ nguyên mới sẽ có các giá trị này sau khi cập nhật:

Mã sản phẩm Chi phí Ngày Bắt đầu
C123 125,50 20110228
F112 2425,00 20120701
G101 19,25 20110930
J245 550.50 20120701
M447 139,25 20120701
S022 101,75 20120701

Trong IRI Workbench, có một trình hướng dẫn để hỗ trợ việc tạo các tập lệnh để cập nhật các tệp và bảng Thứ nguyên. Trình hướng dẫn này nằm trong menu thả xuống Voracity trên thanh điều hướng. Đầu tiên, bạn chọn loại SCD. Sau đó, cửa sổ nơi bạn chọn các tệp được sử dụng để xử lý bản cập nhật sẽ hiển thị.

Màn hình tiếp theo là để xác định phép nối được thực hiện với nguồn chính và nguồn cập nhật

Dưới đây là kịch bản lệnh sortcl được tạo ra khi xử lý hai tệp master1.dat và update.dat:

/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD1/master1.dat
  /PROCESS=DELIMITED
  /ALIAS=master1
  /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
  /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"')
/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/update.dat
  /PROCESS=DELIMITED
  /ALIAS=update
  /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
  /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"')

/JOIN FULL_OUTER NOT_SORTED master1 NOT_SORTED update WHERE MASTER1.PRODUCTCODE == UPDATE.PRODUCTCODE

/OUTFILE=/master1.dat
# This processes all except the new records
  /PROCESS=DELIMITED
  /FIELD=(MASTER1.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(COST_NEW, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.COST ELSE MASTER1.COST)
  /FIELD=(STARTDATE_NEW, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.STARTDATE ELSE MASTER1.STARTDATE)
  /INCLUDE WHERE MASTER1.PRODUCTCODE NE ""
/OUTFILE=master1.dat
# This processes the new records to be added
  /PROCESS=DELIMITED
  /FIELD=(UPDATE.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(UPDATE.COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
  /FIELD=(UPDATE.STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') I 
  /INCLUDE WHERE MASTER1.PRODUCTCODE EQ ""

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng quan về chức năng CheckDB của DBCC

  2. Giới thiệu về Kích thước Thay đổi Từ từ (SCD)

  3. SAP Lumira và Cầu JDBC-ODBC

  4. Làm thế nào để che giấu các bảng và bảo tồn tính toàn vẹn được tham chiếu

  5. Lập bản đồ Kiểm soát an ninh tại chỗ so với các nhà cung cấp đám mây chính - Phiên bản 4.0