You are on page 1of 118

Machine Translated by Google

PHẦN I

Thiết kế và
Thực hiện một
Kho dữ liệu

CHƯƠNG 1 Thiết kế lôgic kho dữ liệu 3

CHƯƠNG 2 Triển khai Kho dữ liệu 41

www.it-ebooks.info
Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

CHƯƠNG 1

Kho dữ liệu lôgic


Thiết kế

Mục tiêu kỳ thi trong chương này:

■ Thiết kế và triển khai Kho dữ liệu

■ Thiết kế và thực hiện các kích thước.

■ Thiết kế và triển khai các bảng dữ kiện.

khai thác dữ liệu từ cơ sở dữ liệu hỗ trợ ngành nghề kinh doanh


Một QUAN TRỌNG
Các ứng dụng (LOB) thường không phải là một nhiệm vụ dễ dàng. Lược

đồ quan hệ ized thông thường được sử dụng cho ứng dụng LOB có thể bao gồm Bạn đã đọc
trong số hàng nghìn bảng. Quy ước đặt tên thường không được thực thi. Do trang xxxii chưa?
đó, thật khó để khám phá nơi dữ liệu bạn Nó chứa đựng giá trị

cần cho một báo cáo được lưu trữ. Các doanh nghiệp thường có nhiều ứng dụng thông tin liên quan đến

LOB, thường hoạt động dựa trên nhiều cơ sở dữ liệu. Đối với mục đích phân các kỹ năng bạn cần để

vượt qua kỳ thi.


tích, các doanh nghiệp này cần phải

có thể hợp nhất dữ liệu từ nhiều cơ sở dữ liệu. Chất lượng dữ liệu cũng là

một vấn đề phổ biến. Ngoài ra, nhiều ứng dụng LOB

không theo dõi dữ liệu theo thời gian, mặc dù nhiều phân tích phụ thuộc vào dữ liệu lịch sử.

Một giải pháp phổ biến cho những vấn đề này là tạo một kho dữ liệu (DW). DW là một

Chìa khóa
silo dữ liệu tập trung cho một doanh nghiệp có chứa dữ liệu lịch sử, đã hợp nhất và đã được làm sạch.

Các lược đồ DW được đơn giản hóa và do đó phù hợp hơn để tạo báo cáo so với các lược đồ quan hệ được

ized thông thường. Đối với DW, bạn thường sử dụng một loại thiết kế logic đặc biệt được gọi là lược đồ Hình

sao hoặc một biến thể của lược đồ Hình sao được gọi là lược đồ SnowÁake. Bảng trong một ngôi sao hoặc

Lược đồ SnowÁake được chia thành bảng thứ nguyên (thường được gọi là thứ nguyên) và bảng dữ kiện.

Dữ liệu trong DW thường đến từ cơ sở dữ liệu LOB, nhưng nó là một

bản sao của dữ liệu nguồn. Tất nhiên, có một số độ trễ giữa thời điểm khi dữ liệu xuất hiện trong cơ sở

dữ liệu LOB và thời điểm khi nó xuất hiện trong DW. Một phương pháp phổ biến

để giải quyết độ trễ này liên quan đến việc làm mới dữ liệu trong DW như một công việc hàng đêm. Bạn sử dụng

dữ liệu được làm mới chủ yếu cho các báo cáo; do đó, dữ liệu chủ yếu được đọc và hiếm khi được cập nhật.

www.it-ebooks.info
Machine Translated by Google

Các truy vấn thường liên quan đến việc đọc một lượng lớn dữ liệu và yêu cầu quét lớn. Để hỗ trợ các

truy vấn như vậy, bắt buộc phải sử dụng thiết kế vật lý thích hợp cho DW.

Thiết kế logic của DW thoạt nhìn có vẻ đơn giản. Nó thực sự đơn giản hơn nhiều so với một thiết

kế quan hệ chuẩn hóa. Tuy nhiên, mặc dù đơn giản, bạn vẫn có thể gặp một số vấn đề nâng cao. Trong

chương này, bạn sẽ học cách thiết kế một DW và cách giải quyết một số vấn đề thiết kế nâng cao phổ

biến. Bạn sẽ khám phá các lược đồ Star và SnowÁake, di mensions và bảng dữ kiện. Bạn cũng sẽ học cách

theo dõi nguồn và thời gian để dữ liệu đến với DW thông qua kiểm tra — hoặc, theo thuật ngữ DW, thông

tin dòng dõi.

Các bài học trong chương này: ■

Bài học 1: Giới thiệu lược đồ Ngôi sao và Tuyết rơi

■ Bài 2: Thiết kế kích thước ■ Bài 3:

Thiết kế bảng dữ kiện

Trước khi bắt đầu


Để hoàn thành chương này, bạn phải có:

■ Hiểu biết về các lược đồ quan hệ chuẩn hóa. ■ Có kinh

nghiệm làm việc với Microsoft SQL Server 2012 Management Studio. ■ Có kiến thức về

ngôn ngữ Transact-SQL. ■ Đã cài đặt cơ sở dữ liệu mẫu AdventureWorks2012 và

AdventureWorksDW2012.

Bài 1: Giới thiệu StDrDnd SnowÁDNe SchemDs


Trước khi thiết kế kho dữ liệu, bạn cần hiểu một số mẫu thiết kế phổ biến được sử dụng cho DW, cụ thể

là lược đồ Star và SnowÁake. Những lược đồ này đã phát triển vào những năm 1980.

Đặc biệt, lược đồ Star hiện đang được sử dụng rộng rãi đến mức nó đã trở thành một loại tiêu chuẩn

không chính thức cho tất cả các loại ứng dụng thông minh kinh doanh (BI).

4 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Báo cáo sự cố với một giản đồ chuẩn hóa


Bài học này bắt đầu với lược đồ quan hệ chuẩn hóa. Giả sử rằng bạn phải tạo

báo cáo kinh doanh từ một lược đồ quan hệ trong cơ sở dữ liệu mẫu AdventureWorks2012. Các

báo cáo phải bao gồm doanh số bán hàng qua Internet ở các quốc gia khác nhau trong nhiều năm. Nhiệm vụ

(hoặc thậm chí là thách thức) là tìm ra bảng và cột nào bạn sẽ cần

tạo báo cáo. Bạn bắt đầu bằng cách điều tra bảng nào lưu trữ dữ liệu bạn cần, như được hiển thị trong

Hình 1-1, được tạo bằng tiện ích sơ đồ trong SQL Server Management Studio

(SSMS).

HÌNH 1-1 Sơ đồ các bảng bạn cần cho một báo cáo bán hàng đơn giản.

Ngay cả đối với báo cáo tương đối đơn giản này, bạn sẽ có 10 bảng. Bạn cần bán hàng

bảng và bảng chứa thông tin về khách hàng. The AdventureWorks2012

lược đồ cơ sở dữ liệu được chuẩn hóa cao; nó được dự định như một lược đồ ví dụ để hỗ trợ LOB

các ứng dụng. Mặc dù một lược đồ như vậy hoạt động rất tốt cho các ứng dụng LOB, nhưng nó có thể gây ra

các vấn đề khi được sử dụng làm nguồn báo cáo, như bạn sẽ thấy trong phần còn lại của phần này.

Chuẩn hóa là một quá trình trong đó bạn xác định các thực thể theo cách mà một bảng duy nhất

đại diện cho chính xác một thực thể. Mục đích là để có một lược đồ hoàn chỉnh và không dư thừa.

Mỗi phần thông tin phải được lưu trữ chính xác một lần. Bằng cách này, bạn có thể thực thi tính toàn

vẹn của dữ liệu. Bạn có một vị trí cho mọi phần dữ liệu và vì mỗi mục dữ liệu chỉ được lưu trữ một lần

nên bạn không gặp vấn đề về tính nhất quán. Tuy nhiên, sau khi chuẩn hóa thích hợp, bạn thường

chém gió với nhiều bàn. Trong cơ sở dữ liệu hỗ trợ ứng dụng LOB cho một doanh nghiệp, bạn có thể chứa

hàng nghìn bảng!

Bài 1: Giới thiệu lược đồ Star và SnowÁake CHƯƠNG 1 5

www.it-ebooks.info
Machine Translated by Google

Việc tìm kiếm các bảng và cột thích hợp mà bạn cần cho một báo cáo có thể gây khó khăn trong việc

cơ sở dữ liệu chuẩn hóa đơn giản chỉ vì số lượng bảng liên quan. Thêm vào thực tế này

rằng không có gì buộc các nhà phát triển cơ sở dữ liệu phải duy trì các quy ước đặt tên tốt trong cơ sở dữ

liệu LOB. Tương đối dễ dàng sắp xếp các bảng thích hợp trong AdventureWorks2012, bởi vì

bảng và cột có tên có nghĩa. Nhưng hãy tưởng tượng nếu cơ sở dữ liệu chứa các bảng có tên Table1, Table2,

v.v. và các cột có tên Column1, Column2, v.v. Phát hiện

những đối tượng bạn cần cho báo cáo của mình sẽ là một cơn ác mộng. Các công cụ như SQL Pro ler có thể

Cứu giúp. Ví dụ: bạn có thể tạo môi trường thử nghiệm, cố gắng chèn một số dữ liệu thông qua

Ứng dụng LOB và có SQL Pro ler xác định vị trí dữ liệu đã được chèn vào. Một bình thường hóa

lược đồ không phải là rất tường thuật. Bạn không thể dễ dàng phát hiện ra vị trí lưu trữ cho dữ liệu liên quan

đến vấn đề gì đó, chẳng hạn như số tiền bán hàng trong ví dụ này hoặc dữ liệu cung cấp bối cảnh cho các thước

đo này, chẳng hạn như quốc gia và năm.

Ngoài ra, một truy vấn kết hợp 10 bảng, như được yêu cầu trong báo cáo doanh số bán hàng theo năm thử

nghiệm, sẽ không nhanh lắm. Truy vấn cũng sẽ đọc một lượng lớn dữ liệu—

doanh số bán hàng trong nhiều năm — và do đó sẽ ảnh hưởng đến công việc giao dịch thông thường của

chèn và cập nhật dữ liệu.

Một vấn đề khác trong ví dụ này là thực tế là không có bảng tra cứu rõ ràng cho ngày tháng.

Bạn phải trích xuất các năm kể từ ngày hoặc các cột ngày / giờ trong bảng bán hàng, chẳng hạn như Ngày đặt hàng

từ bảng SalesOrderHeader trong ví dụ này. Trích xuất năm từ cột ngày tháng không phải là một vấn đề lớn; tuy

nhiên, câu hỏi đầu tiên là, cơ sở dữ liệu LOB có lưu trữ dữ liệu cho nhiều

năm? Trong nhiều trường hợp, cơ sở dữ liệu LOB bị xóa sau mỗi năm quy mô mới bắt đầu. Ngay cả khi bạn

có tất cả dữ liệu lịch sử cho các giao dịch bán hàng, bạn có thể gặp sự cố khi hiển thị

dữ liệu lịch sử một cách chính xác. Ví dụ: bạn có thể chỉ có địa chỉ khách hàng mới nhất,

điều này có thể ngăn bạn tính toán doanh số bán hàng lịch sử theo quốc gia một cách chính xác.

Cơ sở dữ liệu mẫu AdventureWorks2012 lưu trữ tất cả dữ liệu trong một cơ sở dữ liệu duy nhất. Tuy nhiên, trong

một doanh nghiệp, bạn có thể có nhiều ứng dụng LOB, mỗi ứng dụng có thể lưu trữ dữ liệu trong

cơ sở dữ liệu riêng. Bạn cũng có thể có một phần dữ liệu bán hàng trong một cơ sở dữ liệu này và một phần trong một cơ sở dữ liệu khác.

Và bạn có thể có dữ liệu khách hàng trong cả hai cơ sở dữ liệu mà không cần mã nhận dạng chung. Trong

những trường hợp như vậy, bạn phải đối mặt với các vấn đề về cách hợp nhất tất cả dữ liệu này và cách xác định

khách hàng từ một cơ sở dữ liệu thực sự giống với một khách hàng từ cơ sở dữ liệu khác.

Cuối cùng, chất lượng dữ liệu có thể thấp. Quy tắc cũ, "rác trong rác ra ngoài", áp dụng cho phân tích

cả ses nữa. Các phần của dữ liệu có thể bị thiếu; các phần khác có thể bị sai. Ngay cả với tốt

dữ liệu, bạn vẫn có thể có các biểu diễn khác nhau của cùng một dữ liệu trong các cơ sở dữ liệu khác nhau.

Ví dụ: giới tính trong một cơ sở dữ liệu có thể được biểu thị bằng các chữ cái F và M, và trong

một cơ sở dữ liệu khác với các số 1 và 2.

Các vấn đề được liệt kê trong phần này là dấu hiệu của các vấn đề khiến các nhà thiết kế phải tạo ra các lược

đồ khác nhau cho các ứng dụng BI. Lược đồ Star và SnowÁake đều đơn giản hóa

và tường thuật. Kho dữ liệu nên sử dụng thiết kế Star và / hoặc SnowÁake. Đôi khi bạn cũng sẽ tìm thấy thuật

ngữ mô hình chiều được sử dụng cho lược đồ DW. Một mô hình chiều thực sự bao gồm cả lược đồ Star và SnowÁake.

Chìa khóa
Đây là thời điểm tốt để giới thiệu Ngôi sao và

Đề án SnowÁake.

6 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Lược đồ sao
Thông thường, một bức tranh có giá trị hơn một nghìn lời nói. Hình 1-2 cho thấy một giản đồ Star, một sơ đồ

Chìa khóa
được tạo trong SSMS từ một tập hợp con của các bảng trong mẫu AdventureWorksDW2012

cơ sở dữ liệu.

Trong Hình 1-2, bạn có thể dễ dàng nhận ra cách mà lược đồ Ngôi sao có tên - nó giống

một ngôi sao. Có một bảng trung tâm duy nhất, được gọi là bảng dữ kiện, được bao quanh bởi nhiều bảng

được gọi là kích thước. Lược đồ One Star bao gồm một lĩnh vực kinh doanh. Trong trường hợp này, lược đồ
Chìa khóa

bao gồm doanh số bán hàng qua Internet. Kho dữ liệu doanh nghiệp bao gồm nhiều lĩnh vực kinh doanh và

bao gồm nhiều giản đồ Star (và / hoặc SnowÁake).

HÌNH 1-2 Một ví dụ về giản đồ hình sao.

Bảng dữ kiện được kết nối với tất cả các kích thước bằng các khóa ngoại. Thông thường, tất cả các khóa ngoại

được kết hợp với nhau để xác định duy nhất từng hàng trong bảng dữ kiện và do đó chung tạo thành một

, vì vậy bạn có thể sử dụng tất cả các khóa ngoại làm khóa chính tổng hợp của bảng thông tin. Bạn cũng có thể

thêm một khóa đơn giản hơn. Bảng dữ kiện nằm ở khía cạnh "nhiều" của các mối quan hệ của nó với các điềm báo.

Nếu bạn định hình thành một mệnh đề từ một hàng trong bảng dữ kiện, bạn có thể diễn đạt nó bằng

một câu chẳng hạn như, "Khách hàng A đã mua sản phẩm B vào ngày C với số lượng D với số lượng E."

Mệnh đề này là một sự thật; đây là cách mà bảng dữ kiện có tên.

Bài 1: Giới thiệu lược đồ Star và SnowÁake CHƯƠNG 1 7

www.it-ebooks.info
Machine Translated by Google

Lược đồ Ngôi sao phát triển từ mô hình khái niệm của một khối lập phương. Bạn có thể hình dung tất cả doanh số bán

hàng như một chiếc hộp lớn. Khi bạn tìm kiếm một vấn đề trong dữ liệu bán hàng, bạn sử dụng phép phân chia và chinh phục

kỹ thuật: cắt khối lập phương theo các loại khách hàng, sản phẩm hoặc thời gian khác nhau. Trong khác

từ, bạn cắt khối lập phương theo các kích thước của nó. Do đó, khách hàng, sản phẩm và thời gian

đại diện cho ba chiều trong mô hình khái niệm của khối bán hàng. Bảng thứ nguyên (thứ nguyên) được

đặt tên từ mô hình khái niệm này. Trong mô hình logic của giản đồ Hình sao, bạn có thể biểu diễn nhiều

hơn ba chiều. Do đó, giản đồ Sao biểu thị một siêu khối đa chiều.

Như bạn đã biết, một kho dữ liệu bao gồm nhiều lược đồ Hình sao. Từ một doanh nghiệp

phối cảnh, các lược đồ Sao này được kết nối với nhau. Ví dụ: bạn có cùng một khách hàng

trong bán hàng cũng như trong kế toán. Bạn giao dịch với nhiều sản phẩm giống nhau về doanh số bán hàng, hàng tồn kho và

sản xuất. Tất nhiên, công việc kinh doanh của bạn được thực hiện cùng một lúc trên tất cả các lĩnh vực

kinh doanh khác nhau. Để đại diện cho doanh nghiệp một cách chính xác, bạn phải có thể kết nối nhiều

giản đồ Hình sao trong kho dữ liệu của mình. Kết nối rất đơn giản - bạn sử dụng các kích thước giống nhau

cho mỗi giản đồ Star. Trên thực tế, các thứ nguyên nên được chia sẻ giữa nhiều lược đồ Hình sao.

Thứ nguyên có mối quan hệ khóa ngoại với nhiều bảng dữ kiện. Các thứ nguyên có liên kết với nhiều bảng

dữ kiện được gọi là thứ nguyên được chia sẻ hoặc được tuân thủ. Hình 1-3 cho thấy một

Chìa khóa
thứ nguyên phù hợp từ cơ sở dữ liệu mẫu AdventureWorksDW2012 với hai thứ nguyên khác nhau

bảng dữ kiện chia sẻ cùng một thứ nguyên.

HÌNH 1-3 Sản phẩm là một thứ nguyên được chia sẻ.

8 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Trước đây, đã có một cuộc tranh luận lớn về việc nên sử dụng thứ nguyên chia sẻ hay riêng tư. Kích thước

Pri vate là các kích thước chỉ liên quan đến một giản đồ Sao duy nhất. Tuy nhiên, nó khá

đơn giản để thiết kế các kích thước chia sẻ; bạn không đạt được gì nhiều từ quan điểm thời gian thiết kế

bằng cách sử dụng các thứ nguyên riêng tư. Trên thực tế, với các thứ nguyên riêng tư, bạn sẽ mất kết nối

giữa các bảng dữ kiện khác nhau, vì vậy bạn không thể so sánh dữ liệu trong các bảng dữ liệu khác nhau qua

các kích thước giống nhau. Ví dụ: bạn không thể so sánh dữ liệu bán hàng và kế toán cho

cùng một khách hàng nếu bảng thông tin kế toán và bán hàng không chia sẻ cùng một biểu tượng khách hàng. Do

đó, trừ khi bạn đang tạo một dự án bằng chứng khái niệm (POC) nhỏ bao gồm

chỉ một lĩnh vực kinh doanh duy nhất mà bạn không quan tâm đến các kết nối với các doanh nghiệp khác nhau

các khu vực, bạn nên luôn chọn các thứ nguyên được chia sẻ.

Kho dữ liệu thường là nguồn cho các hệ thống quản lý cơ sở dữ liệu phân tích chuyên dụng, chẳng hạn như

SQL Server Analysis Services (SSAS). SSAS là một hệ thống thực hiện các

phân tích bằng cách đi sâu và được sử dụng cho các phân tích dựa trên mô hình khái niệm

của một khối lập phương. Các hệ thống như SSAS tập trung vào một tác vụ duy nhất và phân tích nhanh, và chúng

được tối ưu hóa cho tác vụ này một cách rõ ràng hơn so với các hệ thống chung như SQL Server. SSAS cho phép

phân tích trong thời gian thực, một quy trình được gọi là xử lý phân tích trực tuyến (OLAP). Tuy nhiên, để có được như vậy

Chìa khóa
hiệu suất, bạn phải trả giá. SSAS nằm ngoài phạm vi của cuốn sách này, nhưng bạn phải biết những hạn chế của

SSAS để chuẩn bị kho dữ liệu theo cách hữu ích cho SSAS.

Một điều cần nhớ là trong cơ sở dữ liệu SSAS, bạn chỉ có thể sử dụng các thứ nguyên được chia sẻ. Đây chỉ là

một lý do nữa tại sao bạn nên thích thứ nguyên được chia sẻ thành riêng tư.

Lịch trình SnowÁake


Hình 1-4 cho thấy một cái nhìn chi tiết hơn về thứ nguyên DimDate từ cơ sở dữ liệu mẫu AdventureWorks DW2012.

Các thuộc tính được đánh dấu cho thấy thứ nguyên không được chuẩn hóa. Nó không phải là thứ ba bình thường

hình thức. Ở dạng thông thường thứ ba, tất cả các cột không phải khóa không nên phụ thuộc vào khóa. Một

một cách khác để nói điều này là không nên có sự phụ thuộc chức năng giữa các khóa không phải là khóa

cột. Bạn chỉ có thể truy xuất giá trị của cột không phải khóa nếu bạn biết

Chìa khóa. Tuy nhiên, trong thứ nguyên DimDate, nếu bạn biết tháng, bạn rõ ràng biết

quý lịch, và nếu bạn biết quý lịch, bạn biết năm dương lịch.

Trong giản đồ Hình sao, các kích thước không được chuẩn hóa. Ngược lại, trong lược đồ chuẩn hóa LOB,

bạn sẽ chia bảng thành nhiều bảng nếu bạn thấy có sự phụ thuộc giữa các phím không phải là khóa

cột. Hình 1-5 cho thấy một ví dụ chuẩn hóa như vậy cho các bảng DimProduct, DimProduct Subcategory và

DimProductCategory từ cơ sở dữ liệu AdventureWorksDW2012.

Bài 1: Giới thiệu lược đồ Star và SnowÁake CHƯƠNG 1 9

www.it-ebooks.info
Machine Translated by Google

HÌNH 1-4 Thứ nguyên không chuẩn hóa DimDate.

HÌNH 1-5 Kích thước chuẩn hóa DimProduct.

Thứ nguyên DimProduct không được chuẩn hóa. Bảng DimProduct không chứa

tên danh mục con, chỉ giá trị ProductSubcategoryKey cho khóa ngoại của

Bảng tra cứu DimProductSubcategory. Tương tự, bảng DimProductSubcategory không chứa tên danh mục;

nó chỉ giữ khóa ngoại ProductCategoryKey từ bảng Dim ProductCategory. Thiết kế này là điển hình

của một lược đồ cơ sở dữ liệu LOB.

Bạn có thể tưởng tượng nhiều thứ nguyên được thiết kế theo cách chuẩn hóa tương tự, với trung tâm

bảng dữ kiện được kết nối bằng khóa ngoại với bảng thứ nguyên, được kết nối với

các phím của bảng tra cứu, được kết nối bằng khóa ngoại với bảng tra cứu cấp hai.

10 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Theo cách hiểu này, một ngôi sao bắt đầu giống một bông tuyết. Do đó, một giản đồ Ngôi sao có kích thước cũng như

kích thước không được chuẩn hóa được gọi là lược đồ SnowÁake.

Chìa khóa Trong hầu hết các dự án dài hạn, bạn nên thiết kế lược đồ Hình sao. Bởi vì giản đồ Ngôi sao là

đơn giản hơn so với giản đồ SnowÁake, nó cũng dễ bảo trì hơn. Các truy vấn trên lược đồ Star đơn giản và nhanh

hơn các truy vấn trên lược đồ SnowÁake, vì chúng liên quan đến ít phép nối hơn. Các

Lược đồ SnowÁake thích hợp hơn cho các dự án POC ngắn, vì nó gần với LOB hơn

lược đồ quan hệ chuẩn hóa và do đó yêu cầu ít công việc hơn để xây dựng.

MẸO THI

Nếu bạn không sử dụng khối OLAP và các báo cáo của bạn truy vấn kho dữ liệu của bạn trực tiếp, thì việc sử dụng

Biểu đồ sao thay vì giản đồ SnowÁake có thể tăng tốc độ báo cáo, vì

truy vấn báo cáo liên quan đến ít liên kết hơn.

Trong một số trường hợp, bạn cũng có thể sử dụng phương pháp kết hợp, sử dụng giản đồ SnowÁake chỉ dành cho

cấp đầu tiên của bảng tra cứu thứ nguyên. Trong kiểu tiếp cận này, không có

các mức độ của bảng tra cứu; bảng tra cứu cấp độ đầu tiên không được chuẩn hóa. Hình 1-6 cho thấy một

lược đồ không chuẩn hóa một phần.

HÌNH 1-6 Các kích thước không chuẩn hóa một phần.

Trong Hình 1-6, kích thước DimCustomer và DimReseller được chuẩn hóa một phần. Các

các thứ nguyên hiện chỉ chứa khóa ngoại AddressKey. Tuy nhiên, DimGeography

bảng không chuẩn hóa. Không có bảng tra cứu bổ sung mặc dù một thành phố nằm trong một vùng

và một vùng nằm trong một quốc gia. Một thiết kế kết hợp như vậy có nghĩa là dữ liệu địa lý chỉ được ghi mười

một lần và chỉ cần được duy trì ở một nơi duy nhất. Thiết kế như vậy là phù hợp

Bài 1: Giới thiệu lược đồ Star và SnowÁake CHƯƠNG 1 11

www.it-ebooks.info
Machine Translated by Google

khi nhiều thứ nguyên có cùng thuộc tính. Trong các trường hợp khác, bạn nên sử dụng lược đồ Sao ghép sim. Xin

nhắc lại: bạn chỉ nên sử dụng lược đồ SnowÁake cho các dự án POC nhanh.

Mức độ chi tiết


Số thứ nguyên được kết nối với một bảng dữ kiện cho biết mức độ chi tiết của

phân tích bạn có thể nhận được. Ví dụ: nếu không có thứ nguyên sản phẩm nào được kết nối với bảng thông tin bán hàng,

bạn không thể nhận được báo cáo ở cấp sản phẩm — bạn có thể nhận được báo cáo về doanh số cho tất cả các sản phẩm

chỉ có. Loại chi tiết này còn được gọi là chiều của giản đồ Hình sao.

Chìa khóa Nhưng có một loại chi tiết khác, cho phép bạn biết mức độ thông tin

một khóa ngoại thứ nguyên thể hiện trong một bảng dữ kiện. Các bảng dữ kiện khác nhau có thể có mức độ chi tiết

khác nhau trong kết nối với cùng một thứ nguyên. Điều này rất điển hình trong các kịch bản lập kế hoạch và lập ngân

sách. Ví dụ, bạn không có kế hoạch rằng khách hàng A sẽ đến vào ngày B đến cửa hàng C

và mua sản phẩm D với số tiền E. Thay vào đó, bạn lên kế hoạch ở cấp độ cao hơn — bạn có thể dự định bán

số lượng E của sản phẩm C trong quý B tại tất cả các cửa hàng trong khu vực đó cho tất cả khách hàng trong khu vực đó.

Hình 1-7 cho thấy một ví dụ về bảng dữ kiện sử dụng mức độ chi tiết cao hơn

bảng dữ kiện được giới thiệu cho đến nay.

Trong cơ sở dữ liệu AdventureWorksDW2012, bảng FactSalesQuota là bảng dữ kiện với

dữ liệu quy hoạch. Tuy nhiên, kế hoạch chỉ được thực hiện cho nhân viên ở cấp độ mỗi quý. Các

kế hoạch dành cho tất cả khách hàng, tất cả sản phẩm, v.v., vì giản đồ Hình sao này chỉ sử dụng thứ nguyên

DimDate và DimEaffee. Ngoài ra, việc lập kế hoạch diễn ra ở cấp độ hàng quý.

Bằng cách điều tra nội dung, bạn có thể thấy rằng tất cả các kế hoạch cho một quý đều bị ràng buộc với

ngày của một phần tư. Bạn sẽ không cần sử dụng DateKey; bạn có thể chỉ có CalendarYear

và các cột CalendarQuarter trong bảng dữ kiện FactSalesQuota. Bạn vẫn có thể thực hiện các phép nối tới DimDate

bằng cách sử dụng hai cột này — cả hai cột này đều có trong bảng DimDate. Tuy nhiên, nếu bạn muốn có khóa ngoại

cho thứ nguyên DimDate, bạn cần DateKey. Khóa ngoại phải đề cập đến các giá trị duy nhất ở phía "một" của mối quan

hệ. Các

Tất nhiên, sự kết hợp của CalendarYear và CalendarQuarter không phải là duy nhất trong DimDate

kích thước; nó lặp lại khoảng 90 lần trong mỗi quý.

12 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

HÌNH 1-7 Một bảng dữ kiện có mức độ chi tiết cao hơn.

Kiểm toán và Dòng dõi


Ngoài các bảng dành cho báo cáo, kho dữ liệu cũng có thể bao gồm các bảng kiểm toán. Đối với mỗi lần cập

nhật, bạn nên kiểm tra xem ai đã thực hiện cập nhật, khi nào nó được thực hiện và có bao nhiêu hàng được

chuyển đến mỗi thứ nguyên và bảng dữ kiện trong DW của bạn. Nếu bạn cũng kiểm tra lượng thời gian cần

thiết cho mỗi lần tải, bạn có thể tính toán hiệu suất và thực hiện hành động nếu nó xấu đi.

Bạn lưu trữ thông tin này trong một bảng hoặc các bảng kiểm toán. Tuy nhiên, bạn nên nhận ra rằng kiểm

toán không giúp ích gì cho bạn trừ khi bạn phân tích thông tin thường xuyên.

Các bảng kiểm toán chứa thông tin cấp lô về tải DW thông thường, nhưng bạn cũng có thể muốn

hoặc cần có thông tin chi tiết hơn. Ví dụ: bạn có thể muốn biết từng hàng trong một thứ nguyên và /

hoặc bảng dữ kiện đến từ đâu và khi nào nó được thêm vào. Trong những trường hợp như vậy, bạn phải thêm

các cột thích hợp vào bảng thứ nguyên và bảng dữ kiện. Thông tin kiểm toán chi tiết như vậy cũng được

gọi là dòng trong thuật ngữ DW. Để thu thập thông tin kiểm toán hoặc dòng truyền, bạn cần sửa đổi quy

Chìa khóa
trình trích xuất-biến đổi-tải (ETL) mà bạn sử dụng cho tải DW một cách thích hợp.

Nếu công cụ ETL của bạn là Dịch vụ Tích hợp Máy chủ SQL (SSIS), thì bạn nên sử dụng ghi nhật ký SSIS.

SSIS có hỗ trợ ghi nhật ký rộng rãi. Ngoài ra, SSIS còn có hỗ trợ về thông tin dòng họ.

Bài 1: Giới thiệu lược đồ Star và SnowÁake CHƯƠNG 1 13

www.it-ebooks.info
Machine Translated by Google

THỰC HÀNH Đánh giá Internet AdventureWorksDW2012


Lược đồ bán hàng

Cơ sở dữ liệu mẫu AdventureWorksDW2012 là một ví dụ điển hình về kho dữ liệu. Nó có tất cả các

yếu tố cần thiết để cho phép bạn xem các ví dụ về các loại mô hình chiều khác nhau.

BÀI TẬP 1 Xem lại lược đồ cơ sở dữ liệu AdventureWorksDW2012

Trong bài tập này, bạn xem lại lược đồ cơ sở dữ liệu.

1. Khởi động SSMS và kết nối với phiên bản SQL Server của bạn. Mở rộng thư mục Cơ sở dữ liệu
và sau đó là cơ sở dữ liệu AdventureWorksDW2012.

2. Nhấp chuột phải vào thư mục Sơ đồ cơ sở dữ liệu và chọn tùy chọn Sơ đồ cơ sở dữ liệu mới.

Nếu không có sơ đồ nào được tạo trong cơ sở dữ liệu này, bạn sẽ thấy một hộp thông báo

cho bạn biết rằng cơ sở dữ liệu không có đối tượng hỗ trợ để lập sơ đồ. Nếu mes sage đó xuất

hiện, hãy nhấp vào Có để tạo các đối tượng hỗ trợ.

3. Từ danh sách Thêm Bảng, hãy chọn các bảng sau (bấm vào từng bảng và sau đó bấm vào

Thêm nút):

■ DimCustomer

■ DimDate

■ DimGeography

■ DimProduct

■ DimProductCategory ■

DimProductSubcategory

■ FactInternetSales

Sơ đồ của bạn sẽ trông tương tự như Hình 1-8.

14 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

HÌNH 1-8 Lược đồ bán hàng qua Internet AdventureWorksDW2012.

4. Phân tích kỹ lưỡng các bảng, cột và các mối quan hệ.

5. Lưu sơ đồ với tên Practice_01_01_InternetSales.

BÀI TẬP 2 Phân tích sơ đồ

Xem lại lược đồ AdventureWorksDW2012 để lưu ý các sự kiện sau:

■ Thứ nguyên DimDate không có bảng tra cứu bổ sung nào được liên kết với nó và
do đó sử dụng lược đồ Star.

■ Bảng DimProduct bị phủ tuyết; nó sử dụng tính năng tra cứu DimProductSubcategory

, sử dụng thêm bảng tra cứu DimProductCategory.

■ Thứ nguyên DimCustomer sử dụng lược đồ kết hợp — cấp đầu tiên của lược đồ SnowÁake chỉ thông qua bảng

tra cứu DimGeography. Bảng DimGeography không chuẩn hóa; nó không có mối quan hệ với bất kỳ bảng

tra cứu nào khác.

■ Không có cột cụ thể nào cho thông tin dòng họ trong bất kỳ bảng nào.

Đóng sơ đồ.

Bài 1: Giới thiệu lược đồ Star và SnowÁake CHƯƠNG 1 15

www.it-ebooks.info
Machine Translated by Google

Tom tăt bai ho c


■ Lược đồ Star là thiết kế phổ biến nhất cho DW. ■ Lược

đồ SnowÁake thích hợp hơn cho các dự án POC. ■ Bạn cũng nên

xác định mức độ chi tiết của các bảng dữ kiện, cũng như kiểm toán và dòng
nhu cầu.

Nhận xét bài học

Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn có thể tìm câu

trả lời cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả lời là đúng hay sai trong phần “Câu

trả lời” ở cuối chương này.

1. Báo cáo từ giản đồ Star đơn giản hơn so với báo cáo từ giản đồ xử lý giao dịch trực tuyến

(OLTP) được chuẩn hóa. Những lý do để muốn báo cáo đơn giản hơn là gì? (Chọn tất cả các áp

dụng.)

A. Một lược đồ Star thường có ít bảng hơn một lược đồ chuẩn hóa. Vì vậy,

các truy vấn đơn giản hơn vì chúng yêu cầu ít liên kết hơn.

B. Lược đồ Star hỗ trợ tốt hơn cho các kiểu dữ liệu số so với một hệ thống chuẩn hóa

lược đồ tional; do đó, nó dễ dàng hơn để tạo ra các tập hợp.

C. Có các biểu thức Transact-SQL cụ thể đối phó với các lược đồ Hình sao.

D. Một lược đồ Star được chuẩn hóa và tường thuật; bạn có thể cung cấp thông tin bạn

cần một báo cáo nhanh chóng.

2. Bạn đang tạo một dự án POC nhanh chóng. Lược đồ nào phù hợp nhất cho loại này

của một dự án?

A. Lược đồ sao

B. Lược đồ chuẩn hóa

C. Lược đồ SnowÁake

D. Lược đồ XML

3. Một lược đồ Star có hai loại bảng. Hai loại đó là gì? (Chọn tất cả

ứng dụng.)

A. Bảng tra cứu

B. Kích thước

C. Biện pháp

D. Bảng dữ kiện

16 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Bài 2: Thiết kế kích thước


Lược đồ Star và SnowÁake là tiêu chuẩn trên thực tế. Tuy nhiên, tiêu chuẩn không kết thúc

với các hình dạng lược đồ. Các cột thứ nguyên và bảng dữ kiện là một phần của tiêu chuẩn không chính thức này như

tốt và được giới thiệu trong bài học này, cùng với các cấu trúc phân cấp tự nhiên, đặc biệt sử dụng ful như các đường

dẫn chi tiết tự nhiên để phân tích. Cuối cùng, bài học thảo luận về một vấn đề chung

với việc xử lý thay đổi kích thước theo thời gian.

Các loại cột thứ nguyên


Thứ nguyên cung cấp bối cảnh cho các thước đo. Phân tích điển hình bao gồm bảng tổng hợp và đồ thị tổng hợp.

Các trục này trên một hoặc nhiều cột thứ nguyên được sử dụng để phân tích — các cột này được gọi là

các thuộc tính trong thuật ngữ DW và OLAP. Quy ước đặt tên trong thuật ngữ DW / OLAP

Chìa khóa
hơi kỳ quặc; trong mô hình quan hệ, mỗi cột đại diện cho một thuộc tính của một thực thể. Đừng lo lắng quá nhiều

về tính chính xác của việc đặt tên trong thuật ngữ DW / OLAP. Điều quan trọng

ở đây là để bạn hiểu từ “thuộc tính” có nghĩa là gì trong ngữ cảnh DW / OLAP.

Việc xoay vòng sẽ không có ý nghĩa gì nếu các giá trị của một thuộc tính là liên tục hoặc nếu một thuộc tính

có quá nhiều giá trị riêng biệt. Hãy tưởng tượng một bảng tổng hợp sẽ trông như thế nào nếu nó có 1.000 cột hoặc

biểu đồ trục sẽ có 1.000 thanh. Đối với các thuộc tính xoay vòng, rời rạc với một số lượng nhỏ

của các giá trị khác biệt là thích hợp nhất. Một biểu đồ thanh với hơn 10 thanh trở nên khó tin

để lĩnh hội. Các cột liên tục hoặc các cột có giá trị duy nhất, chẳng hạn như khóa, không

thích hợp cho các phân tích.

Nếu bạn có một cột liên tục và bạn muốn sử dụng nó trong phân tích như một cột

, bạn nên tùy chỉnh nó. Tiết chế có nghĩa là nhóm hoặc phân loại các giá trị thành một vài

Chìa khóa
nhóm rời rạc. Nếu bạn đang sử dụng khối OLAP, SSAS có thể giúp bạn. SSAS có thể loại bỏ các thuộc tính liên tục.

Tuy nhiên, tùy chỉnh tự động thường kém hơn tùy ý từ một

quan điểm kinh doanh. Tuổi và thu nhập là những thuộc tính điển hình cần được chú ý

quan điểm kinh doanh. Một năm tạo ra sự khác biệt lớn khi bạn 15 tuổi, và nhiều

ít hơn khi bạn 55 tuổi. Khi bạn tùy chỉnh độ tuổi, bạn nên sử dụng phạm vi hẹp hơn cho

những người trẻ hơn và phạm vi rộng hơn cho những người lớn tuổi.

Bài 2: Thiết kế các kích thước CHƯƠNG 1 17

www.it-ebooks.info
Machine Translated by Google

Các cột có giá trị duy nhất xác định các hàng. Các cột này là các khóa. Trong kho dữ liệu,

Chìa khóa
bạn cần các khóa giống như bạn cần chúng trong cơ sở dữ liệu LOB. Các phím xác định duy nhất các thực thể.

Do đó, khóa là loại cột thứ hai trong một thứ nguyên.

Sau khi bạn xác định một khách hàng, bạn không giới thiệu khách hàng đó với giá trị quan trọng. Đang có

chỉ các phím trong báo cáo không làm cho báo cáo dễ đọc. Mọi người đề cập đến các thực thể bằng cách sử dụng

tên của họ. Trong thứ nguyên DW, bạn cũng cần một hoặc nhiều cột mà bạn sử dụng để đặt tên

một thực thể.

Một khách hàng thường có địa chỉ, số điện thoại và địa chỉ email. Bạn không phân tích dữ liệu trên các

cột này. Bạn không cần chúng để xoay vòng. Tuy nhiên, bạn thường cần

thông tin chẳng hạn như địa chỉ của khách hàng trên báo cáo. Nếu dữ liệu đó không có trong DW,

bạn sẽ cần lấy nó từ cơ sở dữ liệu LOB, có thể là với một truy vấn phân tán. Nó rất nhiều

đơn giản hơn để lưu trữ dữ liệu này trong kho dữ liệu của bạn. Ngoài ra, các truy vấn sử dụng dữ liệu này

trên mỗi biểu mẫu tốt hơn, vì các truy vấn không phải bao gồm dữ liệu từ cơ sở dữ liệu LOB. Các cột chỉ được

sử dụng trong báo cáo dưới dạng nhãn, không dùng để xoay vòng, được gọi là thuộc tính thành viên.

Chìa khóa Bạn có thể đặt tên và các cột thuộc tính thành viên bằng nhiều ngôn ngữ trong dimen của mình

bảng sion, cung cấp bản dịch cho từng ngôn ngữ bạn cần hỗ trợ. SSAS có thể sử dụng bản dịch của bạn một cách

tự động. Đối với các báo cáo từ kho dữ liệu, bạn cần phải

chọn các cột có bản dịch ngôn ngữ thích hợp.

Ngoài các loại cột thứ nguyên đã có để xác định, đặt tên,

xoay vòng và gắn nhãn trên báo cáo, bạn có thể có các cột cho thông tin dòng dõi, như bạn đã thấy

trong bài học trước. Có một sự khác biệt quan trọng giữa dòng dõi và các cột khác:

cột dòng dõi không bao giờ được hiển thị cho người dùng cuối và không bao giờ được hiển thị trên báo cáo của người dùng cuối.

Tóm lại, một thứ nguyên có thể chứa các loại cột sau:

■ Các phím được sử dụng để xác định các thực thể

■ Cột tên Được sử dụng cho tên người của các thực thể

■ Các thuộc tính được sử dụng để xoay vòng trong phân tích

■ Thuộc tính thành viên Được sử dụng cho các nhãn trong báo cáo

■ Cột dòng dõi Được sử dụng để kiểm tra và không bao giờ hiển thị cho người dùng cuối

18 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Cấu trúc phân cấp

Hình 1-9 cho thấy thứ nguyên DimCustomer của cơ sở dữ liệu mẫu AdventureWorksDW2012.

HÌNH 1-9 Kích thước DimCustomer.

Trong gure, các cột sau là thuộc tính (cột được sử dụng để xoay vòng):

■ Ngày sinh (sau khi tính tuổi và tùy ý độ tuổi)

■ MaritalStatus

■ Giới tính

■ YearlyIncome (sau khi tùy ý)

■ TotalChildren

■ SốTrẻ emTrang chủ

■ Tiếng Anh Giáo dục (các cột giáo dục khác dành cho bản dịch) ■

Tiếng AnhOccupation (các cột nghề nghiệp khác dành cho bản dịch)

■ HouseOwnerFlag

■ NumberCarsOwned

■ Khoảng cách đi làm

Bài 2: Thiết kế các kích thước CHƯƠNG 1 19

www.it-ebooks.info
Machine Translated by Google

Tất cả các thuộc tính này là không liên quan. Ví dụ: xoay vòng trên MaritalStatus không liên quan đến

xoay vòng trên YearlyIncome. Không có cột nào trong số các cột này có bất kỳ phụ thuộc hàm nào giữa

chúng và không có đường dẫn chi tiết tự nhiên thông qua các thuộc tính này. Bây giờ nhìn vào các cột Dim

Date, như trong Hình 1-10.

HÌNH 1-10 Thứ nguyên DimDate.

Một số thuộc tính của thứ nguyên DimDate bao gồm những điều sau đây (không theo thứ tự được hiển thị

trong gure):

■ FullDateAlternateKey (biểu thị một ngày ở định dạng ngày tháng)

■ EnglishMonthName

■ CalendarQuarter

■ CalendarSemester

■ Lịch năm

Bạn sẽ ngay lập tức nhận thấy rằng các thuộc tính này được kết nối với nhau. Có một mặt dây chuyền chức

năng trong số chúng, vì vậy chúng phá vỡ hình thức bình thường thứ ba. Chúng tạo thành một hệ thống phân cấp.

Cấu trúc phân cấp đặc biệt hữu ích cho phân tích xoay vòng và OLAP — chúng cung cấp thông tin chi tiết tự nhiên

đường dẫn. Bạn thực hiện phân tích chia để trị thông qua hệ thống phân cấp.

Cấu trúc phân cấp có các cấp độ. Khi đi sâu xuống, bạn chuyển từ cấp độ cha mẹ sang cấp độ con.

Ví dụ: một đường dẫn chi tiết lịch trong thứ nguyên DimDate đi qua các cấp sau: CalendarYear

CalendarSemester CalendarQuarter EnglishMonthName

FullDateAlternateKey.

Ở mỗi cấp độ, bạn có các thành viên. Ví dụ, các thành viên của cấp độ tháng, tất nhiên là tháng

Giêng, tháng Hai, tháng Ba, tháng Tư, tháng Năm, tháng Sáu, tháng Bảy, tháng Tám, tháng Chín, tháng Mười,

bến Novem và tháng mười hai. Trong thuật ngữ DW và OLAP, các hàng ở cấp độ lá — thứ nguyên thực tế

20 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

hàng — được gọi là thành viên. Đây là lý do tại sao các cột thứ nguyên được sử dụng trong báo cáo cho nhãn được gọi là

tài sản thành viên.

Trong lược đồ SnowÁake, các bảng tra cứu hiển thị cho bạn các mức phân cấp. Trong giản đồ Ngôi sao, bạn
Chìa khóa

cần trích xuất phân cấp tự nhiên từ tên và nội dung của các cột. Tuy nhiên,

bởi vì việc đi sâu thông qua các cấu trúc phân cấp tự nhiên rất hữu ích và được người dùng cuối hoan nghênh,

bạn nên sử dụng chúng càng nhiều càng tốt.

Cũng lưu ý rằng tên thuộc tính được sử dụng cho các nhãn của nhóm hàng và cột trong một trục

bàn. Do đó, một quy ước đặt tên tốt là rất quan trọng đối với một kho dữ liệu. Bạn nên sử dụng các tên có ý

nghĩa và mang tính mô tả cho các thứ nguyên và thuộc tính.

Kích thước thay đổi chậm


Có một vấn đề phổ biến với các thứ nguyên trong kho dữ liệu: dữ liệu trong biểu đồ thay đổi theo thời gian. Đây

thường không phải là vấn đề trong ứng dụng OLTP; khi một mảnh

thay đổi dữ liệu, bạn chỉ cần cập nhật nó. Tuy nhiên, trong DW, bạn phải duy trì lịch sử. Câu hỏi đặt ra là làm

thế nào để duy trì nó. Bạn có muốn chỉ cập nhật dữ liệu đã thay đổi, như trong

một ứng dụng OLTP và giả vờ rằng giá trị luôn là giá trị cuối cùng hoặc bạn có muốn

duy trì cả giá trị đầu tiên và giá trị trung gian? Vấn đề này được gọi trong biệt ngữ DW là

Vấn đề về kích thước thay đổi chậm (SCD).

Chìa khóa Vấn đề được giải thích tốt nhất trong một ví dụ. Bảng 1-1 hiển thị dữ liệu OLTP nguồn ban đầu

cho một khách hàng.

BẢNG 1-1 Dữ liệu OLTP gốc cho một khách hàng

CustomerId Họ và tên Thành phố Nghề nghiệp

17 Bostjan Strazar vienna Chuyên nghiệp

Khách hàng sống ở Vienna, Áo và là một chuyên gia. Bây giờ hãy tưởng tượng rằng khách hàng

chuyển đến Ljubljana, Slovenia. Trong cơ sở dữ liệu OLTP, bạn chỉ cần cập nhật cột Thành phố, dẫn đến các giá

trị được hiển thị trong Bảng 1-2.

BẢNG 1-2 Dữ liệu OLTP cho một khách hàng sau khi thành phố thay đổi

CustomerId Họ và tên Thành phố Nghề nghiệp

17 Bostjan Strazar Ljubljana Chuyên nghiệp

Nếu bạn tạo báo cáo, tất cả doanh số bán hàng lịch sử cho khách hàng này hiện được quy cho

thành phố Ljubljana, và (ở cấp độ cao hơn) tới Slovenia. Thực tế là khách hàng này đã đóng góp vào doanh số bán hàng

ở Vienna và Áo trong quá khứ đã biến mất.

Trong DW, bạn có thể có cùng một dữ liệu như trong cơ sở dữ liệu OLTP. Bạn có thể sử dụng cùng một khóa,

chẳng hạn như chìa khóa kinh doanh, cho thứ nguyên Khách hàng của bạn. Bạn có thể cập nhật cột Thành phố khi

bạn nhận được thông báo thay đổi từ hệ thống OLTP và do đó ghi đè lịch sử.

Bài 2: Thiết kế các kích thước CHƯƠNG 1 21

www.it-ebooks.info
Machine Translated by Google

Loại quản lý thay đổi này được gọi là Loại 1 SCD. Tóm lại, Loại 1 có nghĩa là ghi quá lịch sử cho một

Chìa khóa
thuộc tính và cho tất cả các cấp phân cấp cao hơn mà thuộc tính đó thuộc về.

Nhưng bạn có thể muốn duy trì lịch sử, để nắm bắt thực tế rằng khách hàng đã đóng góp vào doanh số bán

hàng ở một thành phố và quốc gia hoặc khu vực khác. Trong trường hợp đó, bạn không thể chỉ ghi đè

dữ liệu; thay vào đó bạn phải chèn một hàng mới chứa dữ liệu mới. Tất nhiên, các giá trị khác

các cột không thay đổi vẫn giữ nguyên. Tuy nhiên, điều đó lại tạo ra một vấn đề mới. nếu bạn

chỉ cần thêm một hàng mới cho khách hàng có cùng giá trị khóa, khóa sẽ không còn nữa

độc nhất. Trên thực tế, nếu bạn cố gắng sử dụng khóa chính hoặc ràng buộc duy nhất làm khóa, thì ràng buộc

sẽ từ chối việc chèn như vậy. Do đó, bạn phải làm điều gì đó với chìa khóa. Bạn không nên

sửa đổi khóa nghiệp vụ, vì bạn cần kết nối với hệ thống nguồn. Giải pháp

là giới thiệu một khóa mới, một khóa kho dữ liệu. Trong thuật ngữ DW, loại khóa này được gọi là

Chìa khóa
phím thay thế.

Việc lưu giữ lịch sử trong khi thêm các hàng mới được gọi là Loại 2 SCD. Khi bạn áp dụng SCD Loại

2, vì lợi ích của việc truy vấn đơn giản hơn, bạn cũng thường thêm aÁag để biểu thị

hàng nào hiện tại cho thành viên thứ nguyên. Ngoài ra, bạn có thể thêm hai cột

hiển thị khoảng thời gian hiệu lực của một giá trị. Kiểu dữ liệu của hai cột phải là Ngày,

và các cột phải hiển thị các giá trị Hợp lệ Từ và Hợp lệ Đến. Đối với giá trị hiện tại,

Cột Hợp lệ Đối với phải là NULL. Bảng 1-3 cho thấy một ví dụ về phiên bản thẻ của Loại 2

Xử lý SCD.

BẢNG 1-3 Thay đổi SCD Loại 2

DWCId CustomerId Họ và tên Thành phố Nghề nghiệp Hiện hành

17 17 Bostjan Strazar vienna Chuyên nghiệp 0

289 17 Bostjan Strazar Ljubljana Chuyên nghiệp 1

Bạn có thể có hỗn hợp các thay đổi Loại 1 và Loại 2 trong một thứ nguyên. Đối với đề thi, trong Bảng

1-3, bạn có thể muốn duy trì lịch sử cho cột Thành phố nhưng ghi đè

lịch sử cho cột Nghề nghiệp. Điều đó đặt ra một vấn đề khác. Khi bạn muốn cập nhật

cột Nghề nghiệp, bạn có thể kết luận rằng có hai (và có thể nhiều hơn) hàng cho cùng một

khách hàng. Câu hỏi đặt ra là bạn chỉ muốn cập nhật hàng cuối cùng hay tất cả các hàng? Bảng 1-4

hiển thị phiên bản chỉ cập nhật hàng cuối cùng (hiện tại), trong khi Bảng 1-5 hiển thị tất cả

hàng đang được cập nhật.

BẢNG 1-4 Hỗn hợp SCD Loại 1 và Loại 2, Chỉ cập nhật hàng hiện tại

DWCId CustomerId Họ và tên Thành phố Nghề nghiệp Hiện hành

17 17 Bostjan Strazar vienna Chuyên nghiệp 0

289 17 Bostjan Strazar Quản lý Ljubljana 1

22 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

BẢNG 1-5 Hỗn hợp SCD Loại 1 và Loại 2, Cập nhật Tất cả các Hàng

DWCId CustomerId Họ và tên Thành phố Nghề nghiệp Hiện hành

17 17 Bostjan Strazar vienna Quản lý 0

289 17 Bostjan Strazar Quản lý Ljubljana 1

Mặc dù xử lý Loại 1 và Loại 2 là phổ biến nhất, nhưng các giải pháp khác vẫn tồn tại. Đặc biệt

nổi tiếng là SCD Loại 3, trong đó bạn quản lý một lượng lịch sử hạn chế thông qua các cột lịch sử theo từng

Chìa khóa
vị trí khác nhau. Bảng 1-6 cho thấy cách xử lý Loại 3 cho cột Thành phố.

BẢNG 1-6 SCD Loại 3

CustomerId Họ và tên Thành phố hiện tại Thành phố trước Nghề nghiệp

17 Bostjan Strazar Ljubljana vienna Chuyên nghiệp

Bạn có thể thấy rằng bằng cách chỉ sử dụng một cột lịch sử duy nhất, bạn chỉ có thể duy trì một giá trị

hình chữ nhật của anh ấy trên mỗi cột. Vì vậy SCD Loại 3 có khả năng sử dụng hạn chế và ít phổ biến hơn so với

Loại 1 và 2.

Bạn nên thực hiện giải pháp nào? Bạn nên thảo luận điều này với người dùng cuối và chủ đề

các chuyên gia vấn đề (DNVVN). Họ nên quyết định những thuộc tính nào để duy trì lịch sử và

để ghi đè lịch sử. Sau đó, bạn nên chọn một giải pháp sử dụng Loại 2,

Loại 1, hoặc hỗn hợp của Loại 1 và 2, nếu thích hợp.

Tuy nhiên, có một lưu ý quan trọng. Để duy trì lịch sử khách hàng một cách chính xác, bạn

phải có một số thuộc tính nhận dạng duy nhất khách hàng đó trong suốt

lịch sử và thuộc tính đó không được thay đổi. Thuộc tính như vậy phải là thuộc tính gốc —

chìa khóa kinh doanh. Trong cơ sở dữ liệu OLTP, khóa nghiệp vụ không được thay đổi.

Khóa nghiệp vụ cũng không được thay đổi nếu bạn đang hợp nhất dữ liệu từ nhiều nguồn. Vì

dữ liệu đã hợp nhất, bạn thường phải triển khai một khóa thay thế mới, vì khóa nghiệp vụ

từ các nguồn khác nhau có thể có cùng giá trị cho các thực thể khác nhau. Tuy nhiên, chìa khóa kinh doanh

không nên thay đổi; nếu không, bạn sẽ mất kết nối với hệ thống OLTP. Sử dụng khóa cổng trong kho dữ liệu cho

ít nhất các kích thước phổ biến nhất (những kích thước đại diện

khách hàng, sản phẩm và dữ liệu quan trọng tương tự), được coi là phương pháp hay nhất. Không thay đổi

Khóa OLTP cũng là một phương pháp hay nhất.

MẸO THI

Đảm bảo bạn hiểu lý do tại sao bạn cần khóa thay thế trong kho dữ liệu.

Bài 2: Thiết kế các kích thước CHƯƠNG 1 23

www.it-ebooks.info
Machine Translated by Google

THỰC HÀNH Đánh giá các Thứ nguyên AdventureWorksDW2012

Cơ sở dữ liệu mẫu AdventureWorksDW2012 có nhiều thứ nguyên. Trong phần thực hành này, bạn sẽ khám phá

một số trong số chúng.

TẬP 1 Khám phá các thứ nguyên của AdventureWorksDW2012

Trong bài tập này, bạn tạo một sơ đồ cho các kích thước.

1. Nếu bạn đã đóng SSMS, hãy khởi động nó và kết nối với phiên bản SQL Server của bạn. Mở rộng dữ liệu-
thư mục cơ sở và sau đó là cơ sở dữ liệu AdventureWorksDW2012.

2. Bấm chuột phải vào thư mục Sơ đồ cơ sở dữ liệu, rồi chọn Sơ đồ cơ sở dữ liệu mới

quyền mua.

3. Từ danh sách Thêm Bảng, hãy chọn các bảng sau (bấm vào từng bảng và sau đó bấm vào

Thêm nút):

■ DimProduct

■ DimProductCategory ■

DimProductSubcategory

Sơ đồ của bạn sẽ giống như Hình 1-11.

4. Cố gắng tìm ra cột nào được sử dụng cho các mục đích sau:

■ Chìa khóa

■ Tên

■ Bản dịch

■ Thuộc tính

■ Thuộc tính thành viên

■ Dòng dõi

■ Hệ thống phân cấp tự nhiên

5. Cố gắng kiểm tra xem các bảng trong sơ đồ có được chuẩn bị cho SCD Loại 2 hay không

biến đổi.

6. Thêm bảng DimSalesReason vào sơ đồ.

7. Cố gắng tìm hiểu xem có một số thứ bậc tự nhiên giữa các thuộc tính của thứ nguyên

DimSalesReason hay không. Sơ đồ của bạn sẽ giống như Hình 1-12.

8. Lưu sơ đồ với tên Practice_01_02_Dimensions.

24 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

HÌNH 1-11 DimSản phẩm và các bảng liên quan.

HÌNH 1-12 Thêm DimSalesReason.

Bài 2: Thiết kế các kích thước CHƯƠNG 1 25

www.it-ebooks.info
Machine Translated by Google

BÀI TẬP 2 Phân tích thêm sơ đồ

Trong bài tập này, hãy xem lại lược đồ cơ sở dữ liệu từ bài tập trước để tìm hiểu thêm:

■ Thứ nguyên DimProduct có phân cấp tự nhiên: ProductCategory

ProductSubcategory Sản phẩm.

■ Thứ nguyên DimProduct có nhiều thuộc tính bổ sung hữu ích cho việc xoay vòng nhưng đó không phải là

một phần của bất kỳ hệ thống phân cấp tự nhiên nào. Ví dụ, Màu sắc và Kích thước
thuộc tính.

■ Một số cột trong thứ nguyên DimProduct, chẳng hạn như Ảnh lớn và Mô tả

các cột, là thuộc tính thành viên.

■ DimSalesReason sử dụng lược đồ Hình sao. Trong giản đồ Ngôi sao, việc phát hiện ra tự nhiên sẽ khó hơn

hệ thống phân cấp. Mặc dù bạn có thể chỉ cần theo dõi các bảng tra cứu trong lược đồ SnowÁake

và cấp thứ n của phân cấp, bạn phải nhận ra phân cấp từ tên thuộc tính

trong giản đồ Sao. Nếu bạn không thể trích xuất cấu trúc phân cấp từ tên cột, bạn cũng có thể kiểm

tra dữ liệu. Trong thứ nguyên DimSalesReason, có vẻ như có một quy trình tự nhiên: SalesReasonType

SalesReasonName.

Đóng sơ đồ.

Tom tăt bai ho c


■ Trong một thứ nguyên, bạn có các loại cột sau: khóa, tên, thuộc tính, thành viên

thuộc tính, bản dịch và dòng dõi.

■ Một số thuộc tính tạo thành cấu trúc phân cấp tự nhiên.

■ Có các giải pháp tiêu chuẩn cho vấn đề Kích thước Thay đổi Chậm (SCD).

Nhận xét bài học


Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn

có thể tìm ra câu trả lời cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả lời là đúng

hoặc không chính xác trong phần "Câu trả lời" ở cuối chương này.

1. Bạn triển khai giải pháp Loại 2 cho vấn đề SCD cho một cột c cụ thể. Làm gì
bạn thực sự làm gì khi bạn nhận được một giá trị đã thay đổi cho cột từ hệ thống nguồn?

A. Thêm một cột cho giá trị trước đó vào bảng. Di chuyển giá trị hiện tại của
đã cập nhật cột thành cột mới. Cập nhật giá trị hiện tại với giá trị mới

từ hệ thống nguồn.

26 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

B. Chèn một hàng mới cho thành viên cùng thứ nguyên với giá trị mới cho

cột được cập nhật. Sử dụng khóa thay thế, vì khóa nghiệp vụ hiện đã được sao chép.

Thêm aÁag biểu thị hàng nào hiện có cho một thành viên.

C. Không làm gì cả, bởi vì trong DW, bạn duy trì lịch sử, bạn không cập nhật dimen
dữ liệu sion.

D. Cập nhật giá trị của cột giống như được cập nhật trong hệ thống nguồn.

2. Loại cột nào không phải là một phần của kích thước?

A. Thuộc tính

B. Đo lường

C. Chìa khóa

D. Tài sản thành viên

E. Tên

3. Làm thế nào bạn có thể phát hiện các cấu trúc phân cấp tự nhiên trong lược đồ SnowÁake?

A. Bạn cần phân tích nội dung của các thuộc tính của mỗi chiều.

B. Các bảng tra cứu cho mỗi thứ nguyên cung cấp các cấu trúc phân cấp tự nhiên.

C. Lược đồ SnowÁake không hỗ trợ cấu trúc phân cấp.

D. Bạn nên chuyển đổi giản đồ SnowÁake thành giản đồ Star, và sau đó bạn sẽ
phát hiện ra các thứ bậc tự nhiên ngay lập tức.

Bài 3: Thiết kế bảng dữ kiện

Bảng dữ kiện, giống như kích thước, có các loại cột cụ thể giới hạn các hành động có thể được thực hiện

với chúng. Truy vấn từ dữ liệu tổng hợp DW; tùy thuộc vào loại cột cụ thể, có một số hạn chế về hàm tổng

hợp mà bạn có thể sử dụng. Mối quan hệ nhiều-nhiều trong DW có thể được triển khai khác với trong lược đồ

quan hệ chuẩn hóa.

Bài 3: Thiết kế bảng dữ kiện CHƯƠNG 1 27

www.it-ebooks.info
Machine Translated by Google

Các loại cột của bảng dữ kiện


Bảng dữ kiện là tập hợp các phép đo liên quan đến một quy trình nghiệp vụ cụ thể. Bạn

lưu trữ các phép đo trong cột. Về mặt logic, loại cột này được gọi là thước đo. Các thước đo là

Chìa khóa
bản chất của một bảng dữ kiện. Chúng thường ở dạng số và có thể được tổng hợp lại. Chúng lưu trữ

các giá trị mà doanh nghiệp quan tâm, chẳng hạn như số tiền bán hàng, số lượng đặt hàng và chiết khấu
số lượng.

Từ Bài 1 trong chương này, bạn đã thấy rằng bảng dữ kiện bao gồm các khóa ngoại từ mọi thứ

nguyên. Các khóa ngoại này là loại cột thứ hai trong bảng dữ kiện. Bảng dữ kiện nằm ở phía "nhiều"

của các mối quan hệ với các thứ nguyên. Tất cả các khóa ngoại thường cùng nhau

xác định duy nhất từng hàng và có thể được sử dụng làm khóa chính tổng hợp.

Bạn thường bao gồm một khóa thay thế bổ sung. Khóa này ngắn hơn và chỉ bao gồm một hoặc hai

cột. Khóa đại diện thường là khóa nghiệp vụ từ bảng đã được sử dụng

làm nguồn chính cho bảng dữ kiện. Ví dụ: giả sử bạn bắt đầu xây dựng dữ kiện bán hàng

bảng từ bảng chi tiết đơn hàng trong hệ thống nguồn, sau đó thêm các khóa ngoại liên quan đến

đơn hàng nói chung từ bảng Tiêu đề đơn hàng trong hệ thống nguồn. Bảng 1-7, 1-8 và

1-9 minh họa một ví dụ về quy trình thiết kế như vậy.

Bảng 1-7 cho thấy một ví dụ đơn giản về bảng nguồn Tiêu đề đơn hàng. OrderId

cột là khóa chính cho bảng này. Cột CustomerId là một khóa ngoại từ bảng Khách hàng. Cột

OrderDate không phải là một khóa ngoại trong bảng nguồn; tuy nhiên, nó

trở thành một khóa ngoại trong bảng dữ liệu DW, cho mối quan hệ với biểu tượng ngày tháng rõ ràng.

Tuy nhiên, lưu ý rằng các khóa ngoại trong bảng dữ kiện có thể — và thường được — thay thế bằng DW

các phím đại diện của kích thước DW.

BẢNG 1-7 Bảng tiêu đề đơn đặt hàng nguồn

OrderId CustomerId Ngày đặt hàng

12541 17 2012/02/21

Bảng 1-8 hiển thị bảng Chi tiết Đơn hàng nguồn. Khóa chính của bảng này là khóa tổng hợp và bao
gồm các cột OrderId và LineItemId. Ngoài ra, Chi tiết Đơn hàng Nguồn

bảng có cột khóa ngoại ProductId. Cột Số lượng là thước đo.

BẢNG 1-8 Bảng Chi tiết Đơn hàng Nguồn

OrderId LineItemId ID sản phẩm Số lượng

12541 2 5 47

Bảng 1-9 cho thấy bảng Dữ kiện Bán hàng được tạo từ các bảng nguồn Tiêu đề Đơn hàng và Chi

tiết Đơn hàng. Bảng Chi tiết Đơn hàng là nguồn chính cho bảng thông tin này. OrderId,

28 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Các cột LineItemId và Số lượng được chuyển đơn giản từ bảng Chi tiết Đơn hàng nguồn.

Cột ProductId từ bảng Chi tiết Đơn hàng nguồn được thay thế bằng DW thay thế

Cột ProductKey. Các cột CustomerId và OrderDate lấy tiêu đề đơn hàng nguồn

bàn; các cột này liên quan đến đơn đặt hàng, không liên quan đến chi tiết đơn đặt hàng. Tuy nhiên, trong bảng thực tế, chúng

được thay thế bằng các khóa DW thay thế CustomerKey và OrderDateKey.

BẢNG 1-9 Bảng dữ kiện bán hàng

OrderId LineItemId CustomerKey OrderDateKey ProductKey Số lượng

12541 2 289 444 25 47

Bạn không cần cột OrderId và LineItemId trong bảng thông tin bán hàng này. Đối với các phân tích,

bạn có thể tạo khóa chính tổng hợp từ các cột CustomerKey, OrderDateKey và Product Key. Tuy nhiên, bạn nên

giữ các cột OrderId và LineItemId để có thể thực hiện các kiểm soát và so sánh nhanh chóng với dữ liệu nguồn.

Ngoài ra, nếu bạn sử dụng chúng làm

khóa chính, thì khóa chính sẽ ngắn hơn một khóa được tạo từ tất cả các khóa ngoại.

Loại cột cuối cùng được sử dụng trong bảng dữ kiện là loại dòng truyền thừa, nếu bạn triển khai dòng dõi.

Cũng như với thứ nguyên, bạn không bao giờ để lộ thông tin dòng dõi cho người dùng cuối. Để recapitu trễ,

bảng dữ kiện có các loại cột sau:

■ Khóa ngoại

■ Biện pháp

■ Cột dòng dõi (tùy chọn)

■ Các cột khóa nghiệp vụ từ bảng nguồn chính (tùy chọn)

Độ nhạy của các biện pháp


Độ nhạy của các biện pháp không chính xác là một vấn đề thiết kế kho dữ liệu. Tuy nhiên, bạn nên

xem xét những hàm tổng hợp nào bạn sẽ sử dụng trong các báo cáo cho những thước đo nào và bạn sẽ sử dụng những

hàm tổng hợp nào khi tổng hợp theo thứ nguyên nào.

Các loại thước đo đơn giản nhất là những thước đo có thể được tổng hợp với tổng hợp SUM

hoạt động trên tất cả các thứ nguyên, chẳng hạn như số lượng hoặc số lượng. Ví dụ: nếu doanh số bán sản phẩm

A là $ 200,00 và doanh thu cho sản phẩm B là $ 150,00, sau đó tổng doanh thu là $ 350,00.

Nếu doanh số bán hàng của ngày hôm qua là $ 100,00 và doanh số của ngày hôm trước là $ 130,00 thì

tổng doanh thu lên tới $ 230.00. Các biện pháp có thể được tóm tắt trên tất cả các khía cạnh

được gọi là các biện pháp phụ gia.

Chìa khóa
Một số thước đo không phụ gia vào bất kỳ thứ nguyên nào. Ví dụ bao gồm giá cả và phần trăm-

tuổi, chẳng hạn như phần trăm chiết khấu. Thông thường, bạn sử dụng hàm tổng hợp AVERAGE cho các thước đo

như vậy, hoặc bạn hoàn toàn không tổng hợp chúng. Các biện pháp như vậy được gọi là không phụ gia

Chìa khóa
đo. Thông thường, bạn có thể tính tổng các số đo cộng và sau đó tính toán các số đo không cộng

từ các tổng hợp phụ gia. Ví dụ: bạn có thể tính toán tổng số tiền bán hàng và

sau đó chia giá trị đó cho tổng số lượng đặt hàng để được giá trung bình. Trên cao hơn

Bài 3: Thiết kế bảng dữ kiện CHƯƠNG 1 29

www.it-ebooks.info
Machine Translated by Google

các mức tổng hợp, giá tính toán là giá bình quân; ở mức thấp nhất, đó là

chính dữ liệu — giá được tính là giá thực tế. Bằng cách này, bạn có thể đơn giản hóa các truy vấn.

Đối với một số thước đo, bạn có thể sử dụng hàm tổng hợp SUM trên tất cả các thứ nguyên trừ thời gian.

Một số ví dụ bao gồm các mức và số dư. Các biện pháp như vậy được gọi là các biện pháp bán phụ gia.

Chìa khóa
Ví dụ: nếu khách hàng A có $ 2.000,00 trong tài khoản ngân hàng và khách hàng B có $ 3.000,00,

cùng nhau họ có $ 5,000.00. Tuy nhiên, nếu khách hàng A có $ 5,000.00 trong tài khoản ngày hôm qua

nhưng chỉ có $ 2,000.00 hôm nay, thì khách hàng A rõ ràng là không có $ 7.000.00 hoàn toàn.

Bạn nên quan tâm đến cách bạn tổng hợp các biện pháp như vậy trong một báo cáo. Đối với các thước đo thời gian, bạn

có thể tính giá trị trung bình hoặc sử dụng giá trị cuối cùng làm giá trị tổng hợp.

Độ nhạy của các biện pháp trong SSAS


SSAS nằm ngoài phạm vi của cuốn sách này; tuy nhiên, bạn nên biết một số thông tin về SSAS nếu

kho dữ liệu của bạn là nguồn cho cơ sở dữ liệu SSAS. SSAS có hỗ trợ bán phụ gia

và các biện pháp không phụ gia. Mô hình cơ sở dữ liệu SSAS được gọi là Mô hình ngữ nghĩa kinh doanh

Chìa khóa
thông minh (BISM). So với mô hình cơ sở dữ liệu SQL Server, BISM bao gồm nhiều siêu dữ liệu bổ sung.

SSAS có hai loại lưu trữ: thứ nguyên và dạng bảng. Lưu trữ dạng bảng nhanh hơn để phát triển, bởi

Chìa khóa
vì nó hoạt động thông qua các bảng giống như một kho dữ liệu. Mô hình chiều

đại diện đúng hơn cho một khối lập phương. Tuy nhiên, mô hình thứ nguyên bao gồm nhiều dữ liệu meta hơn

so với mô hình bảng. Trong xử lý chiều BISM, SSAS cung cấp các chức năng cổng tổng hợp bán phụ gia ra khỏi

hộp. Ví dụ: SSAS cung cấp hàm tổng hợp LastNonEmpty,

sử dụng đúng cách hàm tổng hợp SUM trên tất cả các thứ nguyên trừ thời gian và

giá trị cuối cùng đã biết dưới dạng tổng hợp theo thời gian. Trong mô hình bảng BISM, bạn sử dụng ngôn ngữ

Biểu thức Phân tích Dữ liệu (DAX). Ngôn ngữ DAX bao gồm các chức năng cho phép bạn xây dựng

biểu thức bán cộng cũng khá nhanh.

Mối quan hệ nhiều-nhiều


Trong cơ sở dữ liệu quan hệ, mối quan hệ nhiều-nhiều giữa hai bảng được giải quyết

thông qua một bảng trung gian thứ ba. Ví dụ: trong cơ sở dữ liệu AdventureWorksDW2012,

mọi hoạt động bán hàng trên Internet có thể liên quan đến nhiều lý do bán hàng — và mọi lý do

có thể được liên kết với nhiều lần bán hàng. Hình 1-13 cho thấy một ví dụ về hệ thống nhiều-nhiều

30 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Mối quan hệ giữa FactInternetSales và DimSalesReason thông qua FactInternetSalesReason

bảng trung gian trong cơ sở dữ liệu mẫu AdventureWorksDW2012.

HÌNH 1-13 Mối quan hệ nhiều-nhiều cổ điển.

Đối với kho dữ liệu trong hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), đây là

đúng mô hình. Tuy nhiên, SSAS có vấn đề với mô hình này. Đối với các báo cáo từ DW, đó là bạn,

nhà phát triển, người viết các truy vấn. Ngược lại, báo cáo từ cơ sở dữ liệu SSAS được thực hiện

bởi chúng tôi sử dụng các công cụ máy khách đọc lược đồ và chỉ sau đó xây dựng giao diện người dùng

(UI) cho các biện pháp và thuộc tính được chọn. Công cụ máy khách tạo truy vấn biểu thức đa chiều (MDX)

cho mô hình thứ nguyên SSAS và truy vấn DAX hoặc MDX cho mô hình bảng SSAS. Đến

tạo các truy vấn và xây dựng giao diện người dùng đúng cách, các công cụ dựa trên Star hoặc SnowÁake tiêu chuẩn

các lược đồ. Các công cụ mong đợi rằng bảng trung tâm, bảng dữ kiện, luôn ở bên "nhiều"

của mối quan hệ.

Nhìn nhanh vào Hình 1-13 cho thấy rằng bảng dữ kiện FactInternetSales nằm ở phía "một"

mối quan hệ của nó với bảng dữ kiện FactInternetSalesReason. SSAS với mô hình bảng BISM

hoàn toàn không hỗ trợ mối quan hệ nhiều-nhiều trong phiên bản hiện tại của nó. Trong SSAS với BISM

mô hình chiều, bạn có thể giải quyết vấn đề bằng cách tạo một thứ nguyên trung gian cho cả hai

bảng dữ kiện. Bạn tạo nó từ khóa chính của bảng FactInternetSales. Hãy gọi thứ nguyên này là

DimFactInternetSales. Sau đó, bạn đặt nó ở phía "một" của các mối quan hệ

với cả hai bảng dữ kiện. Bằng cách này, cả hai bảng dữ kiện luôn ở bên "nhiều" của bất kỳ mối quan

hệ nào. Tuy nhiên, bạn phải nhận ra rằng mối quan hệ giữa FactInternetSales và thứ nguyên
DimFactInternetSales mới trên thực tế là 1-1.

Bài 3: Thiết kế bảng dữ kiện CHƯƠNG 1 31

www.it-ebooks.info
Machine Translated by Google

MẸO THI

Lưu ý rằng bạn tạo thứ nguyên trung gian giữa hai bảng dữ kiện hỗ trợ mối quan hệ
nhiều-nhiều SSAS từ bảng dữ kiện hiện có chứ không phải trực tiếp từ bảng từ hệ thống
giao dịch nguồn.

Bạn có thể tạo các thứ nguyên trung gian như vậy trong kho dữ liệu của mình và sau đó chỉ cần

kế thừa chúng trong cơ sở dữ liệu chiều SSAS BISM của bạn. (Lưu ý rằng SSAS với BISM trong một bảng

mô hình không nhận ra các mối quan hệ nhiều-nhiều, ngay cả khi có thêm một bảng thứ nguyên ate trung

gian.) Bằng cách này, bạn có thể có cùng một mô hình trong DW của mình như trong BISM của bạn

cơ sở dữ liệu chiều. Ngoài ra, khi bạn tạo lại một thứ nguyên như vậy, bạn có thể cho nó

người dùng cuối để báo cáo. Tuy nhiên, thứ nguyên chỉ chứa các cột chính không hữu ích lắm

để báo cáo. Để làm cho nó hữu ích hơn, bạn có thể thêm các thuộc tính bổ sung tạo thành một hệ thống phân cấp.

Các biến thể ngày, chẳng hạn như năm, quý, tháng và ngày rất tiện dụng để xem chi tiết. Bạn

có thể nhận các giá trị này từ thứ nguyên DimDate và cho phép đường dẫn chi tiết về đơn hàng bán hàng năm

quý tháng ngày trong thứ nguyên này. Hình 1-14 cho thấy nhiều

mối quan hệ với một thứ nguyên trung gian bổ sung.

HÌNH 1-14 Mối quan hệ nhiều-nhiều với hai bảng trung gian.

Lưu ý rằng SSMS đã tạo mối quan hệ giữa DimFactInternetSales và FactInternet


Bán hàng như một đối một.

THỰC HÀNH Xem lại bảng dữ kiện AdventureWorksDW2012

Cơ sở dữ liệu mẫu AdventureWorksDW2012 cũng có nhiều loại bảng dữ kiện, theo thứ tự

để hiển thị tất cả các biện pháp có thể. Trong thực hành này, bạn sẽ xem xét một trong số chúng.

BÀI TẬP 1 Tạo sơ đồ cho bảng dữ kiện AdventureWorksDW2012

Trong bài tập này, bạn tạo một sơ đồ cơ sở dữ liệu cho một bảng dữ kiện và hai thứ nguyên liên quan.

1. Nếu bạn đã đóng SSMS, hãy khởi động nó và kết nối với phiên bản SQL Server của bạn. Mở rộng dữ liệu-
thư mục cơ sở và sau đó là cơ sở dữ liệu AdventureWorksDW2012.

2. Nhấp chuột phải vào thư mục Sơ đồ cơ sở dữ liệu và chọn tùy chọn Sơ đồ cơ sở dữ liệu mới.

3. Từ danh sách Thêm Bảng, hãy chọn các bảng sau (bấm vào từng bảng và sau đó bấm vào

Thêm nút):

■ DimProduct

■ DimDate

■ FactProductInventory

32 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Sơ đồ của bạn sẽ giống như Hình 1-15.

HÌNH 1-15 FactProductInventory và các bảng liên quan.

BÀI TẬP 2 Phân tích các cột của bảng dữ kiện

Trong bài tập này, bạn tìm hiểu thêm chi tiết về bảng dữ kiện trong lược đồ mà bạn đã tạo trong bài

tập trước. Lưu ý rằng bạn phải kết luận những chi tiết này từ tên của các cột chắc chắn ít ỏi; trong

một dự án thực tế, bạn cũng nên kiểm tra nội dung của các cột.

■ Biết cách hoạt động của khoảng không quảng cáo, bạn có thể kết luận rằng UnitsIn và UnitsOut là

những thước đo phụ. Sử dụng hàm tổng hợp SUM cho hai cột này là lý do có thể tổng hợp trên bất

kỳ thứ nguyên nào.

■ Thước đo UnitCost là một thước đo không phụ gia. Tính tổng nó trên bất kỳ thứ nguyên nào
không có ý nghĩa.

■ Phép đo UnitsBalance là một phép đo bán phụ gia. Bạn có thể sử dụng hàm tổng hợp SUM trên bất kỳ

thứ nguyên nào trừ thời gian.

Lưu sơ đồ với tên Practice_01_03_ProductInventory. Đóng sơ đồ và thoát SSMS.

Tóm tắt bài học ■ Bảng dữ

kiện bao gồm các số đo, khóa ngoại, và có thể là một khóa chính bổ sung và

các cột dòng dõi.

■ Các biện pháp có thể là phụ gia, không phụ gia, hoặc bán phụ gia.

■ Đối với các mối quan hệ nhiều-nhiều, bạn có thể giới thiệu thêm một người trung gian
kích thước.

Bài 3: Thiết kế bảng dữ kiện CHƯƠNG 1 33

www.it-ebooks.info
Machine Translated by Google

Nhận xét bài học

Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn
có thể tìm câu trả lời cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả
lời là đúng hay sai trong phần “Câu trả lời” ở cuối chương này.

1. Trên thứ nguyên nào, bạn không thể sử dụng hàm tổng hợp SUM cho bán phụ gia
đo?

A. Khách hàng

B. Sản phẩm

C. Ngày

D. Nhân viên

2. Những biện pháp nào bạn mong đợi là không phụ gia? (Chọn tất cả các áp dụng.)

A. Giá cả

B. Nợ

C. SalesAmount

D. Giảm giá

E. UnitBalance

3. Loại cột nào không phải là một phần của bảng dữ kiện?

A. Dòng dõi

B. Đo lường

C. Chìa khóa

D. Tài sản thành viên

Các tình huống tình huống

Trong các tình huống trường hợp sau, bạn áp dụng những gì bạn đã học về lược đồ Star
và SnowÁake, thứ nguyên và độ nhạy của các thước đo. Bạn có thể tìm câu trả lời cho những
câu hỏi này trong phần “Câu trả lời” ở cuối chương này.

Tình huống tình huống 1: Dự án POC nhanh Bạn được thuê

để thực hiện một dự án lưu trữ dữ liệu POC nhanh chóng. Bạn phải chuẩn bị lược đồ cho
dữ liệu bán hàng. SME của khách hàng của bạn muốn phân tích dữ liệu bán hàng theo
khách hàng, sản phẩm và thời gian. Trước khi tạo DW và các bảng, bạn cần đưa ra một số
quyết định và trả lời một số câu hỏi:

34 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

1. Bạn sẽ sử dụng loại lược đồ nào?

2. Kích thước của lược đồ của bạn sẽ như thế nào?

3. Bạn có mong đợi các biện pháp phụ gia chỉ?

Tình huống tình huống 2: Mở rộng Dự án POC


Sau khi bạn triển khai kho dữ liệu bán hàng POC trong Tình huống 1, khách hàng của bạn đã rất

hài lòng. Trên thực tế, doanh nghiệp muốn mở rộng dự án sang một kho dữ liệu dài hạn, thực sự. Tuy

nhiên, khi phỏng vấn các nhà phân tích, bạn cũng phát hiện ra một số điểm chưa hài lòng.

Phỏng vấn

Dưới đây là danh sách các nhân viên của công ty đã bày tỏ một số sự không hài lòng trong quan

điểm của họ, cùng với tuyên bố của họ:

■ Bán hàng SME “Tôi không thấy dữ liệu lịch sử tổng hợp chính xác qua các khu vực.” ■

Người tạo báo cáo của DBA “Các truy vấn của tôi vẫn còn phức tạp, với nhiều phép ghép nối”.

Bạn cần giải quyết những vấn đề này.

Câu hỏi
1. Bạn sẽ giải quyết vấn đề Doanh nghiệp SME như thế nào?

2. Bạn sẽ triển khai loại lược đồ nào cho DW dài hạn?

3. Bạn sẽ giải quyết vấn đề của DBA như thế nào?

Các phương pháp được đề xuất

Để giúp bạn nắm vững thành công các mục tiêu kỳ thi được trình bày trong chương này, hãy hoàn thành

các nhiệm vụ sau.

Phân tích kỹ lưỡng cơ sở dữ liệu AdventureWorksDW2012 Để hiểu tất cả các loại kích

thước và bảng dữ kiện, bạn nên phân tích kỹ lưỡng cơ sở dữ liệu mẫu Adventure

WorksDW2012. Có nhiều trường hợp cho nhiều vấn đề về kho dữ liệu mà bạn có thể gặp phải.

■ Thực hành 1 Kiểm tra tất cả các bảng dữ kiện. Tìm tất cả các biện pháp bán phụ gia.

■ Thực hành 2 Tìm tất cả các cấu trúc phân cấp có thể cho thứ nguyên DimCustomer. Bao gồm

các thuộc tính trong thứ nguyên và các thuộc tính trong bảng DimGeography tra cứu.

Các phương pháp đề xuất CHƯƠNG 1 35

www.it-ebooks.info
Machine Translated by Google

Kiểm tra SCD và Lineage trong


Cơ sở dữ liệu AdventureWorksDW2012
Mặc dù cơ sở dữ liệu AdventureWorksDW2012 ví dụ cho nhiều trường hợp lưu trữ dữ liệu, nhưng không phải tất

cả các vấn đề có thể xảy ra đều được giải quyết. Bạn nên kiểm tra những gì còn thiếu.

■ Thực hành 1 Có chỗ cho thông tin về dòng dõi trong tất cả các chiều và bảng dữ kiện không?

Làm thế nào bạn sẽ cung cấp thông tin này?

■ Thực hành 2 Có một số kích thước quan trọng, chẳng hạn như những thứ đại diện cho cus

tomers và các sản phẩm, không được điều chế cho một dung dịch SCD loại 2? Bạn sẽ chuẩn bị các kích

thước đó như thế nào cho giải pháp SCD Loại 2?

36 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Câu trả lời

Phần này bao gồm các câu trả lời cho các câu hỏi ôn tập bài học và lời giải cho trường hợp quyền

trượng trong chương này.

Bài 1
1. Đáp án đúng: A và D

A. Đúng: Một lược đồ Star thường có ít bảng hơn một lược đồ chuẩn hóa.

B. Không chính xác: Việc hỗ trợ các kiểu dữ liệu phụ thuộc vào việc quản lý cơ sở dữ liệu

hệ thống, không phải trên lược đồ.

C. Không chính xác: Không có biểu thức hoặc lệnh đặc biệt c Transact-SQL cho lược đồ Hình

sao. Tuy nhiên, có một số tối ưu hóa cụ thể cho các truy vấn lược đồ Hình sao.

D. Đúng: Lược đồ Star là một tiêu chuẩn thực tế cho các kho dữ liệu. Nó là tường thuật; bảng

trung tâm — bảng dữ kiện — chứa các thước đo và các bảng xung quanh, các kích thước, cung

cấp ngữ cảnh cho các thước đo đó.

2. Đáp án đúng: C

A. Sai: Lược đồ Star phù hợp hơn cho các dự án DW dài hạn.

B. Không chính xác: Một lược đồ chuẩn hóa thích hợp cho các ứng dụng OLTP LOB.

C. Đúng: Lược đồ SnowÁake thích hợp cho các dự án POC, vì các kích thước được chuẩn hóa và do
đó gần với lược đồ chuẩn hóa nguồn hơn.

D. Sai: Một lược đồ XML được sử dụng để xác thực các tài liệu XML, không phải cho DW.

3. Đáp án đúng: B và D

A. Không chính xác: Các bảng tra cứu có liên quan đến cả hai lược đồ SnowÁake và chuẩn hóa.

B. Đúng: Kích thước là một phần của giản đồ Hình sao.

C. Sai: Các số đo là các cột trong bảng dữ kiện, không phải là các bảng của chính nó.

D. Đúng: Bảng dữ kiện là bảng trung tâm của lược đồ Hình sao.

Bài 2
1. Đáp án đúng: B

A. Không chính xác: Đây là quản lý SCD Loại 3.

B. Đúng: Đây là cách bạn xử lý các thay đổi khi triển khai SCD Loại 2
dung dịch.

C. Sai: Duy trì lịch sử không có nghĩa là nội dung của DW là tĩnh.

D. Không chính xác: Đây là quản lý SCD Loại 1.

Đáp án CHƯƠNG 1 37

www.it-ebooks.info
Machine Translated by Google

2. Đáp án đúng: B

A. Không chính xác: Thuộc tính là một phần của thứ nguyên.

B. Đúng: Các thước đo là một phần của bảng dữ kiện.

C. Sai: Phím là một phần của kích thước.

D. Sai: Thuộc tính thành viên là một phần của kích thước.

E. Không chính xác: Các cột tên là một phần của kích thước.

3. Đáp án đúng: B

A. Không chính xác: Bạn cần phân tích tên thuộc tính và nội dung để phát hiện

cấu trúc phân cấp trong lược đồ Hình sao.

B. Đúng: Bảng tra cứu kích thước biểu thị phân cấp tự nhiên trong SnowÁake

lược đồ.

C. Không chính xác: Một lược đồ SnowÁake hỗ trợ cấu trúc phân cấp.

D. Không chính xác: Bạn không cần phải chuyển đổi giản đồ SnowÁake thành Star để phát hiện

hệ thống phân cấp.

Bài 3
1. Đáp án đúng: C

A. Không chính xác: Bạn có thể sử dụng hàm tổng hợp SUM cho các biện pháp bán cộng thêm

thứ nguyên Khách hàng.

B. Không chính xác: Bạn có thể sử dụng hàm tổng hợp SUM cho các thước đo bán cộng thêm trên thứ nguyên

Sản phẩm.

C. Đúng: Bạn không thể sử dụng hàm tổng hợp SUM cho các biện pháp bán cộng gộp

trên thứ nguyên Ngày.

D. Không chính xác: Bạn có thể sử dụng hàm tổng hợp SUM cho các thước đo bán cộng tính trên thứ nguyên

Nhân viên.

2. Đáp án đúng: A và D

A. Đúng: Giá cả không phải là thước đo phụ gia.

B. Không chính xác: Ghi nợ là một thước đo cộng.

C. Không chính xác: Số lượng là số đo cộng thêm.

D. Đúng: Phần trăm chiết khấu không phải là số đo phụ gia.

E. Không chính xác: Cân bằng là các biện pháp bán phụ gia.

38 CHƯƠNG 1 Thiết kế lôgic kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

3. Đáp án đúng: D

A. Không chính xác: Các cột dòng có thể là một phần của bảng dữ kiện.

B. Sai: Các số đo được đưa vào bảng dữ kiện.

C. Sai: Một bảng dữ kiện bao gồm các cột chính.

D. Đúng: Thuộc tính thành viên là một kiểu cột trong một thứ nguyên.

Tình huống trường hợp 1

1. Để có một dự án POC nhanh, bạn nên sử dụng lược đồ SnowÁake.

2. Bạn sẽ có các thứ nguyên về khách hàng, sản phẩm và ngày tháng.

3. Không, bạn cũng nên mong đợi một số biện pháp không phụ gia. Ví dụ, giá cả và các tỷ lệ phần trăm khác

nhau, chẳng hạn như tỷ lệ phần trăm chiết khấu, không phải là phụ gia.

Tình huống trường hợp 2

1. Bạn nên triển khai giải pháp Loại 2 cho thứ nguyên khách hàng thay đổi chậm.

2. Đối với DW dài hạn, bạn nên chọn giản đồ Hình sao.

3. Với thiết kế giản đồ Star, bạn sẽ tự động giải quyết vấn đề của DBA.

Đáp án CHƯƠNG 1 39

www.it-ebooks.info
Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

CHƯƠNG 2

Triển khai dữ liệu


Kho
Mục tiêu kỳ thi trong chương này:

■ Thiết kế và triển khai Kho dữ liệu

■ Thiết kế và thực hiện các kích thước.

■ Thiết kế và triển khai các bảng dữ kiện.

Sau khi tìm hiểu về cấu trúc logic của một lược đồ kho dữ liệu, bạn cần phải
Một
sử dụng kiến thức đó vào thực tế. Tạo kích thước và bảng dữ kiện rất đơn giản. Tuy nhiên, việc sử dụng

các chỉ mục và phân vùng thích hợp có thể làm cho việc triển khai vật lý trở nên khá phức tạp. Chương này

thảo luận về việc sử dụng chỉ mục, bao gồm Microsoft SQL Server 2012 mới

chỉ mục cột. Bạn cũng sẽ tìm hiểu cách sử dụng phân vùng bảng để cải thiện truy vấn trên mỗi biểu mẫu và làm cho

các bảng và chỉ mục dễ quản lý hơn. Bạn có thể tăng tốc độ truy vấn với

tổng hợp được chuẩn bị trước bằng cách sử dụng các chế độ xem được lập chỉ mục. Nếu bạn sử dụng kho dữ liệu của

mình để giải quyết hàng đợi chứ không chỉ là nguồn cho các mô hình Mô hình ngữ nghĩa kinh doanh thông minh (BISM)

của Dịch vụ Phân tích SQL Server (SSAS), bạn có thể tạo tổng hợp khi tải dữ liệu. Bạn có thể

lưu trữ tổng hợp trong các bảng bổ sung hoặc bạn có thể tạo các dạng xem được lập chỉ mục. Trong chương này, bạn

sẽ học cách triển khai kho dữ liệu và chuẩn bị cho việc tải và truy vấn nhanh.

Các bài học trong chương này:

■ Bài học 1: Triển khai Thứ nguyên và Bảng dữ kiện

■ Bài học 2: Quản lý hiệu suất của một kho dữ liệu

■ Bài 3: Tải và Kiểm toán tải

41

www.it-ebooks.info
Machine Translated by Google

Trước khi bắt đầu

Để hoàn thành chương này, bạn phải có:

■ Hiểu biết về thiết kế chiều. ■ Có kinh nghiệm

làm việc với SQL Server 2012 Management Studio. ■ Có kiến thức về ngôn

ngữ Transact-SQL (T-SQL). ■ Hiểu biết về các chỉ mục được phân nhóm và

không phân nhóm. ■ Nắm chắc các phép nối vòng lặp lồng nhau, phép nối

hợp nhất và phép nối băm.

Bài 1: Triển khai thứ nguyên và bảng dữ kiện

Triển khai kho dữ liệu có nghĩa là tạo cơ sở dữ liệu kho dữ liệu (DW) và các đối tượng cơ sở

dữ liệu. Các đối tượng cơ sở dữ liệu chính, như bạn đã thấy trong Chương 1, “Thiết kế lôgic

của kho dữ liệu”, là các kích thước và bảng dữ kiện. Để đẩy nhanh quá trình trích xuất-biến đổi-tải

(ETL), bạn có thể có các đối tượng bổ sung trong DW của mình, bao gồm trình tự, thủ tục được lưu

trữ và bảng dàn. Sau khi bạn tạo các đối tượng, bạn nên kiểm tra chúng bằng cách tải dữ liệu thử nghiệm.

Tạo cơ sở dữ liệu kho dữ liệu


Bạn nên xem xét một số cài đặt khi tạo cơ sở dữ liệu kho dữ liệu. DW chứa một bản sao được chuyển

đổi của dữ liệu ngành nghề kinh doanh (LOB). Bạn tải dữ liệu vào DW oc của mình theo thời gian,

theo lịch trình — thường là trong một công việc qua đêm. Dữ liệu DW không phải là dữ liệu trực

tuyến, theo thời gian thực. Bạn không cần phải sao lưu nhật ký giao dịch cho kho dữ liệu của mình,

như bạn làm trong cơ sở dữ liệu LOB. Do đó, mô hình khôi phục cho kho dữ liệu của bạn phải Đơn giản.

42 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

SQL Server hỗ trợ ba mô hình khôi phục:

Chìa khóa
■ Trong mô hình Khôi phục hoàn toàn, tất cả các giao dịch được ghi lại đầy đủ, với tất cả dữ liệu liên quan. Bạn

phải thường xuyên sao lưu nhật ký. Bạn có thể khôi phục dữ liệu vào bất kỳ thời điểm tùy ý nào.

Khôi phục theo thời gian đặc biệt hữu ích khi xảy ra lỗi của con người.

■ Mô hình khôi phục Bulk Logged là một phần bổ trợ của mô hình Khôi phục đầy đủ cho phép

hoạt động sao chép hàng loạt hiệu suất cao. Các hoạt động hàng loạt, chẳng hạn như tạo chỉ mục hoặc

tải hàng loạt văn bản hoặc dữ liệu XML, có thể được ghi lại ở mức tối thiểu. Đối với các hoạt động như vậy, SQL

Máy chủ chỉ có thể ghi nhật ký lệnh Transact-SQL mà không có tất cả dữ liệu liên quan. Bạn

vẫn cần sao lưu nhật ký giao dịch thường xuyên.

■ Trong mô hình khôi phục đơn giản, SQL Server tự động lấy lại không gian nhật ký cho các giao dịch cam kết.

SQL Server giữ cho các yêu cầu về không gian nhật ký nhỏ, về cơ bản loại bỏ nhu cầu quản lý không gian nhật

ký giao dịch.

Mô hình khôi phục đơn giản hữu ích cho việc phát triển, thử nghiệm và cơ sở dữ liệu hầu như chỉ đọc.

Vì trong kho dữ liệu, bạn chủ yếu sử dụng dữ liệu ở chế độ chỉ đọc, nên mô hình Đơn giản là

thích hợp nhất cho kho dữ liệu. Nếu bạn sử dụng mô hình khôi phục được ghi nhật ký đầy đủ hoặc hàng loạt,

bạn nên sao lưu nhật ký thường xuyên, vì nếu không, nhật ký sẽ liên tục phát triển với

mỗi lần tải dữ liệu mới.

Dữ liệu cơ sở dữ liệu SQL Server và bản ghi nhật ký có thể phát triển và thu nhỏ tự động. Tuy nhiên, quá trình

phát triển xảy ra vào thời điểm không thích hợp nhất — khi bạn tải dữ liệu mới — ảnh hưởng đến

tải, và do đó làm chậm tải. Nhiều hoạt động tăng trưởng nhỏ có thể phân mảnh

dữ liệu. Tự động thu nhỏ có thể phân mảnh dữ liệu nhiều hơn. Đối với các truy vấn đọc nhiều

dữ liệu, thực hiện quét bảng lớn, bạn sẽ muốn loại bỏ phân mảnh nhiều như pos sible. Do đó, bạn nên ngăn chặn

autoshrinking và autogrowing. Đảm bảo rằng tùy chọn cơ sở dữ liệu Tự động thu nhỏ đã được tắt. Mặc dù bạn không thể

ngăn cơ sở dữ liệu phát triển,

bạn nên dành không gian phù hợp cho dữ liệu của mình và ghi nhật ký ban đầu để ngăn tự động phát triển.

Bạn có thể tính toán các yêu cầu về không gian khá dễ dàng. Kho dữ liệu chứa dữ liệu cho

nhiều năm, thường là 5 hoặc 10 năm. Tải dữ liệu thử nghiệm trong một khoảng thời gian giới hạn, chẳng hạn như một

năm (hoặc một tháng, nếu bạn đang xử lý cơ sở dữ liệu nguồn rất lớn). Sau đó, kiểm tra kích thước của

cơ sở dữ liệu nhỏ và ngoại suy kích thước cho toàn bộ dữ liệu có giá trị 5 hoặc 10 năm. Ngoài ra, bạn nên thêm ít

nhất 25 phần trăm để có thêm dung lượng trống trong dữ liệu của mình. Bổ sung này

dung lượng trống cho phép bạn xây dựng lại hoặc tạo lại các chỉ mục mà không bị phân mảnh.

Mặc dù nhật ký giao dịch không phát triển trong mô hình khôi phục Đơn giản, bạn vẫn nên

đặt nó đủ lớn để đáp ứng giao dịch lớn nhất. Các câu lệnh của ngôn ngữ modi ca tion (DML) dữ liệu thông thường,

bao gồm INSERT, DELETE, UPDATE và MERGE, luôn

đăng nhập đầy đủ, ngay cả trong mô hình Đơn giản. Bạn nên kiểm tra việc thực thi các câu lệnh này và ước tính kích

thước thích hợp cho nhật ký của mình.

Bài 1: Triển khai thứ nguyên và bảng dữ kiện CHƯƠNG 2 43

www.it-ebooks.info
Machine Translated by Google

Trong kho dữ liệu của bạn, các bảng dữ kiện lớn thường chiếm hầu hết không gian. Bạn có thể

tối ưu hóa truy vấn và quản lý các bảng dữ kiện lớn thông qua phân vùng. Phân vùng bảng có lợi thế quản lý

Chìa khóa
và cung cấp hiệu suất có lợi. Các truy vấn thường chỉ chạm vào

tập hợp con của các phân vùng và SQL Server có thể loại bỏ nhanh chóng các phân vùng khác sớm trong

quá trình thực thi truy vấn. Bạn sẽ tìm hiểu thêm về cách phân vùng bảng dữ kiện trong Bài 3 của phần này

chương.

Một cơ sở dữ liệu có thể có nhiều dữ liệu nhỏ, được nhóm thành nhiều nhóm chân. Không có đơn

Chìa khóa
thực tiễn tốt nhất về số lượng nhóm chân bạn nên tạo cho kho dữ liệu của mình. Tuy nhiên, đối với hầu hết

các kịch bản DW, có một nhóm chân cho mỗi phân vùng là thích hợp nhất.

Đối với số lượng đồng tính nữ trong một nhóm, bạn nên xem xét dung lượng ổ đĩa của mình. Nói chung, bạn nên

tạo một le cho mỗi đĩa vật lý.

Việc tải dữ liệu từ các hệ thống nguồn thường khá phức tạp. Để giảm thiểu sự phức tạp, bạn có thể

triển khai các bảng dàn trong DW của mình. Bạn thậm chí có thể triển khai các bảng dàn và

các đối tượng khác trong một cơ sở dữ liệu riêng biệt. Bạn sử dụng bảng dàn để lưu trữ tạm thời dữ liệu nguồn

Chìa khóa
trước khi làm sạch nó hoặc hợp nhất nó với dữ liệu từ các nguồn khác. Ngoài ra, bảng dàn còn

đóng vai trò là lớp trung gian giữa DW và bảng nguồn. Nếu có điều gì đó thay đổi trong

nguồn — ví dụ: nếu cơ sở dữ liệu nguồn được nâng cấp — bạn chỉ phải thay đổi truy vấn

đọc dữ liệu nguồn và tải dữ liệu đó vào bảng dàn. Sau đó, quy trình ETL thông thường của bạn sẽ hoạt động

giống như trước khi có sự thay đổi trong hệ thống nguồn. Một phần của DW chứa các bảng dàn ing được gọi là

vùng dàn dữ liệu (DSA).

Bảng dàn không bao giờ được hiển thị cho người dùng cuối. Nếu chúng là một phần của DW, bạn có thể lưu trữ

chúng trong một lược đồ khác với các bảng giản đồ Star thông thường. Bằng cách lưu trữ các bảng dàn trong

một lược đồ khác, bạn có thể cấp quyền cho người dùng cuối trên các bảng DW thông thường bằng cách gán các

quyền đó chỉ cho lược đồ thích hợp, điều này giúp đơn giản hóa việc quản trị. Trong một

44 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

kho dữ liệu điển hình, hai lược đồ phù hợp: một cho các bảng DW thông thường và một cho

bảng dàn. Bạn có thể lưu trữ các bảng DW thông thường trong lược đồ dbo và nếu cần, hãy tạo một

lược đồ riêng cho các bảng dàn.

Thực hiện các thứ nguyên


Việc triển khai một thứ nguyên bao gồm việc tạo một bảng chứa tất cả các cột cần thiết. Ngoài khóa

nghiệp vụ, bạn nên thêm khóa thay thế cho tất cả các thứ nguyên cần quản lý Thứ nguyên thay đổi

chậm (SCD) Loại 2. Bạn cũng nên thêm một cột gắn thẻ

hàng hiện tại hoặc hai cột ngày đánh dấu thời hạn hiệu lực của một hàng khi bạn triển khai

Quản lý SCD loại 2 cho một thứ nguyên.

Bạn có thể sử dụng các số nguyên tuần tự đơn giản cho các khóa thay thế. SQL Server có thể tự động đánh số

chúng cho bạn. Bạn có thể sử dụng thuộc tính IDENTITY để tạo các số tuần tự. Bạn

nên đã quen thuộc với tài sản này. Trong SQL Server 2012, bạn cũng có thể sử dụng chuỗi
cho ers nhận dạng.

Một chuỗi là một đối tượng không phụ thuộc vào người dùng, không phụ thuộc vào bảng (và do đó có giới hạn lược đồ).

SQL Server sử dụng các trình tự để tạo ra một chuỗi các giá trị số theo thông số của bạn. Bạn có thể

tạo chuỗi theo thứ tự tăng dần hoặc giảm dần, sử dụng de ned trong các giá trị có thể có. Bạn thậm

chí có thể tạo ra các chuỗi theo chu kỳ (lặp lại). Như đã nói, chuỗi là các đối tượng độc lập, không

liên kết với bảng. Bạn kiểm soát mối quan hệ

giữa các chuỗi và bảng trong ứng dụng ETL của bạn. Với trình tự, bạn có thể phối hợp

các giá trị chính trên nhiều bảng.

Bạn nên sử dụng chuỗi thay vì cột nhận dạng trong các trường hợp sau:

■ Khi bạn cần xác định số tiếp theo trước khi thực hiện chèn vào bảng.

■ Khi bạn muốn chia sẻ một chuỗi số giữa nhiều bảng hoặc thậm chí

giữa nhiều cột trong một bảng.

■ Khi bạn cần bắt đầu lại chuỗi số khi đạt đến một số cụ thể (đó

là, khi bạn cần quay vòng tuần tự).

■ Khi bạn cần các giá trị trình tự được sắp xếp theo cột khác. GIÁ TRỊ TIẾP THEO CHO

hàm, là hàm bạn gọi để phân bổ các giá trị trình tự, có thể áp dụng

mệnh đề OVER. Trong mệnh đề OVER, bạn có thể tạo chuỗi theo thứ tự ORDER BY của mệnh đề
OVER.

■ Khi bạn cần gán nhiều số cùng một lúc. Yêu cầu danh tính

các giá trị có thể dẫn đến khoảng trống trong chuỗi nếu những người dùng khác đang đồng thời tạo

số thứ tự. Bạn có thể gọi thủ tục hệ thống sp_sequence_get_range để

lấy một số số trong dãy cùng một lúc.

■ Khi bạn cần thay đổi đặc điểm của trình tự, chẳng hạn như gia số
giá trị.

Bài 1: Triển khai thứ nguyên và bảng dữ kiện CHƯƠNG 2 45

www.it-ebooks.info
Machine Translated by Google

■ Khi bạn cần đạt được hiệu suất tốt hơn so với cột nhận dạng. Bạn có thể
sử dụng tùy chọn CACHE khi bạn tạo một chuỗi. Tùy chọn này làm tăng hiệu suất

bằng cách giảm thiểu số lượng IO đĩa được yêu cầu để tạo ra các dãy số thứ tự. Khi kích thước

bộ nhớ cache là 50 (là kích thước bộ nhớ cache mặc định), SQL Server sẽ lưu vào bộ nhớ cache

chỉ giá trị hiện tại và số lượng giá trị còn lại trong bộ nhớ cache, nghĩa là lượng bộ nhớ được

yêu cầu chỉ tương đương với hai trường hợp của kiểu dữ liệu cho

đối tượng trình tự.

Cú pháp hoàn chỉnh để tạo một chuỗi như sau.

TẠO SEQUENCE [schema_name. ] tên_trình [AS [build_in_integer_type

| do người dùng xác định_thông_số_tỉnh]]


[BẮT ĐẦU VỚI <constant>]

[TĂNG BẰNG <constant>]

[{MINVALUE [<constant>]} | {KHÔNG MINVALUE}]

[{MAXVALUE [<constant>]} | {KHÔNG MAXVALUE}]

[CHU KỲ | {KHÔNG CÓ CHU KỲ}]

[{CACHE [<constant>]} | {KHÔNG CÓ CACHE}] [; ]

Ngoài các cột thông thường, bạn cũng có thể thêm các cột được tính toán. Một cột được tính toán

là một cột ảo trong một bảng. Giá trị của cột được xác định bởi một biểu thức. Bằng cách loại bỏ các
Chìa khóa

cột được tính toán trong bảng của bạn, bạn có thể đơn giản hóa các truy vấn. Các cột được tính toán có thể

cũng giúp cho hiệu suất. Bạn có thể duy trì và lập chỉ mục một cột được tính toán, miễn là

các điều kiện tiên quyết sau được đáp ứng:

■ Yêu cầu về quyền sở hữu

■ Yêu cầu về tính quyết đoán

■ Yêu cầu về độ chính xác

■ Yêu cầu về loại dữ liệu

■ ĐẶT các yêu cầu tùy chọn

Tham khảo bài viết “Tạo chỉ mục trên cột được tính toán” trong Sách trực tuyến cho SQL

Server 2012 để biết chi tiết về các yêu cầu này (http://msdn.microsoft.com/en-us/library /

ms189292(SQL.105).aspx).

Bạn có thể sử dụng các cột được tính toán để loại bỏ các giá trị liên tục trong các cột nguồn. Cột

được đặt bằng com đặc biệt hữu ích cho các giá trị cột liên tục thay đổi. Một giá trị dồi dào luôn thay

đổi sẽ là tuổi tác. Giả sử rằng bạn có ngày sinh của

khách hàng hoặc nhân viên; để phân tích, bạn có thể cần tính tuổi. Tuổi thay đổi hàng ngày, với mọi tải

trọng. Bạn có thể tùy ý độ tuổi trong một vài nhóm. Sau đó, các giá trị

không thay đổi thường xuyên nữa. Ngoài ra, bạn không cần phải duy trì và lập chỉ mục một cột được tính

toán. Nếu cột không được duy trì, SQL Server sẽ tính toán giá trị trênÁy,

khi một truy vấn cần nó. Nếu bạn đang sử dụng Dịch vụ Phân tích Máy chủ SQL (SSAS), bạn có thể lưu trữ

cột vật lý trong cơ sở dữ liệu SSAS và do đó duy trì nó trong SSAS.

Cuối cùng, nếu bạn cần thông tin về dòng dõi, bạn cũng nên bao gồm các cột dòng dõi trong dimen của
mình.

46 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Thực hiện bảng dữ kiện


Sau khi triển khai thứ nguyên, bạn cần triển khai bảng dữ kiện trong kho dữ liệu của mình.

Bạn nên luôn triển khai các bảng dữ kiện sau khi triển khai các thứ nguyên của mình. Bảng dữ kiện nằm ở phía

"nhiều" của mối quan hệ với một thứ nguyên, do đó, phía gốc phải tồn tại nếu bạn

muốn tạo ràng buộc khóa ngoại.

Bạn nên phân vùng một bảng dữ kiện lớn để bảo trì dễ dàng hơn và hiệu suất tốt hơn. Bạn

sẽ tìm hiểu thêm về phân vùng bảng trong Bài 3 của chương này.

Các cột trong bảng dữ kiện bao gồm các khóa ngoại và các số đo. Kích thước trong cơ sở dữ liệu của bạn de

ne các khóa ngoại. Tất cả các khóa ngoại cùng nhau thường xác định duy nhất từng hàng của một dữ kiện

bàn. Nếu chúng xác định duy nhất từng hàng, thì bạn có thể sử dụng chúng làm khóa tổng hợp. Bạn

cũng có thể thêm một khóa chính thay thế bổ sung, cũng có thể là một khóa được kế thừa từ

một bảng hệ thống LOB. Ví dụ: nếu bạn bắt đầu xây dựng bảng dữ kiện bán hàng DW của mình từ LOB

bảng chi tiết đơn hàng bán hàng, bạn có thể sử dụng phím bảng chi tiết đơn hàng bán hàng LOB để bán hàng DW

bảng dữ kiện là tốt.

MẸO THI

Không nhất thiết tất cả các khóa ngoại cùng xác định duy nhất từng hàng của bảng dữ kiện.

Trong quá trình sản xuất, bạn có thể loại bỏ các ràng buộc khóa ngoại để đạt được hiệu suất tải tốt hơn.

Nếu có các ràng buộc khóa ngoại, SQL Server phải kiểm tra chúng trong quá trình tải. Tuy nhiên, chúng tôi khuyên

bạn nên giữ lại các ràng buộc khóa ngoại trong quá trình phát triển và

các giai đoạn thử nghiệm. Sẽ dễ dàng hơn để tạo sơ đồ cơ sở dữ liệu nếu bạn có khóa ngoài. Trong

Ngoài ra, trong quá trình kiểm tra, bạn sẽ gặp lỗi nếu các ràng buộc bị vi phạm. Lỗi thông báo cho bạn rằng

có điều gì đó sai với dữ liệu của bạn; khi vi phạm khóa ngoại xảy ra, rất có thể

rằng hàng cha từ một thứ nguyên bị thiếu đối với một hoặc nhiều hàng trong bảng dữ kiện. Này

các loại lỗi cung cấp cho bạn thông tin về chất lượng dữ liệu mà bạn đang xử lý.

Nếu bạn quyết định loại bỏ khóa ngoại trong quá trình sản xuất, bạn nên tạo quy trình ETL của mình để quy

trình này có khả năng phục hồi khi xảy ra lỗi khóa ngoại. Trong quy trình ETL của mình, bạn nên thêm một hàng

đến một thứ nguyên khi một khóa không xác định xuất hiện trong bảng dữ kiện. Đã thêm hàng trong một thứ nguyên

trong quá trình tải bảng thực tế được gọi là một thành viên được suy ra. Ngoại trừ các giá trị khóa, tất cả các giá trị

cột khác cho một hàng thành viên được suy luận trong một thứ nguyên đều không xác định tại thời gian tải bảng thực tế và
Chìa khóa

Bài 1: Triển khai thứ nguyên và bảng dữ kiện CHƯƠNG 2 47

www.it-ebooks.info
Machine Translated by Google

bạn nên đặt chúng thành NULL. Điều này có nghĩa là các cột thứ nguyên (ngoại trừ khóa) phải cho phép

NULLs. Trình hướng dẫn SCD của SQL Server Integration Services (SSIS) giúp bạn xử lý các ký tự ghi nhớ được

suy luận tại thời gian tải thứ nguyên. Bài toán thành viên được suy ra còn được gọi là bài toán thứ nguyên

đến muộn.
Chìa khóa

Giống như kích thước, bảng dữ kiện cũng có thể chứa các cột được tính toán. Bạn có thể tạo trước

nhiều phép tính và do đó đơn giản hóa các truy vấn. Và, tất nhiên, cũng giống như kích thước, bảng dữ kiện

có thể có các cột dòng dõi được thêm vào nếu bạn cần.

THỰC HÀNH Thực hiện các thứ nguyên và bảng dữ kiện

Trong thực tế này, bạn sẽ thực hiện một kho dữ liệu. Bạn sẽ sử dụng AdventureWorksDW2012

cơ sở dữ liệu mẫu làm nguồn cho dữ liệu của bạn. Bạn sẽ không tạo một vùng dữ liệu rõ ràng; bạn sẽ sử

dụng cơ sở dữ liệu mẫu AdventureWorksDW2012 làm

khu vực dàn dữ liệu.

Nếu bạn gặp sự cố khi hoàn thành bài tập, bạn có thể cài đặt các dự án đã hoàn thành

từ thư mục Giải pháp được cung cấp với nội dung đồng hành cho chương này và
bài học.

BÀI TẬP 1 Tạo cơ sở dữ liệu kho dữ liệu và trình tự

Trong bài tập đầu tiên, bạn sẽ tạo cơ sở dữ liệu SQL Server cho kho dữ liệu của mình.

1. Khởi động SSMS và kết nối với phiên bản SQL Server của bạn. Mở một cửa sổ truy vấn mới bằng cách

nhấp vào nút Truy vấn mới.

2. Từ ngữ cảnh của cơ sở dữ liệu chủ, hãy tạo một cơ sở dữ liệu mới có tên là TK463DW.

Trước khi tạo cơ sở dữ liệu, hãy kiểm tra xem nó có tồn tại hay không và loại bỏ nó nếu cần. Bạn nên

luôn kiểm tra xem một đối tượng có tồn tại hay không và loại bỏ nó nếu cần. Cơ sở dữ liệu nên có

các thuộc tính sau:

■ Nó phải có một dữ liệu duy nhất và một bản ghi duy nhất trong thư mục TK463. Bạn có thể tạo thư

mục này trong bất kỳ ổ nào bạn muốn.

■ Dữ liệu le phải có kích thước ban đầu là 300 MB và được kích hoạt tự động khai triển trong
10MB khối.

■ Kích thước của nhật ký phải là 50 MB, với 10 phần trăm tự động phát triển.

3. Sau khi bạn tạo cơ sở dữ liệu, hãy thay đổi mô hình khôi phục thành Đơn giản. Đây là com-

mã tạo cơ sở dữ liệu plete.

SỬ DỤNG chính;
NẾU DB_ID ('TK463DW') KHÔNG ĐẦY ĐỦ

DROP CƠ SỞ DỮ LIỆU TK463DW;


ĐI
TẠO CƠ SỞ DỮ LIỆU TK463DW

TRÊN CHÍNH

(NAME = N'TK463DW ', FILENAME = N'C: \ TK463 \ TK463DW.mdf', FILEGROWTH =


KÍCH THƯỚC = 307200KB , 10240KB)

48 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

ĐĂNG NHẬP

(NAME = N'TK463DW_log ', FILENAME = N'C: \ TK463 \ TK463DW_log.ldf',


KÍCH THƯỚC = 51200KB , FILEGROWTH = 10%);
ĐI
ALTER DATABASE TK463DW THIẾT LẬP PHỤC HỒI ĐƠN GIẢN VỚI NO_WAIT;
ĐI

4. Trong kho dữ liệu mới của bạn, hãy tạo một đối tượng chuỗi. Đặt tên nó là SeqCustomerDwKey.
Bắt đầu đánh số bằng 1 và sử dụng số gia tăng 1. Đối với các tùy chọn trình tự khác, hãy sử dụng

SQL Server mặc định. Bạn có thể sử dụng mã sau.

SỬ DỤNG TK463DW;
ĐI
NẾU OBJECT_ID ('dbo.SeqCustomerDwKey', 'SO') KHÔNG ĐẦY ĐỦ

DROP SEQUENCE dbo.SeqCustomerDwKey; ĐI

TẠO SEQUENCE dbo.SeqCustomerDwKey AS INT


BẮT ĐẦU VỚI 1

TĂNG BẰNG 1;
ĐI

BÀI TẬP 2 Tạo thứ nguyên

Trong bài tập này, bạn sẽ tạo thứ nguyên Khách hàng, thứ nguyên mà bạn sẽ phải

triển khai khá nhiều kiến thức đã học từ chương này và chương trước. bên trong
Cơ sở dữ liệu AdventureWorksDW2012, thứ nguyên DimCustomer, sẽ đóng vai trò là

nguồn cho thứ nguyên Khách hàng của bạn, bị ẩn một phần. Nó có tính năng tra cứu một cấp độ

bảng được gọi là DimGeography. Bạn sẽ hoàn toàn không chuẩn hóa thứ nguyên này. Ngoài ra, bạn còn

sẽ thêm các cột cần thiết để hỗ trợ thứ nguyên SCD Loại 2 và một vài cột được tính toán.

Ngoài thứ nguyên Khách hàng, bạn sẽ tạo thứ nguyên Sản phẩm và Ngày.

1. Tạo thứ nguyên Khách hàng. Nguồn cho thứ nguyên này là DimCustomer

từ cơ sở dữ liệu mẫu AdventureWorksDW2012. Thêm khóa thay thế

được gọi là CustomerDwKey và tạo ràng buộc khóa chính trên cột này.
Sử dụng Bảng 2-1 để biết thông tin cần thiết để xác định các cột của bảng và

điền bảng.

BẢNG 2-1 Thông tin cột cho thứ nguyên khách hàng

Tên cột Kiểu dữ liệu Vô hiệu Nhận xét

CustomerDwKey INT CÓ GIÁ TRỊ Phím thay thế; gán giá trị với một
sự phối hợp

CustomerKey INT CÓ GIÁ TRỊ

Họ và tên NVARCHAR (150) VÔ GIÁ TRỊ Kết hợp FirstName và LastName


từ DimCustomer

Đi a chi email NVARCHAR (50) VÔ GIÁ TRỊ

Bài 1: Triển khai thứ nguyên và bảng dữ kiện CHƯƠNG 2 49

www.it-ebooks.info
Machine Translated by Google

Tên cột Kiểu dữ liệu Vô hiệu Nhận xét

Ngày sinh NGÀY VÔ GIÁ TRỊ

Tình trạng hôn nhân NCHAR (1) VÔ GIÁ TRỊ

Giới tính NCHAR (1) VÔ GIÁ TRỊ

Giáo dục NVARCHAR (40) VÔ GIÁ TRỊ


Tiếng Anh Giáo dục từ DimCustomer

Nghề nghiệp NVARCHAR (100) VÔ GIÁ TRỊ


EnglishOccupation từ DimCustomer

Thành phố NVARCHAR (30) VÔ GIÁ TRỊ


Thành phố từ DimGeography

StateProvince NVARCHAR (50) VÔ GIÁ TRỊ StateProvinceName từ

DimGeography

CountryRegion NVARCHAR (50) VÔ GIÁ TRỊ


EnglishCountryRegionName từ
DimGeography

Tuổi tác
Thừa hưởng Thừa hưởng Cột được tính toán. Tính khoản chênh lệch
theo năm giữa Ngày sinh
và ngày hiện tại, và tùy chỉnh nó

trong ba nhóm:

■ Khi chênh lệch <= 40, nhãn

"Trẻ hơn"

■ Khi chênh lệch> 50, hãy dán nhãn


"Lớn hơn"

■ Nhãn khác “Tuổi trung niên”

CurrentFlag CHÚT CÓ GIÁ TRỊ Mặc định 1

2. Mã của bạn để tạo thứ nguyên Khách hàng phải giống với mã trong danh sách sau.

TẠO BẢNG dbo. Khách hàng

(CustomerDwKey INT NOT NULL,


CustomerKey INT NOT NULL, FullName NVARCHAR (150)
NULL, EmailAddress NVARCHAR (50) NULL,NULL,
Ngày sinh
MaritalStatus NCHAR (1)

NGÀY

VÔ GIÁ TRỊ,

50 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Giới tính NCHAR (1) VÔ GIÁ TRỊ,

Giáo dục NVARCHAR (40) KHÔNG ĐỦ,

Nghề nghiệp NVARCHAR (100) KHÔNG ĐỦ,

Thành phố NVARCHAR (30) KHÔNG ĐỦ,

StateProvince NVARCHAR (50) NULL,

CountryRegion NVARCHAR (50) NULL,


Tuổi AS
TRƯỜNG HỢP

KHI DATEDIFF (yy, Ngày sinh, CURRENT_TIMESTAMP) <= 40

THÌ 'Trẻ hơn'


KHI DATEDIFF (yy, Ngày sinh, CURRENT_TIMESTAMP)> 50
THÌ 'Cũ hơn'

ELSE 'Tuổi trung niên'


CHẤM DỨT,

BIT CurrentFlag KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA 1,

CONSTRAINT PK_Customers KEY CHÍNH (CustomerDwKey));

ĐI

3. Tạo thứ nguyên Sản phẩm. Nguồn cho thứ nguyên này là DimProducts

từ cơ sở dữ liệu mẫu AdventureWorksDW2012. Sử dụng Bảng 2-2 cho


thông tin bạn cần để tạo và điền bảng này.

BẢNG 2-2 Thông tin cột cho thứ nguyên sản phẩm

Tên cột dọc Loại dữ liệu Vô hiệu Nhận xét

ProductKey INT CÓ GIÁ TRỊ

Tên sản phẩm NVARCHAR (50) VÔ GIÁ TRỊ


EnglishProductName from DimProduct

Màu sắc NVARCHAR (15) VÔ GIÁ TRỊ

Kích thước
NVARCHAR (50) VÔ GIÁ TRỊ

Danh mục con Tên NVARCHAR (50) VÔ GIÁ TRỊ


EnglishProductSubcategoryName from
DimProductSubcategory

Tên danh mục NVARCHAR (50) VÔ GIÁ TRỊ


EnglishProductCategoryName from
DimProductCategory

Mã của bạn để tạo thứ nguyên Sản phẩm phải giống với mã trong danh sách giảm giá
của fol.

TẠO BẢNG dbo.Products (ProductKey

ProductName
INT CÓ GIÁ TRỊ,
NVARCHAR (50) KHÔNG ĐỦ,
Màu sắc NVARCHAR (15) KHÔNG ĐỦ,
Kích thước NVARCHAR (50) KHÔNG ĐỦ,

Danh mục con Tên NVARCHAR (50) NULL,

Tên danh mục NVARCHAR (50) KHÔNG ĐỦ,

CONSTRAINT PK_Products PRIMARY KEY (ProductKey));

ĐI

Bài 1: Triển khai thứ nguyên và bảng dữ kiện CHƯƠNG 2 51

www.it-ebooks.info
Machine Translated by Google

4. Tạo thứ nguyên Ngày. Nguồn cho thứ nguyên này là thứ nguyên DimDate

từ cơ sở dữ liệu mẫu AdventureWorksDW2012. Sử dụng Bảng 2-3 để biết thông tin

bạn cần tạo và điền bảng này.

BẢNG 2-3 Thông tin cột cho Thứ nguyên Ngày

Tên cột dọc Loại dữ liệu Vô hiệu Nhận xét

DateKey INT CÓ GIÁ TRỊ

FullDate NGÀY CÓ GIÁ TRỊ FullDateAlternateKey từ DimDate

ThángNumberName NVARCHAR (15) NULL Kết hợp thángNumberOfYear


(với các số 0 đứng đầu khi
số nhỏ hơn 10) và
EnglishMonthName từ DimDate

CalendarQuarter TINYINT VÔ GIÁ TRỊ

Năm dương lịch SMALLINT VÔ GIÁ TRỊ

Mã của bạn để tạo thứ nguyên Ngày phải tương tự với mã trong danh sách ing tiếp theo.

CREATE TABLE dbo.Dates


(DateKey NOT NULL,
FullDate NOT NULL,INT
MonthNumberName
NVARCHAR (15) NULL,
NGÀYCalendarQuarter
TINYINT
NULL, CalendarYear NULL, CONSTRAINT
PK_Dates PRIMARY KEY (DateKey));
SMALLINT

ĐI

BÀI TẬP 3 Tạo bảng dữ kiện

Trong ví dụ đơn giản về kho dữ liệu thực này, bạn sẽ tạo một bảng dữ kiện duy nhất.

Trong ví dụ này, bạn không thể sử dụng tất cả các khóa ngoại cùng nhau làm khóa chính tổng hợp, vì
nguồn của bảng này — bảng FactInternatSales từ dữ liệu AdventureWorksDW2012

cơ sở — có độ chi tiết thấp hơn so với bảng dữ kiện bạn đang tạo và khóa chính sẽ

được nhân bản. Bạn có thể sử dụng cột SalesOrderNumber và SalesOrderLineNumber làm khóa chính, như

trong bảng nguồn; tuy nhiên, để chỉ ra cách bạn có thể tự động đánh số một

với thuộc tính IDENTITY, bài tập này cho phép bạn thêm cột số nguyên của riêng mình với

tài sản này. Đây sẽ là chìa khóa đại diện của bạn.

1. Tạo bảng thông tin về InternetSales. Nguồn cho bảng thông tin này là FactInternetSales

bảng dữ kiện từ cơ sở dữ liệu mẫu AdventureWorksDW2012. Thêm khóa ngoại từ

ba kích thước được tạo ra trong bài tập 2 của bài học này. Thêm một cột số nguyên bằng cách

sử dụng thuộc tính IDENTITY và sử dụng nó làm khóa chính. Sử dụng Bảng 2-4 cho thông tin cần
thiết để xác định các cột của bảng.

52 CHƯƠNG 2 Triển khai kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

BẢNG 2-4 Thông tin cột cho Bảng Dữ kiện Bán hàng qua Internet

Tên cột dọc Kiểu dữ liệu Vô hiệu Nhận xét

InternetSalesKey INT CÓ GIÁ TRỊ NHẬN dạng (1,1)

CustomerDwKey INT CÓ GIÁ TRỊ Sử dụng khóa kinh doanh CustomerKey từ


Kích thước khách hàng, và kích thước phù hợp
giá trị của khóa thay thế CustomerDwKey từ thứ
nguyên Khách hàng

ProductKey INT CÓ GIÁ TRỊ

DateKey INT CÓ GIÁ TRỊ OrderDateKey từ FactInternetSales

Số lượng đặt hàng SMALLINT KHÔNG ĐẦY ĐỦ Mặc định 0

Sản lượng bán ra TIỀN KHÔNG ĐẦY ĐỦ Mặc định 0

UnitPrice TIỀN KHÔNG ĐẦY ĐỦ Mặc định 0

Giảm giá Số lượng FLOAT CÓ GIÁ TRỊ Mặc định 0

Mã của bạn để tạo bảng thông tin InternetSales phải tương tự như mã trong danh sách sau.

TẠO BẢNG dbo.InternetSales (InternetSalesKey

INT CustomerDwKey INT ProductKey DateKey

OrderQ Numberity SalesAmount KHÔNG ĐẦY ĐỦ IDENTITY (1,1),

CÓ GIÁ TRỊ,
INT CÓ GIÁ TRỊ,
INT CÓ GIÁ TRỊ,

SMALLINT NOT NULL DEFAULT 0,


TIỀN BẠC KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA 0,
UnitPrice TIỀN BẠC KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA 0,
Giảm giá Số lượng FLOAT KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA 0,

CONSTRAINT PK_InternetSales

KHÓA CHÍNH (InternetSalesKey));

ĐI

2. Thay đổi bảng thông tin InternetSales để thêm các ràng buộc khóa ngoại cho các mối quan hệ với tất cả

ba chiều. Mã được hiển thị trong danh sách sau đây.

ALTER TABLE dbo.InternetSales ADD CONSTRAINT

FK_InternetSales_Customers FOREIGN KEY (CustomerDwKey)

TÀI LIỆU THAM KHẢO dbo.Khách hàng (CustomerDwKey); ALTER


TABLE dbo.InternetSales ADD CONSTRAINT

FK_InternetSales_Products FOREIGN KEY (ProductKey)

TÀI LIỆU THAM KHẢO dbo.Products (ProductKey);


ALTER TABLE dbo.InternetSales ADD CONSTRAINT

FK_InternetSales_Dates FOREIGN KEY (DateKey)

TÀI LIỆU THAM KHẢO dbo.Dates (DateKey); ĐI

Bài 1: Triển khai thứ nguyên và bảng dữ kiện CHƯƠNG 2 53

www.it-ebooks.info
Machine Translated by Google

3. Tạo một sơ đồ cơ sở dữ liệu, như trong Hình 2-1. Đặt tên nó là InternetSalesDW và
lưu nó.

HÌNH 2-1 Lược đồ của kho dữ liệu thực hành đơn giản hóa.

4. Lưu le bằng mã T-SQL.

Tom tăt bai ho c


■ Trong bài học này, bạn đã học về cách triển khai kho dữ liệu. ■ Đối với

cơ sở dữ liệu kho dữ liệu, bạn nên sử dụng mô hình khôi phục Đơn giản. ■ Khi tạo cơ

sở dữ liệu, hãy phân bổ đủ không gian cho dữ liệu và ghi nhật ký để ngăn chặn

tự phát triển của les.

■ Sử dụng các phím thay thế ở các kích thước mà bạn mong đợi thay đổi SCD Loại 2. ■

Sử dụng các cột được tính toán.

Nhận xét bài học


Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn có thể tìm

câu trả lời cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả lời là đúng hay sai trong

phần “Câu trả lời” ở cuối chương này.

54 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

1. Bạn có thể sử dụng các đối tượng cơ sở dữ liệu và thuộc tính đối tượng nào để đánh số tự động?

(Chọn tất cả các áp dụng.)

A. Thuộc tính IDENTITY

B. đối tượng SEQUENCE

C. Ràng buộc CHÍNH CHÍNH

D. Ràng buộc KIỂM TRA

2. Bạn thêm cột nào vào bảng để hỗ trợ các thay đổi SCD Loại 2? (Chọn tất cả

ứng dụng.)

A. Thuộc tính thành viên

B. Thẻ hàng hiện tại

C. Các cột dòng dõi

D. Phím thay thế

3. Thành viên suy ra là gì?

A. Một hàng trong bảng dữ kiện được thêm vào khi tải thứ nguyên

B. Một hàng với các giá trị tổng hợp

C. Một hàng trong một thứ nguyên được thêm vào trong quá trình tải bảng thực tế

D. Một cột được tính toán trong một bảng dữ kiện

Bài học 2: Quản lý hiệu suất của một


Kho dữ liệu

Việc triển khai lược đồ Star bằng cách tạo bảng khá đơn giản. Tuy nhiên, khi nhà kho dữ liệu được đưa vào

sản xuất, các vấn đề phức tạp hơn sẽ xuất hiện. Kho dữ liệu thường rất lớn, vì vậy bạn có khả năng phải

đối phó với các vấn đề về hiệu suất. Trong bài học này, bạn sẽ học cách lập chỉ mục bảng DW một cách thích

hợp, sử dụng tính năng nén dữ liệu và tạo chỉ mục cột. Ngoài ra, bài học này giải quyết một số truy vấn T-

SQL điển hình cho môi trường nhà kho dữ liệu.

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 55

www.it-ebooks.info
Machine Translated by Google

Kích thước lập chỉ mục và bảng dữ kiện


SQL Server lưu trữ một bảng dưới dạng một đống hoặc dưới dạng một cây cân bằng (B-tree). Nếu bạn tạo một in-dex được phân

cụm, một bảng sẽ được lưu trữ dưới dạng B-tree. Như một phương pháp chung tốt nhất, bạn nên lưu trữ mọi bảng với
Chìa khóa

một chỉ mục được phân cụm, bởi vì việc lưu trữ bảng dưới dạng cây B có nhiều lợi thế, như được liệt kê ở đây:

■ Bạn có thể kiểm soát phân mảnh bảng bằng lệnh ALTER INDEX, bằng cách sử dụng

Tùy chọn REBUILD hoặc REORGANIZE.

■ Chỉ mục được phân cụm hữu ích cho các truy vấn phạm vi, vì dữ liệu được sắp xếp hợp lý trên

chìa khóa.

■ Bạn có thể di chuyển một bảng sang một nhóm khác bằng cách tạo lại chỉ mục được nhóm trên một nhóm khác khác nhau.

Bạn không cần phải bỏ bảng, như bạn sẽ di chuyển một đống.

■ Khóa phân cụm là một phần của tất cả các chỉ mục không hợp nhất. Nếu một bảng được lưu trữ dưới dạng một đống, thì

thay vào đó, hàng nhận dạng được lưu trữ trong các chỉ mục không phân biệt. Một cụm số nguyên ngắn gọn

khóa ngắn hơn lỗi nhận dạng hàng, do đó làm cho các chỉ mục không phân biệt dễ hiểu hơn.

■ Bạn không thể tham chiếu đến lỗi nhận dạng hàng trong các truy vấn, nhưng các khóa phân cụm thường là một phần của

truy vấn. Điều này làm tăng xác suất cho các truy vấn được đề cập. Các truy vấn được bao phủ là các truy vấn đọc tất

cả dữ liệu từ một hoặc nhiều chỉ mục không phân biệt, mà không cần chuyển đến bảng cơ sở.
Chìa khóa

Điều này có nghĩa là có ít lần đọc hơn và ít IO đĩa hơn.

Chỉ mục phân cụm đặc biệt thích hợp khi khóa phân nhóm ngắn. Tạo ra một

chỉ mục phân cụm với một khóa dài làm cho tất cả các chỉ mục không phân nhóm trở nên kém hiệu quả hơn. Ngoài ra,

khóa cụm phải là duy nhất. Nếu nó không phải là duy nhất, SQL Server làm cho nó trở thành duy nhất bằng cách thêm một số

tuần tự 4 byte được gọi là uniqui er để trùng lặp các khóa. Điều này làm cho các khóa dài hơn và tất cả các chỉ mục ít

hiệu quả hơn. Các phím phân cụm cũng sẽ ngày càng gia tăng. Với sự gia tăng không ngừng

khóa, chèn số lượng lớn được ghi nhật ký tối thiểu có thể thực hiện được ngay cả khi bảng đã chứa dữ liệu, miễn là bảng đó

không có thêm chỉ mục không phân nhóm.

Các khóa thay thế của kho dữ liệu là lý tưởng cho các chỉ mục được phân nhóm. Bởi vì bạn là một

ai de nes họ, bạn có thể de ne họ một cách khéo léo nhất có thể. Sử dụng số nguyên với các tùy chọn bering autonum. Ràng

buộc Khóa chính tạo ra một chỉ mục được phân nhóm theo mặc định.

MẸO THI

Chọn khóa thay thế tự động đánh số nguyên làm khóa chính được phân nhóm cho tất cả các

bảng DW, trừ khi có lý do thực sự chính đáng để quyết định khác.

Các truy vấn kho dữ liệu thường liên quan đến việc quét dữ liệu lớn và tổng hợp. Các tìm kiếm rất tự nhiên không phổ

biến đối với các báo cáo từ DW. Do đó, các chỉ mục không phân biệt thường

không giúp ích nhiều cho các truy vấn DW. Tuy nhiên, điều này không có nghĩa là bạn không nên tạo bất kỳ

các chỉ mục không hợp nhất trong DW của bạn.

56 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Thuộc tính của thứ nguyên không phải là ứng cử viên tốt cho khóa chỉ mục không phân biệt. Attri- butes được sử dụng

để xoay vòng và thường chỉ chứa một vài giá trị riêng biệt. Do đó, các truy vấn

rằng các giá trị thuộc tính lter over thường không được chọn lọc nhiều. Các chỉ mục không phân biệt trên thuộc tính dimen

sion không phải là một phương pháp hay.

Báo cáo DW có thể được tham số hóa. Ví dụ: một báo cáo DW có thể hiển thị doanh số bán hàng cho tất cả các loại cus

tomers hoặc chỉ cho một khách hàng duy nhất, có lẽ dựa trên lựa chọn thông số của người dùng cuối.

Đối với báo cáo một khách hàng, người dùng sẽ chọn khách hàng bằng cách chọn tên của nhân viên tùy chỉnh đó. Tên khách

hàng có tính chọn lọc, nghĩa là bạn chỉ truy xuất một số hàng nhỏ khi bạn phân loại theo tên khách hàng. Ví dụ: tên công

ty thường là duy nhất,

vì vậy khi bạn đặt tên công ty, bạn thường truy xuất một hàng duy nhất. Đối với các báo cáo như thế này,

có một chỉ mục không phân biệt trên một cột tên hoặc các cột có thể dẫn đến hiệu suất tốt hơn.

Thay vì chọn khách hàng theo tên, ví dụ: lựa chọn theo địa chỉ email có thể được bật trong báo cáo. Trong trường hợp đó,

một chỉ mục không hợp nhất trên cột địa chỉ email có thể hữu ích. Địa chỉ email trong một thứ nguyên là thuộc tính thành

viên trong thuật ngữ DW, như bạn đã thấy

trong Chương 1. Ngược lại với các thuộc tính, các cột tên và thuộc tính thành viên có thể là ngày tháng cho các khóa chỉ mục

không phân biệt; tuy nhiên, bạn chỉ nên tạo chỉ mục nếu các cột này

được sử dụng trong các truy vấn báo cáo.

Bạn có thể tạo một chỉ mục không phân biệt được lọc. Một chỉ mục được phân loại kéo dài một tập hợp con của cột

chỉ các giá trị và do đó áp dụng cho một tập hợp con các hàng trong bảng. Các chỉ mục không bao gồm đã lọc được sử dụng khi

một số giá trị trong cột hiếm khi xảy ra, trong khi các giá trị khác xảy ra thường xuyên. Trong như vậy

trường hợp, bạn sẽ chỉ tạo một chỉ mục được chọn lọc trên các giá trị hiếm. SQL Server sử dụng chỉ mục này

để tìm kiếm các giá trị hiếm nhưng thực hiện quét các giá trị thường xuyên. Các chỉ mục không hợp nhất đã lọc

có thể hữu ích không chỉ cho các cột tên và thuộc tính thành viên, mà còn cho các thuộc tính của một thứ nguyên.

Các truy vấn DW liên quan đến các phép nối giữa các thứ nguyên và một bảng dữ kiện. Hầu hết các phép nối DW sử dụng

khóa chính thứ nguyên — các mối quan hệ khóa ngoài của bảng dữ kiện. SQL Server có một ngôi sao đặc biệt

tham gia tối ưu hóa tham gia băm cho các truy vấn DW. SQL Server Query Optimizer nhận dạng dấu sao

nối các mẫu và sử dụng các phép nối băm bitmap. Trình tối ưu hóa truy vấn sử dụng các phép nối băm khi bạn tham gia

trên các cột không được sắp xếp từ cả hai bảng có liên quan đến một phép nối. Các phép nối băm có thể hoạt động song song

chủ đề. Với tính năng phân tích bitmap, chúng có thể hoạt động trên một tập hợp con các hàng từ một thứ nguyên và từ

một bảng dữ kiện trong mỗi chủ đề. Các phép tham gia băm bitmap có hiệu suất tốt hơn các loại liên kết khác cho các truy

vấn mệnh giá có mức quét lớn. Các truy vấn như vậy là điển hình cho môi trường kho dữ liệu. Vì

tham gia băm, bạn không lập chỉ mục các khóa ngoại của bảng dữ kiện.

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 57

www.it-ebooks.info
Machine Translated by Google

Các truy vấn song song không thường xuyên xảy ra khi có nhiều người dùng đồng thời được kết nối

vào SQL Server, điều này thường xảy ra đối với các tình huống OLTP. Tuy nhiên, ngay cả trong kịch bản DW, bạn

chỉ có thể có các truy vấn với các kế hoạch tuần tự. Nếu các truy vấn tuần tự này giải quyết với

lượng dữ liệu cũng vậy, sau đó hợp nhất hoặc các phép nối vòng lặp lồng nhau có thể nhanh hơn các phép nối băm.

Cả hai vòng lặp hợp nhất và lồng nhau đều tham gia hưởng lợi từ các chỉ mục trên các khóa ngoại của bảng dữ kiện. Đạt được

hợp nhất và các phép nối vòng lặp lồng nhau có thể là một lý do để tạo các chỉ mục không hợp nhất trên các khóa ngoại của bảng

dữ kiện. Tuy nhiên, hãy đảm bảo rằng bạn phân tích khối lượng công việc của mình kỹ lưỡng trước khi tạo các chỉ mục không hợp

nhất trên các khóa ngoại của bảng thông tin; hãy nhớ rằng phần lớn DW

truy vấn liên quan đến việc quét một lượng lớn dữ liệu. Như một phương pháp chung tốt nhất, bạn nên sử dụng càng ít chỉ mục

không phân tán trong kho dữ liệu của mình càng tốt.

Số lượt xem được lập chỉ mục

Bạn có thể tối ưu hóa các truy vấn tổng hợp dữ liệu và thực hiện nhiều phép nối bằng cách lưu trữ vĩnh viễn dữ liệu đã tổng

hợp và đã kết hợp. Ví dụ: bạn có thể tạo một bảng mới với

đã kết hợp và tổng hợp dữ liệu và sau đó duy trì bảng đó trong quá trình ETL của bạn.

Tuy nhiên, tạo bảng bổ sung cho dữ liệu được kết hợp và tổng hợp không phải là phương pháp hay nhất,

bởi vì sử dụng các bảng này có nghĩa là bạn phải thay đổi các truy vấn báo cáo. May mắn thay, ở đó

là một tùy chọn khác để lưu trữ các bảng đã kết hợp và tổng hợp. Bạn có thể tạo chế độ xem với

truy vấn kết hợp và tổng hợp dữ liệu. Sau đó, bạn có thể tạo một chỉ mục theo nhóm trên chế độ xem

có được một chế độ xem được lập chỉ mục. Với lập chỉ mục, bạn đang hiện thực hóa một chế độ xem. Trong Ấn bản Doanh nghiệp của

Chìa khóa
SQL Server 2012, SQL Server Query Optimizer sử dụng chế độ xem được lập chỉ mục tự động — mà không cần

thay đổi truy vấn. SQL Server cũng tự động duy trì các dạng xem được lập chỉ mục. Tuy nhiên, để tăng tốc

tải dữ liệu lên, bạn có thể giảm hoặc tắt chỉ mục trước khi tải và sau đó tạo lại hoặc xây dựng lại nó sau khi tải.

58 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Chế độ xem được lập chỉ mục có nhiều hạn chế, hạn chế và điều kiện tiên quyết, bạn nên tham khảo

Sách Trực tuyến cho SQL Server 2012 để biết chi tiết về chúng. Tuy nhiên, bạn có thể chạy một bài kiểm tra đơn giản

điều đó cho thấy các chế độ xem được lập chỉ mục có thể hữu ích như thế nào. Truy vấn sau đây tổng hợp SalesAmount

trên cột ProductKey của bảng FactInternetSales trong cơ sở dữ liệu mẫu AdventureWorks DW2012. Mã này cũng đặt

STATISTICS IO thành ON để đo IO.

SỬ DỤNG AdventureWorksDW2012;
ĐI
ĐẶT THỐNG KÊ IO ON;
ĐI

CHỌN ProductKey,
SUM (SalesAmount) NHƯ Doanh số,
COUNT_BIG (*) AS NumberOfRows
TỪ NHÓM dbo.FactInternetSales

THEO ProductKey; ĐI

Truy vấn tạo ra 1.036 lần đọc logic trong bảng FactInternetSales. Bạn có thể tạo một chế độ xem

từ truy vấn này và lập chỉ mục nó, như được hiển thị trong đoạn mã sau.

TẠO CHẾ ĐỘ XEM dbo.SalesByProduct VỚI


SCHEMABINDING AS SELECT ProductKey, SUM

(SalesAmount) AS Sales, COUNT_BIG (*) AS

NumberOfRows

TỪ dbo.FactInternetSales

NHÓM THEO ProductKey;


ĐI

TẠO CHỈ SỐ ĐƯỢC ĐIỀU CHỈNH DUY NHẤT CLU_SalesByProduct TRÊN

dbo.SalesByProduct (ProductKey); ĐI

Lưu ý rằng chế độ xem phải được tạo bằng tùy chọn SCHEMABINDING nếu bạn muốn lập chỉ mục

nó. Ngoài ra, bạn phải sử dụng hàm tổng hợp COUNT_BIG. Xem các điều kiện tiên quyết cho

dạng xem được lập chỉ mục trong Sách Trực tuyến dành cho SQL Server 2012 để biết chi tiết. Tuy nhiên, sau khi tạo

xem và chỉ mục, thực hiện lại truy vấn.

CHỌN ProductKey,
SUM (SalesAmount) NHƯ Doanh số,
COUNT_BIG (*) AS NumberOfRows
TỪ dbo.FactInternetSales

NHÓM THEO ProductKey;


ĐI

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 59

www.it-ebooks.info
Machine Translated by Google

Bây giờ truy vấn chỉ thực hiện hai lần đọc logic trong dạng xem SalesByProduct. Trình tối ưu hóa Truy vấn

đã phát hiện ra rằng đối với truy vấn này, một chế độ xem được lập chỉ mục tồn tại và nó đã sử dụng các lợi ích

của chế độ xem in dexed mà không đề cập trực tiếp đến nó. Sau khi phân tích chế độ xem được lập chỉ mục, bạn nên làm sạch

thiết lập cơ sở dữ liệu AdventureWorksDW2012 của bạn bằng cách chạy đoạn mã sau.

DROP XEM dbo.SalesByProduct; ĐI

Sử dụng các kỹ thuật truy vấn thích hợp

Không có tối ưu hóa nối có thể giúp ích nếu bạn viết các truy vấn DW không hợp lý. Một ví dụ điển hình về điển hình

Truy vấn DW là một truy vấn liên quan đến việc chạy các tổng. Bạn có thể sử dụng tự nối không trang bị cho các truy vấn như vậy.

Ví dụ sau đây cho thấy một truy vấn tính toán tổng số đang chạy trên tiêu chí Giới tính cho những khách hàng

có CustomerKey nhỏ hơn hoặc bằng 12.000 bằng cách sử dụng SalesAmount

thước đo của bảng FactInternetSales trong cơ sở dữ liệu mẫu AdventureWorksDW2012. Như

được hiển thị trong mã, bạn có thể đo lường IO thống kê để hiểu cơ bản về truy vấn

màn biểu diễn.

ĐẶT THỐNG KÊ IO ON;


ĐI

- Truy vấn với tự tham gia


VỚI InternetSalesGender AS

(CHỌN ISA.CustomerKey, C.Gender,


ISA.SalesOrderNumber + CAST (ISA.SalesOrderLineNumber AS CHAR (1))
AS OrderLineNumber,
ISA.SalesAmount
TỪ dbo.FactInternetSales AS ISA
INNER THAM GIA dbo.DimCustomer AS C

ON ISA.CustomerKey = C.CustomerKey WHERE


ISA.CustomerKey <= 12000)

CHỌN ISG1.Gender, ISG1.OrderLineNumber, MIN


(ISG1.SalesAmount), SUM (ISG2.SalesAmount) AS RunningTotal TỪ
InternetSalesGender AS ISG1
INNER THAM GIA InternetSalesGender AS ISG2
TRÊN ISG1.Gender = ISG2.Gender
VÀ ISG1.OrderLineNumber> = ISG2.OrderLineNumber
NHÓM THEO ISG1.Gender, ISG1.OrderLineNumber ORDER
THEO ISG1.Gender, ISG1.OrderLineNumber;

Truy vấn trả về 6.343 hàng và thực hiện 2.286 lần đọc logic trong FactInternetSales

bảng, 124 lần đọc lôgic trong bảng DimCustomer và 5,015 lần đọc lôgic trong Bảng làm việc, là một bảng làm việc

mà SQL Server đã tạo trong quá trình thực thi truy vấn.

60 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Bạn có thể viết lại truy vấn và sử dụng các chức năng cửa sổ SQL Server 2012 mới. Đoạn mã ing

tiếp theo hiển thị truy vấn được viết lại.

- Truy vấn với chức năng cửa sổ


VỚI InternetSalesGender AS

(CHỌN ISA.CustomerKey, C.Gender,


ISA.SalesOrderNumber + CAST (ISA.SalesOrderLineNumber AS CHAR (1))

AS OrderLineNumber,
ISA.SalesAmount

TỪ dbo.FactInternetSales AS ISA

INNER THAM GIA dbo.DimCustomer AS C

TRÊN ISA.CustomerKey = C.CustomerKey

WHERE ISA.CustomerKey <= 12000)

CHỌN ISG.Gender, ISG.OrderLineNumber, ISG.SalesAmount,

SUM (ISG.SalesAmount)

HẾT (PHẦN CỦA ISG.Gender


ĐẶT HÀNG THEO ISG.OrderLineNumber

CÁC CON ĐƯỜNG GIỮA CHỮA CHUẨN BỊ CHƯA BẮT ĐẦU

VÀ ROW HIỆN TẠI) AS RunningTotal


TỪ InternetSalesGender AS ISG

ĐẶT HÀNG BỞI ISG.Gender, ISG.OrderLineNumber; ĐI

Truy vấn này cũng trả về 6.343 hàng và thực hiện 1.036 lần đọc logic trong FactInternet
Bảng bán hàng, 57 lần đọc logic trong bảng DimCustomer, nhưng không có lần đọc logic nào trong Bảng làm việc.

Và truy vấn thứ hai này thực thi nhanh hơn nhiều so với truy vấn đầu tiên — ngay cả khi bạn chạy truy vấn đầu tiên

mà không cần đo lường số liệu thống kê IO.

Nén dữ liệu
SQL Server hỗ trợ nén dữ liệu. Nén dữ liệu làm giảm kích thước của cơ sở dữ liệu,
giúp cải thiện hiệu suất truy vấn vì các truy vấn trên dữ liệu nén đọc ít hơn
các trang từ đĩa và do đó sử dụng ít IO hơn. Tuy nhiên, việc nén dữ liệu yêu cầu
thêm nguồn CPU để cập nhật, vì dữ liệu phải được giải nén trước và nén sau khi cập nhật.
Do đó, tính năng nén dữ liệu phù hợp với các tình huống lưu trữ dữ liệu trong đó dữ liệu
chủ yếu được đọc và chỉ thỉnh thoảng được cập nhật.

SQL Server hỗ trợ ba triển khai nén:

■ Nén hàng

■ Nén trang

■ Nén Unicode

Nén hàng làm giảm chi phí siêu dữ liệu bằng cách lưu trữ các cột kiểu dữ liệu xed trong một

định dạng có độ dài thay đổi. Điều này bao gồm chuỗi và dữ liệu số. Nén hàng chỉ có một
Chìa khóa

tác động nhỏ đến tài nguyên CPU và thường thích hợp cho các ứng dụng OLTP.

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 61

www.it-ebooks.info
Machine Translated by Google

Nén trang bao gồm nén hàng, nhưng cũng thêm trước x và từ điển nén sions. Pre x nén lưu trữ các giá

trị trước x lặp lại từ một cột trong một cột đặc biệt

Chìa khóa cấu trúc thông tin nén (CI) ngay sau tiêu đề trang, thay thế

các giá trị trước x lặp lại với tham chiếu đến giá trị x trước tương ứng. Từ điển tính toán sion lưu

trữ các giá trị lặp lại ở bất kỳ đâu trong một trang trong vùng CI. Nén từ điển không

bị giới hạn trong một cột duy nhất.

Trong SQL Server, các ký tự Unicode chiếm trung bình hai byte. Nén Unicode

Chìa khóa
thay thế bộ nhớ một byte cho các ký tự Unicode không thực sự yêu cầu hai byte. Mặc dù đang chờ đối

chiếu, nén Unicode có thể tiết kiệm tới 50 phần trăm dung lượng nếu không

bắt buộc đối với chuỗi Unicode.

MẸO THI

Nén Unicode được áp dụng tự động khi bạn áp dụng báo chí hàng hoặc
trang.

Bạn có thể thu được khá nhiều từ việc nén dữ liệu trong kho dữ liệu. Các khóa ngoại là mười được

lặp lại nhiều lần trong một bảng dữ kiện. Kích thước lớn có chuỗi Unicode trong tên

cột, thuộc tính thành viên và thuộc tính có thể được hưởng lợi từ việc nén Unicode.

Chỉ mục Columnstore và Xử lý hàng loạt


SQL Server 2012 có một phương pháp mới để lưu trữ các chỉ mục không phân biệt. Ngoài lưu trữ hàng

thông thường, SQL Server 2012 có thể lưu trữ dữ liệu chỉ mục theo cột, trong đó được gọi là

chỉ mục columnstore. Các chỉ mục Columnstore có thể tăng tốc độ truy vấn kho dữ liệu lên một lượng lớn

nhân tố, từ 10 đến thậm chí 100 lần!


Chìa khóa

Chỉ mục cột cửa hàng chỉ là một chỉ mục không phân biệt khác trên một bảng. Con của Trình tối ưu hóa truy vấn

siders sử dụng nó trong giai đoạn tối ưu hóa truy vấn giống như nó thực hiện bất kỳ chỉ mục nào khác. Tất cả các bạn

phải làm để tận dụng tính năng này là tạo một chỉ mục cột trên một bảng.

Chỉ mục cột lưu trữ thường được nén nhiều hơn bất kỳ kiểu nén dữ liệu nào có thể nén lưu trữ hàng

— bao gồm nén trang và Unicode. Khi một truy vấn

tham chiếu đến một cột duy nhất là một phần của chỉ mục cột lưu trữ, sau đó SQL Server chỉ tìm nạp cột

đó từ đĩa; nó không tìm nạp toàn bộ hàng như với lưu trữ hàng. Điều này cũng làm giảm đĩa

IO và mức tiêu thụ bộ nhớ đệm. Các chỉ mục Columnstore sử dụng thuật toán nén riêng của chúng; bạn

không thể sử dụng nén hàng hoặc trang trên một chỉ mục cột.

Mặt khác, SQL Server phải trả về các hàng. Do đó, các hàng phải được tạo lại

khi bạn thực hiện một truy vấn. Việc tạo lại hàng này mất một thời gian và sử dụng một số CPU và

tài nguyên bộ nhớ. Các truy vấn rất chọn lọc chỉ chạm vào một vài hàng có thể không được hưởng lợi từ
chỉ mục cột.

Các chỉ mục Columnstore tăng tốc truy vấn kho dữ liệu nhưng không phù hợp với OLTP

khối lượng công việc. Do các vấn đề xây dựng lại hàng, các bảng có chứa chỉ mục cột

trở thành chỉ đọc. Nếu bạn muốn cập nhật một bảng có chỉ mục columnstore, trước tiên bạn phải

62 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

giảm chỉ số columnstore. Nếu bạn sử dụng phân vùng bảng, bạn có thể chuyển một phân vùng sang một bảng khác

nhau mà không có chỉ mục columnstore, cập nhật dữ liệu ở đó, tạo chỉ mục columnstore

trên bảng đó (có tập dữ liệu con nhỏ hơn), rồi chuyển sang dữ liệu bảng mới

trở lại một phân vùng của bảng gốc. Bạn sẽ học cách triển khai phân vùng bảng

với các chỉ mục columnstore trong Bài 3 của chương này.

Có ba chế độ xem danh mục mới mà bạn có thể sử dụng để thu thập thông tin về columnstore
chỉ mục:

■ sys.column_store_index_stats

■ sys.column_store_segment

■ sys.column_store_dictionaries

Chỉ mục columnstore được chia thành các đơn vị gọi là phân đoạn. Các phân đoạn được lưu trữ dưới dạng

Chìa khóa
các đối tượng lớn và bao gồm nhiều trang. Một phân đoạn là đơn vị truyền từ đĩa vào bộ nhớ.

Mỗi phân đoạn có siêu dữ liệu lưu trữ giá trị tối thiểu và lớn nhất của mỗi cột cho phân đoạn đó. Điều này

cho phép loại bỏ phân đoạn sớm trong công cụ lưu trữ. SQL Server chỉ tải những phân đoạn được yêu cầu bởi một

truy vấn vào bộ nhớ.

SQL Server 2012 bao gồm một cải tiến quan trọng khác để xử lý truy vấn. Trong xử lý chế độ hàng loạt,

Chìa khóa
SQL Server xử lý dữ liệu theo lô thay vì xử lý một hàng tại một

thời gian. Trong SQL Server 2012, một lô đại diện cho khoảng 1000 hàng dữ liệu. Mỗi cột trong

một lô được lưu trữ dưới dạng vectơ trong một vùng bộ nhớ riêng biệt, có nghĩa là quá trình nhập chế độ

hàng loạt dựa trên vectơ. Xử lý chế độ hàng loạt chỉ làm gián đoạn bộ xử lý có siêu dữ liệu một lần

mỗi lô thay vì một lần mỗi hàng, như trong xử lý chế độ hàng, giúp giảm gánh nặng cho CPU

đáng kể.

Bạn có thể xác định xem SQL Server có sử dụng chế độ xử lý hàng loạt hay không bằng cách phân tích truy vấn

kế hoạch thực hiện. Có hai thuộc tính toán tử mới trong Kế hoạch thực thi thực tế: Chế độ thực thi ước tính

và Chế độ thực thi thực tế. Xử lý chế độ hàng loạt chỉ khả dụng cho một danh sách giới hạn các nhà khai thác:

■ Bộ lọc

■ Dự án

■ Quét

■ Tổng hợp băm cục bộ (một phần)

■ Băm tham gia bên trong

■ (Hàng loạt) xây dựng bảng băm

Xử lý chế độ hàng loạt đặc biệt hữu ích cho các truy vấn kho dữ liệu khi được kết hợp

với phép tham gia băm có phân loại bitmap trong một mô hình nối sao.

Chỉ mục Columnstore có một số hạn chế:

■ Chỉ có thể tách riêng các chỉ mục Columnstore.

■ Bạn chỉ có thể có một chỉ mục cột lưu trữ trên mỗi bảng.

■ Nếu bảng của bạn được phân vùng, chỉ mục cột lưu trữ phải được căn chỉnh phân vùng.

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 63

www.it-ebooks.info
Machine Translated by Google

■ Không cho phép lập chỉ mục Columnstore trên các chế độ xem đã lập chỉ mục.

■ Chỉ mục cột không được là một chỉ mục được lọc.

■ Có các giới hạn về kiểu dữ liệu bổ sung cho các chỉ mục của columnstore.

Bạn nên sử dụng một chỉ mục cột trong bảng dữ kiện của mình, đặt tất cả các cột của bảng dữ kiện

trong một chỉ mục columnstore. Ngoài các bảng dữ kiện, các kích thước rất lớn cũng có thể được hưởng lợi
từ các chỉ mục của Columnstore. Không sử dụng chỉ mục columnstore cho các kích thước nhỏ. Khác

các phương pháp hay nhất cho chỉ mục columnstore bao gồm những điều sau:

■ Sử dụng các chỉ mục columnstore cho

■ Đọc hầu hết các khối lượng công

việc. ■ Cập nhật bổ sung dữ liệu mới. ■ Các

công việc cho phép phân vùng hoặc thả / xây dựng lại chỉ mục. ■ Các truy vấn

thường quét và tổng hợp nhiều dữ liệu.

■ Không sử dụng chỉ mục cột trong kho khi

■ Bạn cập nhật dữ liệu thường xuyên. ■ Việc

chuyển đổi phân vùng hoặc xây dựng lại các chỉ mục không ảnh hưởng đến công việc của bạn.

■ Khối lượng công việc của bạn chủ yếu bao gồm các truy vấn tra cứu nhỏ.

THỰC HÀNH Tải dữ liệu và sử dụng nén dữ liệu và


Chỉ mục Columnstore

Trong bài thực hành này, bạn sẽ tải dữ liệu vào kho dữ liệu mà bạn đã tạo trong phần thực hành ở Bài 1 của

chương này. Bạn sẽ sử dụng cơ sở dữ liệu mẫu AdventureWorksDW2012 làm nguồn cho dữ liệu của mình. Sau khi dữ

liệu được tải, bạn sẽ áp dụng nén dữ liệu và tạo chỉ mục cột lưu trữ.

Nếu bạn gặp sự cố khi hoàn thành bài tập, bạn có thể cài đặt các dự án đã hoàn thành

từ thư mục Giải pháp cho chương này và bài học được cung cấp với nội dung đi kèm.

64 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

BÀI TẬP 1 Tải kho dữ liệu của bạn

Trong bài tập đầu tiên, bạn sẽ tải dữ liệu vào kho dữ liệu của mình.

1. Nếu bạn đã đóng SSMS, hãy khởi động nó và kết nối với phiên bản SQL Server của bạn. Mở một truy vấn mới

bằng cách nhấp vào nút Truy vấn Mới.

2. Kết nối với cơ sở dữ liệu TK463DW của bạn. Tải thứ nguyên Khách hàng bằng cách sử dụng thông tin-

mation từ Bảng 2-5 (bảng này giống với Bảng 2-1 trong phần thực hành cho Bài 1 của bảng này

chương).

BẢNG 2-5 Thông tin cột cho thứ nguyên khách hàng

Tên cột dọc Loại dữ liệu Vô hiệu Nhận xét

CustomerDwKey INT CÓ GIÁ TRỊ Phím thay thế; gán giá trị với một
sự phối hợp

CustomerKey INT CÓ GIÁ TRỊ Kết hợp FirstName và LastName


từ DimCustomer

Họ và tên NVARCHAR (150) VÔ GIÁ TRỊ

Đi a chi email NVARCHAR (50) VÔ GIÁ TRỊ

Ngày sinh NGÀY VÔ GIÁ TRỊ

Tình trạng hôn nhân NCHAR (1) VÔ GIÁ TRỊ

Giới tính NCHAR (1) VÔ GIÁ TRỊ

Giáo dục NVARCHAR (40) VÔ GIÁ TRỊ


Tiếng Anh Giáo dục từ DimCustomer

Nghề nghiệp NVARCHAR (100) VÔ GIÁ TRỊ


EnglishOccupation từ DimCustomer

Thành phố NVARCHAR (30) VÔ GIÁ TRỊ


Thành phố từ DimGeography

StateProvince NVARCHAR (50) VÔ GIÁ TRỊ StateProvinceName từ

DimGeography

CountryRegion NVARCHAR (50) VÔ GIÁ TRỊ


EnglishCountryRegionName từ
DimGeography

Tuổi tác
Thừa hưởng Thừa hưởng Cột được tính toán. Tính khoản chênh lệch
theo năm giữa Ngày sinh
và ngày hiện tại, và tùy chỉnh nó

trong ba nhóm:

■ Khi chênh lệch <= 40, nhãn

"Trẻ hơn"

■ Khi chênh lệch> 50, hãy dán nhãn


"Lớn hơn"

■ Nhãn khác “Tuổi trung niên”

CurrentFlag CHÚT CÓ GIÁ TRỊ Mặc định 1

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 65

www.it-ebooks.info
Machine Translated by Google

Truy vấn tải được hiển thị trong đoạn mã sau.

CHÈN VÀO dbo.Khách hàng

(CustomerDwKey, CustomerKey, FullName,


EmailAddress, Birthdate, MaritalStatus, Gender,
Education, Career, City, StateProvince, CountryRegion)

LỰA CHỌN

GIÁ TRỊ TIẾP THEO CHO dbo.SeqCustomerDwKey AS CustomerDwKey, C.CustomerKey,

C.FirstName +
' '
+ C.LastName AS FullName,
C.EmailAddress, C.BirthDate, C.MaritalStatus, C.Gender,
C.EnglishEducation, C.EnglishOccupation, G.City, G.StateProvinceName,
G.EnglishCountryRegionName
TỪ AdventureWorksDW2012.dbo.DimCustomer AS C

INNER JOIN AdventureWorksDW2012.dbo.DimGeography AS G ON C.GeographyKey


= G.GeographyKey; ĐI

3. Tải thứ nguyên Sản phẩm bằng cách sử dụng thông tin từ Bảng 2-6 (điều này tương tự

như Bảng 2-2 trong phần thực hành cho Bài 1 của chương này).

BẢNG 2-6 Thông tin cột cho thứ nguyên sản phẩm

Tên cột dọc Loại dữ liệu Vô hiệu Nhận xét

ProductKey INT CÓ GIÁ TRỊ

Tên sản phẩm NVARCHAR (50) KHÔNG CÓ EnglishProductName from DimProduct

Màu sắc NVARCHAR (15) KHÔNG CÓ

Kích thước
NVARCHAR (50) KHÔNG CÓ

Danh mục con Tên NVARCHAR (50) NULL EnglishProductSubcategoryName from


DimProductSubcategory

Tên danh mục NVARCHAR (50) KHÔNG CÓ EnglishProductCategoryName from


DimProductCategory

Truy vấn tải được hiển thị trong đoạn mã sau.

CHÈN VÀO dbo. Sản phẩm

(ProductKey, ProductName, Color, Size,


SubcategoryName, CategoryName)
CHỌN P.ProductKey, P.EnglishProductName, P.Color, P.Size,
S.EnglishProductSubcategoryName, C.EnglishProductCategoryName
TỪ AdventureWorksDW2012.dbo.DimProduct AS P

INNER JOIN AdventureWorksDW2012.dbo.DimProductSubcategory AS S ON


P.ProductSubcategoryKey = S.ProductSubcategoryKey INNER JOIN
AdventureWorksDW2012.dbo.DimProductCategory AS C ON S.ProductCategoryKey =
C.ProductCategoryKey; ĐI

4. Tải thứ nguyên Ngày bằng cách sử dụng thông tin từ Bảng 2-7 (điều này giống với

Bảng 2-3 trong phần luyện tập cho Bài 1 của chương này).

66 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

BẢNG 2-7 Thông tin cột cho Thứ nguyên Ngày

Tên cột dọc Loại dữ liệu Vô hiệu Nhận xét

DateKey INT CÓ GIÁ TRỊ

FullDate NGÀY CÓ GIÁ TRỊ FullDateAlternateKey từ DimDate

ThángNumberName NVARCHAR (15) NULL Kết hợp thángNumberOfYear


(với các số 0 đứng đầu khi
số nhỏ hơn 10) và
EnglishMonthName từ DimDate

CalendarQuarter TINYINT VÔ GIÁ TRỊ

Năm dương lịch SMALLINT VÔ GIÁ TRỊ

Truy vấn tải được hiển thị trong đoạn mã sau.

CHÈN VÀO dbo.Dates


(DateKey, FullDate, MonthNumberName,
CalendarQuarter, CalendarYear)
CHỌN DateKey, FullDateAlternateKey,
SUBSTRING (CHUYỂN ĐỔI (CHAR (8), FullDateAlternateKey, 112), 5, 2)
''
+ + EnglishMonthName,
CalendarQuarter, CalendarYear
TỪ AdventureWorksDW2012.dbo.DimDate; ĐI

5. Tải bảng thông tin InternetSales bằng cách sử dụng thông tin từ Bảng 2-8 (đây là

tương tự như Bảng 2-4 trong phần luyện tập cho Bài 1 của chương này).

BẢNG 2-8 Thông tin cột cho Bảng Dữ kiện Bán hàng qua Internet

Tên cột dọc Kiểu dữ liệu Vô hiệu Nhận xét

InternetSalesKey INT CÓ GIÁ TRỊ NHẬN dạng (1,1)

CustomerDwKey INT CÓ GIÁ TRỊ Sử dụng khóa kinh doanh CustomerKey từ


Kích thước khách hàng, và kích thước phù hợp
giá trị của khóa thay thế CustomerDwKey từ thứ
nguyên Khách hàng

ProductKey INT CÓ GIÁ TRỊ OrderDateKey từ FactInternetSales

DateKey INT CÓ GIÁ TRỊ

Số lượng đặt hàng SMALLINT KHÔNG ĐẦY ĐỦ Mặc định 0

Sản lượng bán ra TIỀN BẠC CÓ GIÁ TRỊ Mặc định 0

UnitPrice TIỀN BẠC CÓ GIÁ TRỊ Mặc định 0

Giảm giá TRÔI NỔI CÓ GIÁ TRỊ Mặc định 0

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 67

www.it-ebooks.info
Machine Translated by Google

Truy vấn tải được hiển thị trong đoạn mã sau.

CHÈN VÀO dbo.InternetSales

(CustomerDwKey, ProductKey, DateKey,


OrderQuantity, SalesAmount, UnitPrice,
ReduceAmount)
CHỌN C.CustomerDwKey,
FIS.ProductKey, FIS.OrderDateKey,
FIS.OrderQuantity, FIS.SalesAmount,
FIS.UnitPrice, FIS.DiscountAmount
TỪ AdventureWorksDW2012.dbo.FactInternetSales AS FIS
INNER THAM GIA dbo. Khách hàng NHƯ C

TRÊN FIS.CustomerKey = C.CustomerKey; ĐI

BÀI TẬP 2 Áp dụng nén dữ liệu và tạo chỉ mục Columnstore

Trong bài tập này, bạn sẽ áp dụng nén dữ liệu và tạo chỉ mục cột trên
Bảng thông tin InternetSales.

1. Sử dụng thủ tục lưu trữ hệ thống sp_spaceused để tính toán không gian được sử dụng bởi

Bảng InternetSales. Sử dụng mã sau.

EXEC sp_spaceused N'dbo.InternetSales ', @updateusage = N'TRUE'; ĐI

2. Bảng nên sử dụng khoảng 3.080 KB cho không gian dành riêng. Bây giờ sử dụng

Câu lệnh ALTER TABLE để nén bảng. Sử dụng tính năng nén trang, như được hiển thị trong

mã sau đây.

ALTER TABLE dbo.InternetSales

REBUILD WITH (DATA_COMPRESSION = PAGE);


ĐI

3. Đo lại không gian dành riêng.

EXEC sp_spaceused N'dbo.InternetSales ', @updateusage = N'TRUE'; ĐI

4. Bảng bây giờ sẽ sử dụng khoảng 1.096 KB cho không gian dành riêng. Bạn có thể thấy

mà bạn đã tiết kiệm gần hai phần ba không gian bằng cách sử dụng tính năng nén trang.

5. Tạo chỉ mục columnstore trên bảng InternetSales. Sử dụng mã sau.

TẠO COLUMNSTORE INDEX CSI_InternetSales


TRÊN dbo.InternetSales

(InternetSalesKey, CustomerDwKey, ProductKey, DateKey, OrderQuantity,


SalesAmount, UnitPrice, ReduceAmount);

ĐI

68 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

6. Bạn không có đủ dữ liệu để thực sự đo lường lợi thế của cột trụ
chỉ mục và xử lý hàng loạt. Tuy nhiên, bạn vẫn có thể viết một truy vấn nối các bảng

và tổng hợp dữ liệu để bạn có thể kiểm tra xem SQL Server có sử dụng chỉ mục columnstore hay không.

Đây là một ví dụ về một truy vấn như vậy.

CHỌN C.CountryRegion, P.CategoryName, D.CalendarYear, SUM (I.SalesAmount)


AS Bán hàng
TỪ dbo.InternetSales AS I
INNER THAM GIA dbo. Khách hàng NHƯ C

ON I.CustomerDwKey = C.CustomerDwKey INNER JOIN


dbo. Sản phẩm AS P

ON I.ProductKey = p.ProductKey
INNER JOIN dbo.Dates AS d ON

I.DateKey = D.DateKey GROUP BY

C.CountryRegion, P.CategoryName, D.CalendarYear ĐẶT HÀNG BỞI C.CountryRegion,


P.CategoryName, D.CalendarYear;

7. Kiểm tra kế hoạch thực hiện và xác định xem chỉ mục columnstore đã được sử dụng hay chưa.
(Đối với một bài kiểm tra thực tế, bạn nên sử dụng các bộ dữ liệu lớn hơn nhiều.)

8. Thật thú vị khi đo bao nhiêu không gian mà một chỉ mục columnstore chiếm dụng. Sử dụng
thủ tục hệ thống sp_spaceused một lần nữa.

EXEC sp_spaceused N'dbo.InternetSales ', @updateusage = N'TRUE'; ĐI

9. Lúc này không gian dành riêng phải là khoảng 1.560 KB. Bạn có thể thấy rằng al
mặc dù bạn đã sử dụng tính năng nén trang cho bảng, bảng vẫn được nén ít hơn chỉ mục columnstore.

Trong trường hợp này, chỉ mục columnstore chiếm khoảng một nửa không gian của bảng.

Tom tăt bai ho c


■ Trong bài học này, bạn đã học cách tối ưu hóa hiệu suất truy vấn kho dữ liệu.

■ Trong DW, bạn không nên sử dụng nhiều chỉ mục không phân biệt.

■ Sử dụng các cột thay thế số nguyên, nhỏ cho các khóa chính được phân nhóm.

■ Sử dụng các chế độ xem được lập chỉ mục.

■ Sử dụng các chỉ mục columnstore và khai thác xử lý hàng loạt.

Bài 2: Quản lý hiệu suất của một kho dữ liệu CHƯƠNG 2 69

www.it-ebooks.info
Machine Translated by Google

Nhận xét bài học


Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn có thể tìm câu trả

lời cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả lời là đúng hay sai trong phần “Câu trả

lời” ở cuối chương này.

1. SQL Server hỗ trợ những kiểu nén dữ liệu nào? (Chọn tất cả các áp dụng.)

A. Bitmap

B. Unicode

C. Hàng

D. Trang

2. Những nhà khai thác nào có thể hưởng lợi từ việc xử lý hàng loạt? (Chọn tất cả các áp dụng.)

A. Hash Tham gia

B. Hợp nhất Tham gia

C. Quét

D. Tham gia các vòng lặp lồng nhau

E. Bộ lọc

3. Tại sao bạn sẽ sử dụng các chế độ xem được lập chỉ mục? (Chọn tất cả các áp dụng.)

A. Để tăng tốc các truy vấn tổng hợp dữ liệu

B. Để tăng tốc độ tải dữ liệu

C. Để tăng tốc các truy vấn chọn lọc

D. Để tăng tốc các truy vấn liên quan đến nhiều phép nối

Bài 3: Tải và kiểm tra tải


Tải các bảng dữ kiện lớn có thể là một vấn đề. Bạn chỉ có một khoảng thời gian giới hạn để thực hiện tải, vì

vậy bạn cần phải tối ưu hóa hoạt động tải. Ngoài ra, bạn có thể được yêu cầu theo dõi tải trọng.

70 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Sử dụng phân vùng


Việc tải ngay cả những bảng dữ kiện rất lớn cũng không phải là vấn đề nếu bạn có thể thực hiện tải gia tăng.

Tuy nhiên, điều này có nghĩa là dữ liệu trong nguồn không bao giờ được cập nhật hoặc xóa; dữ liệu nên

chỉ được chèn vào. Điều này hiếm khi xảy ra với các ứng dụng LOB. Ngoài ra, ngay cả khi bạn có

khả năng thực hiện một tải gia tăng, bạn nên có một biện pháp bảo vệ ETL được tham số hóa tại chỗ để bạn có

thể tải lại các phần dữ liệu đã được tải trong các lần tải trước đó. Luôn có khả năng xảy ra sự cố trong hệ

thống nguồn, có nghĩa là

bạn sẽ phải tải lại dữ liệu lịch sử. Việc tải lại này sẽ yêu cầu bạn xóa một phần của

dữ liệu từ kho dữ liệu của bạn.

Việc xóa các phần lớn của bảng dữ kiện có thể tiêu tốn quá nhiều thời gian, trừ khi bạn thực hiện thao tác

xóa được ghi nhật ký tối thiểu. Thao tác xóa được ghi nhật ký tối thiểu có thể được thực hiện bằng cách sử dụng

lệnh TRUNCATE TABLE; tuy nhiên, lệnh này sẽ xóa tất cả dữ liệu khỏi bảng — và

xóa tất cả dữ liệu thường không được chấp nhận. Thông thường hơn, bạn chỉ cần xóa một phần dữ liệu.

Việc chèn một lượng lớn dữ liệu cũng có thể tiêu tốn quá nhiều thời gian. Bạn có thể thực hiện một đoạn

chèn được ghi nhật ký nhỏ, nhưng như bạn đã biết, các đoạn chèn được ghi nhật ký tối thiểu có một số hạn chế.

Trong số các hạn chế khác, một bảng phải trống, không có chỉ mục hoặc chỉ sử dụng chỉ mục được nhóm trên một

khóa ngày càng tăng (hoặc luôn giảm), để tất cả các lần chèn diễn ra ở một đầu

của chỉ mục. Tuy nhiên, bạn có thể muốn có một số chỉ mục trên bảng dữ kiện của mình — tại

ít nhất một chỉ mục cột. Với chỉ mục cột lưu trữ, tình hình thậm chí còn tồi tệ hơn — bảng

trở thành chỉ đọc.

Bạn có thể giải quyết tất cả những vấn đề này bằng cách phân vùng bảng. Bạn thậm chí có thể đạt được hiệu

suất truy vấn tốt hơn bằng cách sử dụng bảng được phân vùng, bởi vì bạn có thể tạo phân vùng trong các nhóm

khác nhau trên các ổ đĩa khác nhau, do đó song song các lần đọc. Bạn cũng có thể thực hiện bảo trì

các thủ tục trên một tập con các nhóm chân, và do đó chỉ trên một tập con các phân vùng. Theo cách đó, bạn

cũng có thể tăng tốc các nhiệm vụ bảo trì thường xuyên. Nhìn chung, các phân vùng có nhiều lợi ích.

Mặc dù bạn có thể phân vùng bảng trên bất kỳ thuộc tính nào, nhưng phân vùng theo ngày là hầu hết

mon trong các kịch bản kho dữ liệu. Bạn có thể sử dụng bất kỳ khoảng thời gian nào cho một phân vùng. Tùy

thuộc vào nhu cầu của bạn, khoảng thời gian có thể là một ngày, một tháng, một năm hoặc bất kỳ khoảng thời

gian nào khác. Bạn có thể có tới 15.000 phân vùng cho mỗi bảng trong SQL Server 2012. Bạn có thể tạo trước

tất cả các phân vùng hoặc bạn có thể sử dụng kịch bản cửa sổ trượt. Để biết thêm thông tin về

kịch bản cửa sổ trượt và cách tự động tải dữ liệu trong trường hợp này, hãy tham khảo SQLCAT

whitepaper, “Cách triển khai cửa sổ trượt tự động trong bảng phân vùng trên SQL

Máy chủ 2005 ”tại http://msdn.microsoft.com/en-us/library/aa964122(SQL.90).aspx.

Bài 3: Tải và Kiểm toán tải CHƯƠNG 2 71

www.it-ebooks.info
Machine Translated by Google

Ngoài bảng phân vùng, bạn cũng có thể phân vùng các chỉ mục. Bảng phân vùng và

các khái niệm chỉ mục bao gồm những điều sau:

■ Chức năng phân vùng Đây là một đối tượng ánh xạ các hàng thành các phân vùng bằng cách sử dụng các giá trị

từ các cột cụ thể c. Các cột được sử dụng cho hàm được gọi là col umns phân vùng. Một chức năng phân vùng

thực hiện ánh xạ logic.

■ Lược đồ phân vùng Một lược đồ phân vùng ánh xạ các phân vùng thành các nhóm chân. Một phân vùng

lược đồ thực hiện ánh xạ vật lý.

■ Chỉ mục được căn chỉnh Đây là chỉ mục được xây dựng trên cùng một lược đồ phân vùng với bảng cơ sở của nó.

Nếu tất cả các chỉ mục được căn chỉnh với bảng cơ sở của chúng, việc chuyển đổi phân vùng chỉ là hoạt động

kích hoạt siêu dữ liệu, vì vậy nó rất nhanh. Chỉ mục Columnstore phải được căn chỉnh với cơ sở của chúng

những cái bàn. Tất nhiên, các chỉ mục được đánh dấu là các chỉ mục được phân vùng khác với các bảng cơ sở

của chúng.

■ Loại bỏ phân vùng Đây là quy trình Trình tối ưu hóa Truy vấn trong đó SQL Server ac

chỉ dừng những phân vùng cần thiết để đáp ứng các bộ truy vấn.

■ Chuyển đổi phân vùng Đây là quá trình chuyển một khối dữ liệu từ một bảng hoặc

phân vùng sang bảng hoặc phân vùng khác. Bạn chuyển đổi dữ liệu bằng cách sử dụng ALTER TABLE

Lệnh T-SQL. Bạn có thể thực hiện các loại công tắc sau:

■ Gán lại tất cả dữ liệu từ một bảng không được phân vùng cho một phân vùng trống hiện có của một bảng

được phân vùng.

■ Chuyển một phân vùng của một bảng được phân vùng này sang một phân vùng của một bảng được phân vùng khác

bàn.

■ Gán lại tất cả dữ liệu từ một phân vùng của bảng được phân vùng cho một bảng không được phân vùng trống

hiện có.

MẸO THI

Đảm bảo rằng bạn hiểu rõ mối quan hệ giữa chỉ mục cột và phân vị bảng.

Bất cứ khi nào bạn tạo một bảng có phân vùng lớn, bạn nên tạo hai bảng bổ trợ không được lập chỉ mục

các bảng trống có cùng cấu trúc, bao gồm các ràng buộc và các tùy chọn nén dữ liệu.

Đối với một trong hai bảng này, hãy tạo ràng buộc kiểm tra để đảm bảo rằng tất cả dữ liệu từ

bảng ts chính xác với một phân vùng trống trong bảng dữ kiện của bạn. Ràng buộc phải được tạo

trên cột phân vùng. Bạn có thể có một chỉ mục cột lưu trữ trên bảng dữ kiện của mình, miễn là nó được căn chỉnh với

bảng.

Để xóa các phần lớn dữ liệu được ghi nhật ký tối thiểu, bạn có thể chuyển một phân vùng từ

bảng dữ kiện thành phiên bản bảng trống mà không có ràng buộc kiểm tra. Sau đó, bạn có thể cắt bớt bảng đó. Câu lệnh

TRUNCATE TABLE được ghi nhật ký tối thiểu. Bảng bổ trợ đầu tiên của bạn

được chuẩn bị để chấp nhận phân vùng tiếp theo từ bảng dữ kiện của bạn cho lần xóa ghi nhật ký tối thiểu tiếp theo.

72 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Đối với các lần chèn được ghi nhật ký tối thiểu, bạn có thể chèn hàng loạt dữ liệu mới vào bảng bổ trợ thứ hai,

cái có ràng buộc kiểm tra. Trong trường hợp này, thao tác INSERT có thể được giảm thiểu

đã đăng nhập vì bảng trống. Sau đó, bạn tạo một chỉ mục columnstore trên bảng bổ trợ này, sử dụng cấu trúc tương

tự như chỉ mục columnstore trên bảng dữ kiện của bạn. Bây giờ bạn có thể

chuyển dữ liệu từ bảng bổ trợ này sang một phân vùng của bảng dữ kiện của bạn. Cuối cùng, bạn thả chỉ mục col

umnstore trên bảng phụ và thay đổi ràng buộc kiểm tra để đảm bảo rằng tất cả dữ liệu cho lần tải tiếp theo có thể

được chuyển sang phân vùng trống tiếp theo của bảng dữ kiện của bạn.

Bảng phụ thứ hai của bạn đã được chuẩn bị cho các tải hàng loạt mới một lần nữa.

Dòng dữ liệu
Việc kiểm tra bằng cách thêm thông tin dòng dữ liệu cho các lần tải dữ liệu của bạn khá đơn giản. Bạn thêm các cột

riêng vào thứ nguyên và / hoặc bảng dữ kiện của mình, sau đó bạn chèn hoặc cập nhật giá trị của các cột này với mỗi

lần tải. Nếu bạn đang sử dụng SSIS làm công cụ ETL của mình, bạn có thể sử dụng

nhiều biến hệ thống SSIS để thêm thông tin dòng dõi vào dữ liệu của bạn ngay bây giờ.

Nếu bạn đang tải dữ liệu bằng các lệnh và thủ tục T-SQL, bạn có thể sử dụng hệ thống T-SQL

chức năng để có được thông tin dòng họ mong muốn. Truy vấn sau sử dụng các chức năng hệ thống

điều đó rất hữu ích để nắm bắt thông tin về dòng dõi.

LỰA CHỌN

APP_NAME () AS ApplicationName,
DATABASE_PRINCIPAL_ID () AS DatabasePrincipalId,
USER_NAME () AS DatabasePrincipalName,
SUSER_ID () AS ServerPrincipalId,
SUSER_SID () AS ServerPrincipalSID,
SUSER_SNAME () AS ServerPrincipalName,
CONNECTIONPROPERTY ('net_transport') AS TransportProtocol,
CONNECTIONPROPERTY ('client_net_address') NHƯ ClientNetAddress,
CURRENT_TIMESTAMP AS CurrentDateTime,
@@ ROWCOUNT AS RowsProcessedByLastCommand;
ĐI

Bên cạnh thông tin dòng dõi, bạn cũng có thể muốn ghi lại thông tin bổ sung về

toàn bộ tải, không chỉ thông tin cấp hàng. Ví dụ: bạn có thể muốn thêm thời gian

tại đó quá trình thực thi tải bắt đầu, khi kết thúc, số lượng hàng được chuyển, v.v.

trên. Bạn có thể tạo bảng ghi nhật ký tùy chỉnh và chèn thông tin này khi bắt đầu và kết thúc quy trình ETL. Nếu bạn

đang sử dụng SSIS làm công cụ ETL của mình, bạn có thể sử dụng ghi nhật ký tích hợp sẵn SSIS

khả năng lưu trữ thông tin mức tải này.

Bài 3: Tải và Kiểm toán tải CHƯƠNG 2 73

www.it-ebooks.info
Machine Translated by Google

THỰC HÀNH Thực hiện phân vùng bảng

Trong thực tế này, bạn kiểm tra việc sử dụng phân vùng bảng để tải dữ liệu được ghi nhật ký tối thiểu.

Nếu bạn gặp sự cố khi hoàn thành bài tập, bạn có thể cài đặt các dự án đã hoàn thành

từ thư mục Giải pháp cho chương này và bài học được cung cấp với nội dung đi kèm.

BÀI TẬP 1 Chuẩn bị bảng dữ kiện của bạn để phân vùng

Trong bài tập này, bạn sẽ tạo tất cả các đối tượng bạn cần để phân vùng, và sau đó bạn sẽ tải
chúng với dữ liệu.

1. Nếu bạn đã đóng SSMS, hãy khởi động nó và kết nối với phiên bản SQL Server của bạn. Mở một truy vấn mới

bằng cách nhấp vào nút Truy vấn Mới.

2. Kết nối với cơ sở dữ liệu TK463DW của bạn. Bỏ bảng InternetSales.

3. Tạo một chức năng phân vùng sẽ chia dữ liệu thành 10 phân vùng cho mỗi năm từ

từ năm 2000 đến năm 2009. Sử dụng kiểu dữ liệu nhỏ nhất có thể cho tham số của

cột phân vùng. Bạn có thể sử dụng mã sau.

TẠO CHỨC NĂNG PHẦN PfInternetSalesYear (TINYINT)

NHƯ TRÁI PHẢI CHO CÁC GIÁ TRỊ (1, 2, 3, 4, 5, 6, 7, 8, 9);


ĐI

4. Tạo một lược đồ phân vùng sẽ ánh xạ tất cả các phân vùng thành nhóm chính, như

được hiển thị trong đoạn mã sau.

TẠO SCHEME ĐỐI TÁC PsInternetSalesYear

NHƯ PHẦN PfInternetSalesYear

TẤT CẢ ĐẾN ([CHÍNH]);


ĐI

5. Tạo lại bảng FactInternetSales. Thêm một cột phân vùng. Sử dụng cùng một dữ liệu

nhập cho cột này như bạn đã sử dụng cho tham số của hàm phân vùng. Sử dụng

mã sau đây.

TẠO BẢNG dbo.InternetSales (InternetSalesKey

PcInternetSalesYear TINYINT NOT NULL,


INT
CustomerDwKey NOT NULL, ProductKey NOT KHÔNG ĐẦY ĐỦ IDENTITY (1,1),

NULL, NOT NULL, DateKey OrderQuantity SMALLINT NOT NULL


INT NULL DEFAULT
DEFAULT 0, SalesAmount MONEY NOT NULL0,DEFAULT
NOT

0, NOT NULL DEFAULT INT

INT

UnitPrice TIỀN BẠC

Giảm giá TRÔI NỔI

CONSTRAINT PK_InternetSales

TỪ KHÓA CHÍNH (InternetSalesKey, PcInternetSalesYear)

TRÊN PsInternetSalesYear (PcInternetSalesYear);


ĐI

74 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

6. Thêm khóa ngoại và nén dữ liệu cho bảng InternetSales.

ALTER TABLE dbo.InternetSales ADD CONSTRAINT

FK_InternetSales_Customers FOREIGN KEY (CustomerDwKey)


TÀI LIỆU THAM KHẢO dbo.Khách hàng (CustomerDwKey);
ALTER TABLE dbo.InternetSales ADD CONSTRAINT

FK_InternetSales_Products FOREIGN KEY (ProductKey)


TÀI LIỆU THAM KHẢO dbo.Products (ProductKey);
ALTER TABLE dbo.InternetSales ADD CONSTRAINT

FK_InternetSales_Dates FOREIGN KEY (DateKey)


TÀI LIỆU THAM KHẢO dbo.Dates (DateKey);
ĐI
ALTER TABLE dbo.InternetSales

REBUILD WITH (DATA_COMPRESSION = PAGE);


ĐI

7. Nạp dữ liệu vào bảng InternetSales. Chỉ trích xuất số năm cho DateKey
cột. Đảm bảo rằng bạn chỉ tải các năm sớm hơn năm 2008. Bạn có thể sử dụng mã giảm
giá fol.

CHÈN VÀO dbo.InternetSales

(PcInternetSalesYear, CustomerDwKey, ProductKey,


DateKey, OrderQuantity, SalesAmount, UnitPrice,
ReduceAmount)

LỰA CHỌN

CAST (SUBSTRING (CAST (FIS.OrderDateKey AS CHAR (8)), 3, 2)


NHƯ TINYINT)
AS PcInternetSalesYear,
C.CustomerDwKey, FIS.ProductKey,
FIS.OrderDateKey, FIS.OrderQuantity,
FIS.SalesAmount, FIS.UnitPrice, FIS.DiscountAmount

TỪ AdventureWorksDW2012.dbo.FactInternetSales AS FIS
INNER THAM GIA dbo. Khách hàng NHƯ C

TRÊN FIS.CustomerKey = C.CustomerKey Ở ĐÂU

CAST (SUBSTRING (CAST (FIS.OrderDateKey AS CHAR (8)), 3, 2)


NHƯ TINYINT) <8;
ĐI

8. Tạo lại chỉ mục columnstore của bảng InternetSales.

TẠO COLUMNSTORE INDEX CSI_InternetSales


TRÊN dbo.InternetSales

(InternetSalesKey, PcInternetSalesYear,
CustomerDwKey, ProductKey, DateKey,
Số lượng đặt hàng, Số lượng bán hàng,
Đơn vị Giá, Số tiền Giảm giá)
TRÊN PsInternetSalesYear (PcInternetSalesYear);
ĐI

Bài 3: Tải và Kiểm toán tải CHƯƠNG 2 75

www.it-ebooks.info
Machine Translated by Google

BÀI TẬP 2 Tải dữ liệu được ghi nhật ký tối thiểu vào một bảng được phân vùng

Trong bài tập này, bạn chuẩn bị một bảng cho dữ liệu mới, tải nó và sử dụng chuyển đổi phân vùng để gán

dữ liệu này vào một phân vùng của bảng dữ kiện được phân vùng của bạn.

1. Tạo một bảng mới có cùng cấu trúc với bảng InternetSales. Thêm một con séc

đi thẳng vào bàn này. Ràng buộc kiểm tra chỉ phải chấp nhận năm 8 (viết tắt của 2008) cho

cột phân vùng. Đây là mã.

TẠO BẢNG dbo.InternetSalesNew

InternetSalesKey INT KHÔNG ĐẦY ĐỦ IDENTITY (1,1),


PcInternetSalesYear TINYINT NOT NULL

KIỂM TRA (PcInternetSalesYear = 8),

CustomerDwKey INT CÓ GIÁ TRỊ,

ProductKey INT CÓ GIÁ TRỊ,

DateKey INT CÓ GIÁ TRỊ,

Số lượng đặt hàng SMALLINT NOT NULL DEFAULT 0,


Sản lượng bán ra TIỀN BẠC KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA 0,
UnitPrice TIỀN BẠC KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA 0,
Giảm giá TRÔI NỔI KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA 0,

CONSTRAINT PK_InternetSalesNew

KHÓA CHÍNH (InternetSalesKey, PcInternetSalesYear));

ĐI

2. Tạo các khóa ngoại tương tự và áp dụng các cài đặt nén dữ liệu tương tự như đối với
Bảng InternetSales.

BẢNG ALTER dbo.InternetSalesNỘI DUNG THÊM MỚI

FK_InternetSalesNew_Customers FOREIGN KEY (CustomerDwKey)

TÀI LIỆU THAM KHẢO dbo.Khách hàng (CustomerDwKey); BẢNG


ALTER dbo.InternetSalesNỘI DUNG THÊM MỚI

FK_InternetSalesNew_Products FOREIGN KEY (ProductKey)

TÀI LIỆU THAM KHẢO dbo.Products (ProductKey);


ALTER TABLE dbo.InternetSalesNew ADD CONSTRAINT

FK_InternetSalesNew_Dates FOREIGN KEY (DateKey)

TÀI LIỆU THAM KHẢO dbo.Dates (DateKey); ĐI

ALTER TABLE dbo.InternetSalesNew

REBUILD WITH (DATA_COMPRESSION = PAGE);


ĐI

3. Tải năm 2008 vào bảng InternetSalesNew.

CHÈN VÀO dbo.InternetSalesNew

(PcInternetSalesYear, CustomerDwKey,

ProductKey, DateKey,

Số lượng đặt hàng, Số lượng bán hàng,


Đơn vị Giá, Số tiền Giảm giá)
LỰA CHỌN

CAST (SUBSTRING (CAST (FIS.OrderDateKey AS CHAR (8)), 3, 2)


NHƯ TINYINT)

AS PcInternetSalesYear,

76 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

C.CustomerDwKey,
FIS.ProductKey, FIS.OrderDateKey,
FIS.OrderQuantity, FIS.SalesAmount,
FIS.UnitPrice, FIS.DiscountAmount
TỪ AdventureWorksDW2012.dbo.FactInternetSales AS FIS
INNER THAM GIA dbo. Khách hàng NHƯ C

TRÊN FIS.CustomerKey = C.CustomerKey Ở ĐÂU

CAST (SUBSTRING (CAST (FIS.OrderDateKey AS CHAR (8)), 3, 2)


NHƯ TINYINT) = 8;
ĐI

4. Tạo chỉ mục columnstore trên bảng InternetSalesNew.

TẠO COLUMNSTORE INDEX CSI_InternetSalesNew


TRÊN dbo.InternetSalesNew

(InternetSalesKey, PcInternetSalesYear,
CustomerDwKey, ProductKey, DateKey, OrderQuantity,
SalesAmount, UnitPrice, ReduceAmount);

ĐI

5. Kiểm tra số hàng trong các phân vùng của bảng InternetSales và số hàng trong bảng
InternetSalesNew.

LỰA CHỌN

$ PARTITION.PfInternetSalesYear (PcInternetSalesYear)
AS PartitionNumber,
COUNT (*) AS NumberOfRows
TỪ dbo.InternetSales
NHÓM THEO

$ PARTITION.PfInternetSalesYear (PcInternetSalesYear);
CHỌN COUNT (*) AS NumberOfRows TỪ
dbo.InternetSalesNew; ĐI

Không được có hàng nào sau phân vùng thứ bảy của bảng InternetSales và một số hàng
trong bảng InternetSalesNew.

6. Thực hiện chuyển đổi phân vùng. Sử dụng mã sau.

ALTER TABLE dbo.InternetSalesNew

CHUYỂN ĐỔI ĐẾN dbo.InternetSales PHẦN 8; ĐI

7. Kiểm tra lại số hàng trong các phân vùng của bảng InternetSales và số hàng trong bảng

InternetSalesNew.

Phải có hàng trong phân vùng thứ tám của bảng InternetSales và không có hàng nào trong
bảng InternetSalesNew.

8. Chuẩn bị bảng InternetSalesNew cho lần tải tiếp theo bằng cách thả cột

lập chỉ mục và thay đổi ràng buộc kiểm tra.

9. Lưu mã của bạn và thoát SSMS.

Bài 3: Tải và Kiểm toán tải CHƯƠNG 2 77

www.it-ebooks.info
Machine Translated by Google

Tom tăt bai ho c


■ Phân vùng bảng cực kỳ hữu ích cho các bảng dữ kiện lớn với các chỉ mục cột. ■ Chuyển đổi phân

vùng là một hoạt động siêu dữ liệu chỉ khi một chỉ mục được căn chỉnh với bảng cơ sở của nó. ■ Bạn

có thể thêm thông tin dòng dõi vào thứ nguyên và bảng dữ kiện của mình để kiểm tra các thay đổi

đối với DW của bạn ở cấp độ hàng.

Nhận xét bài học


Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn có thể

tìm câu trả lời cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả lời là đúng hay sai

trong phần “Câu trả lời” ở cuối chương này.

1. Đối tượng cơ sở dữ liệu ánh xạ các phân vùng của bảng thành các nhóm được gọi là a (n)

A. Chỉ mục được căn chỉnh

B. Chức năng phân vùng

C. Cột phân vùng

D. Lược đồ phân vùng

2. Muốn chuyển nội dung từ bảng không phân vùng sang bảng không phân vùng thì bảng không phân vùng

phải đáp ứng điều kiện gì? (Chọn tất cả các áp dụng.)

A. Nó phải có các ràng buộc giống như bảng được phân vùng.

B. Nó phải có cùng độ nén với bảng đã phân vùng.

C. Nó phải nằm trong một lược đồ PartitionedTables đặc biệt.

D. Nó phải có một ràng buộc kiểm tra trên cột phân vùng để đảm bảo rằng tất cả dữ liệu đi đến

chính xác một phân vùng của bảng được phân vùng.

E. Nó phải có các chỉ mục giống như bảng được phân vùng.

3. Hàm T-SQL nào sau đây không hữu ích lắm để nắm bắt dòng dõi
thông tin?

A. APP_NAME ()

B. USER_NAME ()

C. DEVICE_STATUS ()

D. SUSER_SNAME ()

Các tình huống tình huống

Trong các tình huống trường hợp sau, bạn áp dụng những gì đã học về truy vấn được tối ưu hóa và bảo

mật kho dữ liệu. Bạn có thể tìm câu trả lời cho những câu hỏi này trong phần “Câu trả lời” ở cuối

chương này.

78 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Tình huống trường hợp 1: Báo cáo DW chậm

Bạn đã tạo một kho dữ liệu và điền vào nó. Người dùng cuối đã bắt đầu sử dụng nó cho các báo cáo. Tuy nhiên,

họ cũng đã bắt đầu phàn nàn về hiệu suất của các báo cáo.

Một số báo cáo rất chậm tính toán tổng số đang chạy. Bạn cần trả lời những câu hỏi sau.

1. Bạn có thể thực hiện những thay đổi nào trong DW của mình để tăng tốc độ báo cáo?

2. Kiểm tra các truy vấn nguồn của các báo cáo với các tổng đang chạy có hợp lý không?

Tình huống trường hợp 2: Các vấn đề về quản trị DW

Người dùng cuối của bạn hài lòng với hiệu suất báo cáo DW. Tuy nhiên, khi nói chuyện với một DBA, bạn đã nhận

thấy các vấn đề tiềm ẩn. Nhật ký giao dịch DW tăng hơn 10 GB mỗi đêm. Ngoài ra, người dùng cuối đã bắt đầu tạo báo

cáo từ bảng dàn và các báo cáo này hiển thị dữ liệu lộn xộn. Người dùng cuối phàn nàn với DBA rằng họ không thể tin

tưởng DW của bạn nếu họ nhận được dữ liệu lộn xộn như vậy trong một báo cáo.

1. Bạn có thể giải quyết vấn đề nhật ký chạy trốn như thế nào?

2. Bạn có thể làm gì để ngăn người dùng cuối sử dụng bảng dàn?

Các phương pháp được đề xuất

Để giúp bạn nắm vững thành công các mục tiêu kỳ thi được trình bày trong chương này, hãy hoàn thành các nhiệm vụ

sau.

Thử nghiệm các phương pháp lập chỉ mục khác nhau

Đối với một số truy vấn, các chế độ xem được lập chỉ mục có thể là công cụ tăng hiệu suất tốt nhất. Đối với các

truy vấn khác, chỉ mục columnstore có thể thích hợp hơn. Vẫn còn các truy vấn khác sẽ được hưởng lợi từ các chỉ

mục không được phân cụm trên các khóa ngoại.

■ Thực hành 1 Viết một truy vấn tổng hợp cho việc bán hàng trên Internet trong cơ sở dữ liệu mẫu

AdventureWorkDW2012. Tạo chế độ xem được lập chỉ mục thích hợp và chạy truy vấn tổng hợp.

Kiểm tra IO thống kê và kế hoạch thực hiện.

■ Thực hành 2 Thả chế độ xem đã được lập chỉ mục và tạo một chỉ mục trong kho chuyên mục. Chạy truy vấn và

kiểm tra lại IO thống kê và kế hoạch thực thi.

■ Thực hành 3 Thả chỉ mục cột lưu trữ và tạo các chỉ mục không phân biệt trên tất cả các khóa thiết kế của

bảng dữ kiện được bao gồm trong các phép nối. Chạy truy vấn và kiểm tra lại IO thống kê và kế hoạch thực

thi.

■ Thực hành 4 Trong thứ nguyên DimCustomer của mẫu AdventureWorksDW2012

cơ sở dữ liệu, có một cột Suf x. Nó là NULL cho tất cả các hàng trừ ba hàng. Tạo một chỉ mục không được

phân nhóm trên cột này và kiểm tra các truy vấn đọc dữ liệu từ thứ nguyên DimCustomer bằng cách sử dụng

các lệnh khác nhau. Kiểm tra cách truy vấn thực hiện khi Suf x là NULL và khi Suf x được biết (không phải

là NULL).

Các thực hành được đề xuất CHƯƠNG 2 79

www.it-ebooks.info
Machine Translated by Google

Phân vùng bảng kiểm tra


Để hiểu cặn kẽ về phân vùng bảng, bạn nên kiểm tra nó với

các chỉ mục không được đánh dấu.

■ Thực hành 1 Phân vùng bảng FactInternetSales trong sam AdventureWorkDW2012

cơ sở dữ liệu ple. Tạo các chỉ mục không phân biệt được căn chỉnh trên tất cả các khóa ngoại của bảng

dữ kiện được bao gồm trong các phép nối của truy vấn từ thực tiễn trước đó. Chạy truy vấn và kiểm tra

kế hoạch thực thi.

■ Thực hành 2 Tạo các chỉ mục không phân biệt không dấu trên tất cả các khóa ngoại của bảng dữ kiện

có trong các phép nối của truy vấn từ thực hành trước. Chạy truy vấn và kiểm tra lại kế hoạch thực

thi.

80 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Câu trả lời

Phần này bao gồm các câu trả lời cho các câu hỏi ôn tập bài học và lời giải cho trường hợp quyền

trượng trong chương này.

Bài 1
1. Đáp án đúng: A và B

A. Đúng: Thuộc tính IDENTITY tự động đánh số các hàng.

B. Đúng: Bạn có thể sử dụng đối tượng SQL Server 2012 SEQUENCE mới cho

tự động đánh số.

C. Không chính xác: Các khóa chính được sử dụng để xác định duy nhất các hàng, không

dùng để đánh số tự động.

D. Không chính xác: Ràng buộc kiểm tra được sử dụng để thực thi tính toàn vẹn của dữ liệu, không phải để

tự động đánh số.

2. Đáp án đúng: B và D

A. Không chính xác: Thuộc tính thành viên là các cột thứ nguyên chỉ được sử dụng cho thông tin

bổ sung trên các báo cáo.

B. Đúng: Bạn cần có thẻ hiện tại để biểu thị hàng hiện tại khi bạn nhập

ment Những thay đổi SCD Loại 2.

C. Không chính xác: Các cột dòng dõi được sử dụng, như tên của chúng, để theo dõi dòng dõi
thông tin.

D. Đúng: Bạn cần một khóa thay thế mới khi thực hiện các thay đổi SCD Loại 2.

3. Đáp án đúng: C

A. Không chính xác: Bạn không thêm hàng vào bảng dữ kiện trong quá trình tải thứ nguyên.

B. Không chính xác: Bạn không tạo các hàng có giá trị tổng hợp.

C. Đúng: Một hàng trong một thứ nguyên được thêm vào trong quá trình tải bảng thực tế được gọi là một hàng được suy ra

thành viên.

D. Sai: Một cột được tính toán chỉ là một cột được tính toán, không phải là một phần tử được suy ra.

Bài 2
1. Các câu trả lời đúng: B, C và D

A. Không chính xác: SQL Server không hỗ trợ nén bitmap.

B. Đúng: SQL Server hỗ trợ nén Unicode. Nó được áp dụng tự động

khi bạn sử dụng nén hàng hoặc trang.

C. Đúng: SQL Server hỗ trợ nén hàng.

D. Đúng: SQL Server hỗ trợ nén trang.

Đáp án CHƯƠNG 2 81

www.it-ebooks.info
Machine Translated by Google

2. Các câu trả lời đúng: A, C và E

A. Đúng: Các phép nối băm có thể sử dụng xử lý hàng loạt.

B. Không chính xác: Các phép nối hợp nhất không sử dụng xử lý hàng loạt.

C. Đúng: Các nhà khai thác quét có thể được hưởng lợi từ việc xử lý hàng loạt.

D. Sai: Các phép nối vòng lặp lồng nhau không sử dụng xử lý hàng loạt.

E. Đúng: Các toán tử bộ lọc cũng sử dụng xử lý hàng loạt.

3. Đáp án đúng: A và D

Đ. Đúng: Chế độ xem được lập chỉ mục đặc biệt hữu ích để tăng tốc các truy vấn tổng hợp

dữ liệu cổng.

B. Không chính xác: Như với bất kỳ chỉ mục nào, các chế độ xem được lập chỉ mục chỉ làm chậm quá trình tải dữ liệu.

C. Không chính xác: Đối với các truy vấn chọn lọc, các chỉ mục không hợp nhất sẽ thích hợp hơn.

D. Đúng: Các dạng xem được lập chỉ mục cũng có thể tăng tốc các truy vấn thực hiện nhiều phép nối.

Bài 3
1. Đáp án đúng: D

A. Không chính xác: Các chỉ mục được căn chỉnh là các chỉ mục có cùng phân vùng với cơ sở của chúng

bàn.

B. Không chính xác: Hàm phân vùng thực hiện phân vùng hợp lý.

C. Sai: Cột phân vùng là cột dùng để phân vùng.

D. Đúng: Lược đồ phân vùng thực hiện phân vùng vật lý.

2. Các câu trả lời đúng: A, B, D và E

A. Đúng: Nó phải có các ràng buộc giống như bảng được phân vùng.

B. Đúng: Nó phải có cùng độ nén với bảng đã phân vùng.

C. Không chính xác: Không có lược đồ đặc biệt nào cho các bảng được phân vùng.

D. Đúng: Nó phải có ràng buộc kiểm tra để đảm bảo rằng tất cả dữ liệu được chuyển đến một

vách ngăn.

E. Đúng: Nó phải có các chỉ mục giống như bảng được phân vùng.

3. Đáp án đúng: C

Đ : Không chính xác: Hàm APP_NAME () có thể hữu ích để nắm bắt dòng dõi

thông tin.

B. Không chính xác: Hàm USER_NAME () có thể hữu ích để nắm bắt dòng dõi

thông tin.

C. Đúng: Không có hàm DEVICE_STATUS () trong T-SQL.

D. Không chính xác: Hàm SUSER_SNAME () có thể hữu ích để nắm bắt dòng dõi

thông tin.

82 CHƯƠNG 2 Triển khai Kho dữ liệu

www.it-ebooks.info
Machine Translated by Google

Tình huống trường hợp 1

1. Bạn nên xem xét việc sử dụng các chỉ mục cột, các chế độ xem được lập chỉ mục, nén dữ liệu và

phân vùng bảng.

2. Có, rất đáng để kiểm tra các truy vấn của các báo cáo tổng đang chạy. Các truy vấn có thể sử

dụng các phép nối hoặc truy vấn con để tính tổng số đang chạy. Cân nhắc sử dụng các hàm cửa
sổ cho các tính toán này.

Tình huống trường hợp 2

1. Bạn nên kiểm tra mô hình khôi phục cơ sở dữ liệu DW và thay đổi nó thành Đơn giản. Trong nghiện

tion, bạn có thể sử dụng lệnh DBCC SHRINKFILE để thu nhỏ nhật ký giao dịch thành
kích thước hợp lý.

2. Người dùng cuối dường như có quyền, ít nhất là quyền CHỌN,

bảng ing. Tư vấn cho DBA thu hồi quyền từ người dùng cuối trên bảng dàn. Ngoài ra, để tăng tốc

độ quản trị bảo mật, bạn nên đặt tất cả các bảng dàn trong một lược đồ riêng biệt, do đó cho phép

DBA quản lý chúng như một nhóm.

Đáp án CHƯƠNG 2 83

www.it-ebooks.info
Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

PHẦN II

Phát triển SSIS


Các gói

CHƯƠNG 3 Tạo các gói SSIS 87

CHƯƠNG 4 Thiết kế và Thực hiện Quy trình Kiểm soát 131

CHƯƠNG 5 Thiết kế và Thực hiện Luồng Dữ liệu 177

www.it-ebooks.info
Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

CHƯƠNG 3

Tạo các gói SSIS


Mục tiêu kỳ thi trong chương này:

■ Trích xuất và chuyển đổi dữ liệu

■ Không có trình quản lý kết nối.

■ Tải dữ liệu

■ Kiểm soát thiết kếÁo.

D ata từ
chuyển độngdụng
các ứng đại máy
diệnkhách
cho một
đến phần quandữtrọng
máy chủ liệu của quản lưu
để được lý dữ liệu.
trữ, Dữ liệungược
và chuyển được lại
vận từ
chuyển
cơ sở dữ

liệu để máy khách được quản lý và sử dụng. Trong kho dữ liệu, di chuyển dữ liệu

đại diện cho một yếu tố đặc biệt quan trọng, xem xét các yêu cầu điển hình của một kho dữ liệu: nhu cầu nhập

dữ liệu từ một hoặc nhiều kho dữ liệu hoạt động, nhu cầu

để làm sạch và hợp nhất dữ liệu cũng như nhu cầu chuyển đổi dữ liệu, cho phép nó

được lưu trữ và duy trì thích hợp trong kho dữ liệu.

Microsoft SQL Server 2012 cung cấp một giải pháp chuyên dụng cho tập hợp các yêu cầu cụ thể này:

Dịch vụ Tích hợp Máy chủ SQL (SSIS). Ngược lại với các hoạt động quản lý dữ liệu Dòng kinh doanh (LOB),

trong đó các thực thể kinh doanh riêng lẻ được xử lý từng

thời gian trong ứng dụng khách bởi một nhân viên vận hành, các hoạt động lưu trữ dữ liệu (DW) là

thực hiện chống lại các tập hợp của các thực thể kinh doanh trong các quy trình tự động. Do những khác biệt

quan trọng này, SSIS cung cấp phương tiện để thực hiện các hoạt động chống lại các mối quan hệ lượng tử lớn

của dữ liệu một cách nhanh chóng và càng nhiều càng tốt mà không cần bất kỳ sự can thiệp nào của con người.

Một sự khác biệt khác giữa quản lý dữ liệu LOB và DW là khi các hoạt động

Thực thi; Các hoạt động LOB chủ yếu được thực hiện trong giờ làm việc tiêu chuẩn, nhưng

Các hoạt động DW được thực hiện trong "cửa sổ bảo trì": thông thường, bảo trì dữ liệu

trong DW được thực hiện trong thời gian ít sử dụng hơn hoặc hoàn toàn không sử dụng (ví dụ: vào ban đêm).

Điều này vừa nhằm giảm tác động của các hoạt động sử dụng nhiều tài nguyên trên hệ thống LOB cũng như giảm

tác động của sự biến động dữ liệu trên DW.

87

www.it-ebooks.info
Machine Translated by Google

Dựa trên mức độ phức tạp, các kịch bản di chuyển dữ liệu có thể được chia thành hai

các nhóm:

■ Di chuyển dữ liệu đơn giản, nơi dữ liệu được di chuyển từ nguồn đến đích

Chìa khóa
"Nguyên trạng" (unmodi ed)

■ Các chuyển động dữ liệu phức tạp, nơi dữ liệu cần được chuyển đổi trước khi có thể được lưu trữ và nơi

Chìa khóa
cần có logic lập trình bổ sung để phù hợp với việc hợp nhất dữ liệu mới và / hoặc modi ed, đến từ

nguồn, với dữ liệu hiện có, đã có tại điểm đến

Về vấn đề này, bộ công cụ SQL Server 2012 cung cấp hai cách tiếp cận riêng biệt để phát triển

nhập các quy trình di chuyển dữ liệu:

■ Trình hướng dẫn Nhập và Xuất SQL Server, có thể được sử dụng để thiết kế (và thực thi) các chuyển động

dữ liệu đơn giản, chẳng hạn như chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác

■ Công cụ Dữ liệu Máy chủ SQL, tự hào có môi trường phát triển tích hợp hoàn chỉnh, cung cấp cho các nhà

phát triển Dịch vụ Tích hợp Máy chủ SQL (SSIS) khả năng thiết kế ngay cả những quy trình di chuyển dữ

liệu phức tạp nhất

Điều gì tạo nên một chuyển động dữ liệu phức tạp? Ba yếu tố khác biệt có thể được quan sát thấy trong

bất kỳ quá trình di chuyển dữ liệu phức tạp nào:

1. Dữ liệu được trích xuất từ nguồn (lấy từ kho dữ liệu tác nghiệp).

2. Dữ liệu được chuyển đổi (làm sạch, chuyển đổi, tổ chức lại và tái cấu trúc) để tuân thủ

với mô hình dữ liệu đích.

3. Dữ liệu được tải vào kho dữ liệu đích (chẳng hạn như kho dữ liệu).

Quá trình này còn được gọi là trích xuất-biến đổi-tải, hoặc ETL. Trong các chuyển động dữ liệu đơn giản,

Chìa khóa
tuy nhiên, phần tử biến đổi bị bỏ qua, chỉ để lại hai phần tử: trích xuất và tải.

Trong chương này, bạn sẽ học cách sử dụng SQL Server Import and Export Wizard để sao chép

dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác và bạn sẽ bắt đầu hành trình của mình vào thế giới

thú vị của phát triển gói SSIS bằng cách sử dụng Công cụ Dữ liệu Máy chủ SQL (SSDT).

88 CHƯƠNG 3 Tạo gói SSIS

www.it-ebooks.info
Machine Translated by Google

Các bài học trong chương này:

■ Bài 1: Sử dụng SQL Server Import and Export Wizard ■ Bài

2: Phát triển các gói SSIS trong SSDT

■ Bài 3: Giới thiệu dòng điều khiển, dòng dữ liệu và trình quản lý kết nối

Trước khi bắt đầu

Để hoàn thành chương này, bạn phải có:

■ Có kinh nghiệm làm việc với SQL Server Management Studio (SSMS).

■ Kinh nghiệm cơ bản làm việc với Microsoft Visual Studio hoặc Công cụ dữ liệu SQL Server
(SSDT).

■ Có kiến thức về ngôn ngữ Transact-SQL.

Bài 1: Sử dụng SQL Server Import và


Trình hướng dẫn xuất khẩu

Đối với các tình huống di chuyển dữ liệu đơn giản, đặc biệt là khi thời gian dành cho phát triển khan

hiếm, việc sử dụng môi trường phát triển phong phú với tất cả các công cụ và tính năng có sẵn có thể gây ra

khá nhiều chi phí không cần thiết. Trên thực tế, tất cả những gì thực sự cần thiết trong một chuyển động dữ

liệu đơn giản là nguồn, đích và cách gọi chuyển. SQL Server cung cấp một giao diện phát triển phiên bản đơn

giản — về cơ bản là một trình hướng dẫn từng bước hoàn toàn phù hợp cho các chuyển động dữ liệu đơn giản:

Trình hướng dẫn Nhập và Xuất SQL Server.

Lập kế hoạch Di chuyển Dữ liệu Đơn giản


Để xác định xem và Trình hướng dẫn xuất có phải là công cụ phù hợp cho một chuyển động dữ liệu cụ thể hay

không, hãy tự hỏi mình một số câu hỏi đơn giản:

■ Dữ liệu có cần phải được chuyển đổi trước khi nó có thể được lưu trữ tại đích không?

Nếu không cần chuyển đổi, thì Trình hướng dẫn Nhập và Xuất có thể là công cụ phù hợp cho công việc.

Nếu các phép biến đổi là bắt buộc, bạn vẫn có thể sử dụng Trình hướng dẫn Nhập và Xuất, nếu tất cả

các phép biến đổi đều có thể được quản lý bên trong truy vấn SELECT được sử dụng khi dữ liệu được trích

xuất từ nguồn.

Bài 1: Sử dụng SQL Server Import and Export Wizard CHƯƠNG 3 89

www.it-ebooks.info
Machine Translated by Google

■ Có cần hợp nhất dữ liệu nguồn với dữ liệu hiện có tại đích không?

Nếu không có dữ liệu nào tồn tại tại điểm đến (ví dụ: vì bản thân điểm đến chưa tồn tại), thì việc

sử dụng Trình hướng dẫn Nhập và Xuất sẽ là lựa chọn đúng đắn. Các

Điều này cũng đúng nếu dữ liệu đã tồn tại ở đích nhưng hợp nhất dữ liệu mới và cũ

là không cần thiết (ví dụ: khi cho phép các bản sao ở đích).

■ Nếu điểm đến chưa tồn tại, liệu SQL có đủ dung lượng trống không
Vị trí đặt dữ liệu mặc định của phiên bản máy chủ?

Mặc dù Trình hướng dẫn Nhập và Xuất sẽ cho phép bạn tạo cơ sở dữ liệu đích như

một phần của quá trình, nó sẽ chỉ cho phép bạn xác định kích thước ban đầu và các mối quan hệ

thích hợp tăng trưởng cho cơ sở dữ liệu mới được tạo; nó sẽ không cho phép bạn chỉ định nơi les

sẽ được đặt. Nếu có đủ dung lượng tại vị trí mặc định, thì việc sử dụng Trình hướng dẫn Nhập và

Xuất có thể là lựa chọn phù hợp.

Nếu bạn đã xác định rằng Trình hướng dẫn Nhập và Xuất theo yêu cầu của quá trình di chuyển dữ liệu

của bạn, hãy sử dụng nó; nếu không, bạn sẽ tốt hơn khi phát triển giải pháp của mình bằng cách sử dụng SSDT.

MẸO THI

Lập kế hoạch di chuyển dữ liệu một cách cẩn thận và xem xét những lợi ích cũng như những thiếu sót của

Trình hướng dẫn Nhập và Xuất.

90 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

THỰC HÀNH Tạo một chuyển động dữ liệu đơn giản

Trong thực hành này, bạn sẽ sử dụng Trình hướng dẫn Nhập và Xuất để trích xuất dữ liệu từ một

dạng xem trong cơ sở dữ liệu hiện có và tải nó vào một bảng mới được tạo trong cơ sở dữ liệu mới

được tạo. Bạn sẽ học cách phát triển quy trình di chuyển dữ liệu bằng cách sử dụng cách tiếp cận

từng bước do trình hướng dẫn cung cấp, bạn sẽ lưu gói SSIS do trình hướng dẫn tạo vào hệ thống le,

và sau đó bạn sẽ thực hiện quy trình mới được phát triển.

Nếu bạn gặp sự cố khi hoàn thành bài tập, bạn có thể cài đặt các dự án đã hoàn thành

từ thư mục Giải pháp được cung cấp cùng với nội dung đi kèm cho chương và bài học này.

BÀI TẬP 1 Trích xuất dữ liệu từ một khung nhìn và tải nó vào một bảng

1. Khởi động Trình hướng dẫn Nhập và Xuất SQL Server: trên menu Bắt đầu, bấm Tất cả

Chương trình | Microsoft SQL Server 2012. Trên trang Chào mừng, bấm Tiếp theo.

2. Để chọn nguồn dữ liệu, hãy kết nối với máy chủ của bạn, chọn cài đặt authentica tion thích

hợp, và chọn cơ sở dữ liệu AdventureWorks2012, như thể hiện trong Hình 3-1.
Sau đó nhấp vào Tiếp theo.

HÌNH 3-1 Chọn nguồn dữ liệu.

Bài 1: Sử dụng SQL Server Import and Export Wizard CHƯƠNG 3 91

www.it-ebooks.info
Machine Translated by Google

3. Để chọn điểm đến, hãy kết nối với máy chủ của bạn và sử dụng cùng một bộ xác thực

như trong bước trước. Điều này được thể hiện trong Hình 3-2. Một tùy chọn là tải dữ liệu vào cơ sở

dữ liệu hiện có; tuy nhiên, trong bài tập này, cơ sở dữ liệu đích không tồn tại. Nhấp vào Mới để tạo
nó.

HÌNH 3-2 Chọn điểm đến.

4. Để tạo một cơ sở dữ liệu mới, hãy đặt tên cho nó (TK463), như trong Hình 3-3. Giữ nguyên

phần còn lại của cài đặt. Sau đó bấm OK, sau đó bấm Tiếp theo.

5. Trên trang tiếp theo, được hiển thị trong Hình 3-4, bạn cần quyết định xem bạn có muốn

trích xuất dữ liệu từ một hoặc nhiều đối tượng hiện có của cơ sở dữ liệu nguồn hoặc liệu bạn có

muốn sử dụng một truy vấn duy nhất để trích xuất dữ liệu hay không. Chọn Sao chép dữ liệu từ một

hoặc nhiều bảng hoặc dạng xem, sau đó bấm tiếp theo.

Tùy chọn đầu tiên cho phép bạn chọn nhiều đối tượng, nhưng nó không cho phép bạn hạn chế dữ

liệu được trích xuất; Mặt khác, tùy chọn thứ hai cho phép bạn hạn chế dữ liệu được trích xuất, nhưng

nó chỉ hỗ trợ một tập kết quả duy nhất.

92 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-3 Tạo cơ sở dữ liệu.

HÌNH 3-4 Chỉ định sao chép hoặc truy vấn bảng.

Bài 1: Sử dụng SQL Server Import and Export Wizard CHƯƠNG 3 93

www.it-ebooks.info
Machine Translated by Google

MẸO THI

Bạn nên hiểu sự khác biệt giữa tùy chọn sao chép dữ liệu từ một hoặc nhiều bảng và tùy chọn sử

dụng truy vấn để chỉ định dữ liệu cần chuyển, để bạn có thể chọn tùy chọn tốt nhất trong một tình

huống cụ thể.

Ví dụ: sao chép từ các bảng và dạng xem cho phép nhiều dữ liệu nhưng không có hạn chế bổ sung,

trong khi sao chép dữ liệu bằng cách sử dụng truy vấn cho phép các hạn chế được chỉ định, nhưng

chỉ cho phép một dữ liệu duy nhất.

6. Trên trang tiếp theo, bạn chọn các đối tượng mà bạn muốn trích xuất dữ liệu. Trong bài

tập này, bạn sẽ trích xuất dữ liệu từ hai khung nhìn và tải nó vào hai bảng mới được
tạo trong cơ sở dữ liệu đích.

Trong cột bên trái của lưới, hãy chọn hai chế độ xem nguồn sau: ■ [Sản

xuất]. [VProductAndDescription] ■ [Sản xuất]. [VProductModelInstructions]

Trong cột bên phải, hãy thay đổi tên của bảng đích như sau: ■ [Sản xuất]. [Mô tả

sản phẩm] ■ [Sản xuất]. [ProductModelInstructions]

Kết quả được thể hiện trong Hình 3-5.

7. Chọn chế độ xem đầu tiên, sau đó nhấp vào Chỉnh sửa ánh xạ. Như trong Hình 3-6, bạn có thể

thấy rằng dữ liệu trích xuất từ khung nhìn sẽ được chèn vào một bảng mới được tạo.

Định nghĩa của bảng mới được trình hướng dẫn chuẩn bị tự động và dựa trên lược đồ của tập hàng

nguồn. Nếu cần, bạn có thể sửa đổi bảng định nghĩa bằng cách nhấp vào Chỉnh sửa SQL. Tuy nhiên,

trong bài tập này, bạn nên giữ nguyên de nition.

94 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-5 Lựa chọn các bảng và khung nhìn nguồn.

HÌNH 3-6 Ánh xạ cột.

Bài 1: Sử dụng SQL Server Import and Export Wizard CHƯƠNG 3 95

www.it-ebooks.info
Machine Translated by Google

8. Khi bạn hoàn tất, bấm OK để đóng cửa sổ Column Mappings; nếu bạn đã làm

bất kỳ thay đổi nào đối với bảng de nition, hãy nhấp vào Hủy bỏ vì không cần thay đổi đối với

bài tập này. Trên trang Chọn bảng nguồn và chế độ xem, hãy nhấp vào Tiếp theo.

9. Trên trang tiếp theo, được hiển thị trong Hình 3-7, bạn có thể quyết định có chạy gói hay không,

lưu nó cho sau này, hoặc thậm chí làm cả hai. Đảm bảo rằng hộp kiểm Chạy ngay lập tức được chọn và cũng chọn hộp

kiểm Lưu gói SSIS. Sau đó chọn Hệ thống tệp làm quốc gia đích cho gói mới tạo. Trong Mức bảo vệ gói, chọn Không

Lưu dữ liệu nhạy cảm. Sau đó nhấp vào Tiếp theo.

HÌNH 3-7 Lưu và chạy gói.

10. Trên trang tiếp theo, hiển thị trong Hình 3-8, đặt tên cho gói hàng của bạn (TK463_IEWizard),

cung cấp mô tả cho nó nếu bạn muốn (ví dụ: Sao chép dữ liệu Sản phẩm AdventureWorks2012 vào cơ sở dữ liệu

mới) và đặt tên cho gói SSIS kết quả le

(C: \ TK463 \ Chương03 \ Bài1 \ TK463_IEWizard.dtsx). Khi đã sẵn sàng, hãy nhấp vào Tiếp theo.

11. Trên trang tiếp theo, được hiển thị trong Hình 3-9, bạn có thể xem lại các hành động sẽ được

hình thành khi gói được thực thi. Khi đã sẵn sàng, hãy nhấp vào Tiếp theo.

96 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-8 Lưu gói SSIS.

HÌNH 3-9 Hoàn thành trình hướng dẫn.

Bài 1: Sử dụng SQL Server Import and Export Wizard CHƯƠNG 3 97

www.it-ebooks.info
Machine Translated by Google

12. Để thực hiện gói, hãy nhấp vào Kết thúc.

13. Một trang mới xuất hiện, như thể hiện trong Hình 3-10, hiển thị tiến trình và cuối cùng

kết quả của việc thực hiện. Đóng trình hướng dẫn khi bạn hoàn tất.

HÌNH 3-10 Việc thực hiện.

BÀI TẬP 2 Xem tệp gói SSIS

1. Mở Windows Explorer và điều hướng đến thư mục C: \ TK463 \ Chapter03 \ Lesson1, nơi bạn

đã lưu gói SSIS được tạo trong Bài tập 1.

Bây giờ bạn sẽ xem nội dung của le này.

2. Nhấp chuột phải vào TK463_IEWizard.dtsx và chọn Mở Bằng từ menu lối tắt.

Bấm Chọn Chương trình Mặc định, và trong hộp thoại Mở Bằng, bên dưới Chương trình Khác, hãy

chọn Notepad. Bỏ chọn hộp kiểm Luôn Sử dụng Chương trình Đã Chọn Để Mở Loại Tệp Này.

Bạn không nên thay đổi chương trình mặc định được sử dụng để mở gói SSIS les!

3. Khi đã sẵn sàng, hãy nhấp vào OK, để mở le.

4. Nếu cần, hãy phóng to cửa sổ Notepad, rồi xem lại nội dung.

Gói SSIS les được triển khai dưới dạng tài liệu XML và có thể được sửa đổi, nếu cần, ngay cả
khi SSDT không khả dụng.

98 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

MẸO THI

Mặc dù điều này có thể không rõ ràng từ tên le, nhưng gói de nitions của SSIS được lưu trữ ở

định dạng XML và có thể được xem xét và chỉnh sửa bằng hầu hết các công cụ chỉnh sửa văn bản.

Tất nhiên, bạn không nên chỉnh sửa gói SSIS theo cách thủ công trừ khi bạn đã quen với cấu trúc của

chúng, vì cuối cùng bạn có thể làm hỏng chúng không thể sửa chữa được.

5. Khi hoàn tất, đóng Notepad, bỏ qua bất kỳ thay đổi nào.

6. Quay lại Windows Explorer và nhấp đúp vào TK463_IEWizard.dtsx để mở nó bằng chương trình mặc định,

Execute Package Utility. Tiện ích này có thể được sử dụng để thu thập và thực thi các gói SSIS. Không

thể sử dụng tiện ích này để thực hiện các thay đổi vĩnh viễn đối với các gói SSIS. Bạn sẽ tìm hiểu thêm

về tiện ích này trong Chương 12, “Thực thi nhập và bảo mật các gói.”

7. Khi hoàn tất, nhấp vào Đóng để đóng gói le mà không thực hiện nó.

8. Đóng Windows Explorer.

Tom tăt bai ho c


■ Trình hướng dẫn Nhập và Xuất SQL Server có thể được sử dụng để di chuyển dữ liệu đơn giản

các hoạt động.

■ Trình hướng dẫn cho phép bạn tạo cơ sở dữ liệu đích. ■ Có thể chuyển

nhiều đối tượng trong cùng một thao tác. ■ Nếu các đối tượng đích chưa tồn

tại, chúng có thể được tạo ra bởi quá trình này. ■ Gói SSIS được tạo bởi trình hướng dẫn có thể được

lưu và sử dụng lại.

Nhận xét bài học

Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn có thể tìm câu trả lời

cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả lời là đúng hay sai trong phần “Câu trả lời” ở

cuối chương này.

1. Bạn cần chuyển dữ liệu từ cơ sở dữ liệu sản xuất sang cơ sở dữ liệu thử nghiệm. Bạn cần trích xuất dữ liệu

từ một số đối tượng trong cơ sở dữ liệu nguồn, nhưng người quản lý của bạn đã yêu cầu bạn chỉ sao chép

khoảng 10 phần trăm các hàng từ các bảng sản xuất lớn nhất. Cơ sở dữ liệu thử nghiệm đã tồn tại, nhưng

không có bất kỳ bảng nào. Bạn sẽ áp dụng nhiệm vụ này như thế nào?

A. Sử dụng Trình hướng dẫn Nhập và Xuất, sao chép tất cả các bảng từ cơ sở dữ liệu nguồn sang cơ sở dữ

liệu đích trống và xóa các hàng thừa khỏi các bảng lớn nhất.

B. Sử dụng Trình hướng dẫn Nhập và Xuất nhiều lần — một lần cho tất cả các bảng nhỏ hơn và một lần cho

mỗi bảng lớn, sử dụng tùy chọn Viết Truy vấn Để Chỉ định Dữ liệu Để Truyền để hạn chế các hàng.

Bài 1: Sử dụng thuật sĩ nhập và xuất SQL Server CHƯƠNG 3 99

www.it-ebooks.info
Machine Translated by Google

C. Sử dụng Trình hướng dẫn Nhập và Xuất, sao chép tất cả các bảng từ cơ sở dữ liệu nguồn sang cơ sở dữ liệu

đích trống và hạn chế số hàng cho mỗi bảng lớn bằng cách sử dụng tùy chọn Chỉnh sửa SQL trong cửa sổ Ánh

xạ Cột.

D. Sử dụng Trình hướng dẫn Nhập và Xuất, cố gắng sao chép tất cả các bảng từ cơ sở dữ liệu nguồn sang cơ sở

dữ liệu đích trống, lưu gói SSIS và sau đó, trước khi thực thi, hãy chỉnh sửa nó bằng cách sử dụng SSDT

để hạn chế số hàng được trích xuất từ các bảng lớn.

2. Bạn cần di chuyển dữ liệu từ cơ sở dữ liệu đang hoạt động vào kho dữ liệu lần đầu tiên. Kho dữ liệu đã được

thiết lập và nó đã chứa một số dữ liệu tham khảo. Bạn vừa chuẩn bị các chế độ xem trong cơ sở dữ liệu hoạt

động tương ứng với các bảng thứ nguyên và dữ liệu của kho dữ liệu. Bạn sẽ tiếp cận nhiệm vụ này như thế nào?

A. Sử dụng Trình hướng dẫn Nhập và Xuất và sao chép dữ liệu từ thứ nguyên và dữ liệu

xem trong cơ sở dữ liệu hoạt động vào các bảng trong kho dữ liệu, bằng cách
sử dụng tùy chọn Thả và tạo lại Bảng Đích trong cửa sổ Ánh xạ Cột cho mọi bảng
đích không trống.

B. Sử dụng Trình hướng dẫn Nhập và Xuất, cố gắng sao chép dữ liệu từ chế độ xem thứ nguyên và dữ kiện trong

cơ sở dữ liệu hoạt động vào các bảng trong kho dữ liệu, lưu gói SSIS, sau đó chỉnh sửa bằng cách sử

dụng SSDT để thêm hợp nhất dữ liệu thích hợp các chức năng cho tất cả các bảng đích.

C. Sử dụng Trình hướng dẫn Nhập và Xuất và sao chép dữ liệu từ thứ nguyên và dữ liệu

xem trong cơ sở dữ liệu hoạt động vào các bảng trong kho dữ liệu, bằng cách
sử dụng tùy chọn Hợp nhất Dữ liệu vào Bảng Đích trong Ánh xạ Cột giành chiến
thắng cho mọi bảng đích không trống.

D. Sử dụng SSDT thay vì Trình hướng dẫn Nhập và Xuất, vì trình hướng dẫn thiếu ap

khả năng chuyển đổi và hợp nhất dữ liệu riêng.

3. Khi các gói SSIS được lưu vào DTSX les, định dạng nào sẽ được sử dụng để lưu trữ SSIS

gói de nitions?

A. Chúng được lưu trữ dưới dạng les nhị phân.

B. Chúng được lưu trữ dưới dạng văn bản thuần túy les.

C. Chúng được lưu trữ dưới dạng XML les.

D. Chúng được lưu trữ dưới dạng tài liệu Microsoft Word đặc biệt.

100 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

Bài 2: Phát triển các gói SSIS trong SSDT

Khả năng sửa đổi (chuyển đổi) dữ liệu trước khi nó có thể được lưu trữ tại đích và khả năng hợp nhất dữ

liệu mới hoặc sửa đổi một cách thích hợp với dữ liệu hiện có không khả dụng

trong Trình hướng dẫn Nhập và Xuất SQL Server; do đó, trình hướng dẫn không thực sự phù hợp với

các kịch bản di chuyển dữ liệu phức tạp.

Tuy nhiên, chẳng hạn, người ta có thể sử dụng trình hướng dẫn để thiết kế một gói SSIS trong vài phút,

kiểm tra nó và triển khai nó để có thể triển khai kho dữ liệu càng sớm càng tốt, và

sau đó sử dụng Công cụ Dữ liệu Máy chủ SQL (SSDT) để thêm bất kỳ chức năng nào còn thiếu nhằm cải thiện khả

năng tái sử dụng và khả năng quản lý của giải pháp.

Mặt khác, các kịch bản kho dữ liệu thường không được tính giữa các dự án để

phát triển giải pháp nhanh chóng nào là điều tối quan trọng; trong phần lớn các trường hợp, kho dữ liệu

các dự án đòi hỏi nhiều nghiên cứu và lập kế hoạch trước khi thực hiện bất kỳ

phát triển thực tế, với mục tiêu cung cấp giải pháp di chuyển dữ liệu hoàn chỉnh, sẵn sàng cho quá trình

sản xuất. Vào thời điểm giai đoạn lập kế hoạch hoàn thành, một quy trình di chuyển dữ liệu được phát triển

sớm và nhanh chóng có thể đã trở nên lỗi thời và sẽ phải

modi ed đáng kể không thể sản xuất. Do đó, không chắc rằng lợi ích của việc triển khai sớm sẽ lớn hơn nhu

cầu sửa đổi và có thể thiết kế lại quy trình di chuyển dữ liệu

sau khi thiết kế của kho dữ liệu đã thực sự đủ trưởng thành để sản xuất.

Nói cách khác, việc phát triển SSIS thường sẽ được thực hiện “từ đầu” —sử dụng SSDT

thay vì Trình hướng dẫn Nhập và Xuất; nhưng chỉ riêng khách hàng tiềm năng này không kết xuất trình hướng dẫn
vô ích.

SSIS sử dụng một ngôn ngữ lập trình khai báo đặc biệt — hay đúng hơn là một chương trình đặc biệt

giao diện — để xác định thứ tự và điều kiện thực hiện các hoạt động. Với một phasis mạnh mẽ về tự động

hóa, các ứng dụng bảo trì DW khác với phần lớn các ứng dụng

ở chỗ chúng không hỗ trợ giao diện người dùng. Giám sát, kiểm tra và khắc phục sự cố được cung cấp thông

qua khả năng kiểm tra và ghi nhật ký.

Các kỹ thuật được sử dụng trong thiết kế và phát triển SSIS có thể khác biệt đáng kể so với các kỹ

thuật vẽ đồ thị chuyên nghiệp khác, đặc biệt có vẻ khác biệt đối với quản trị viên cơ sở dữ liệu hoặc nhà

phát triển đã quen với các ngôn ngữ lập trình khác (chẳng hạn như Transact-SQL hoặc

Microsoft .NET). Hầu hết quá trình phát triển SSIS được thực hiện bằng đồ thị — sử dụng chuột, thay vì

bằng cách nhập các lệnh bằng bàn phím. Một cách tiếp cận trực quan để thiết kế không chỉ cho phép

bạn nắm bắt các hoạt động, theo thứ tự của chúng và xác định trong những điều kiện nào

chúng sẽ được thực thi, nhưng nó cũng cung cấp trải nghiệm lập trình WYSIWYG.

Sau khi chúng được triển khai, các giải pháp SSIS thường được thực thi tự động — cho

ví dụ, khi sử dụng SQL Server Agent — nhưng chúng cũng có thể được gọi theo yêu cầu, bằng cách sử dụng

các tiện ích do nền tảng cung cấp hoặc thông qua giao diện lập trình ứng dụng (API).

Bài 2: Phát triển các gói SSIS trong SSDT CHƯƠNG 3 101

www.it-ebooks.info
Machine Translated by Google

Giới thiệu SSDT


SSDT là một phiên bản đặc biệt của Visual Studio, là môi trường cố vấn phát triển tích hợp chính của

Microsoft. SSDT hỗ trợ nhiều dự án phát triển SQL Server khác nhau, chẳng hạn như dự án Khai thác dữ liệu và

dịch vụ đa chiều SQL Server, dự án bảng phân tích dịch vụ phân tích, dự án máy chủ báo cáo dịch vụ báo cáo SQL

Server và dự án dịch vụ tích hợp (SSIS). Đối với tất cả các loại dự án này, SSDT cung cấp một sự phát triển tích

hợp hoàn chỉnh

môi trường, cụ thể tùy chỉnh cụ thể cho từng loại dự án cụ thể.

Đối với các dự án Dịch vụ tích hợp, SSDT cung cấp toàn bộ kho quản lý dữ liệu

các nhiệm vụ và thành phần bao gồm khá nhiều nhu cầu về kho dữ liệu (nhiều loại dữ liệu

kỹ thuật trích xuất, biến đổi và tải). Tuy nhiên, trong thế giới thực, bạn có thể

cuối cùng gặp phải các tình huống mà không một công cụ tích hợp nào cung cấp giải pháp thích hợp nhất. May mắn

thay, mô hình phát triển SSIS có thể mở rộng: bộ công cụ tích hợp

có thể được mở rộng bằng cách thêm các tác vụ tùy chỉnh và / hoặc các thành phần tùy chỉnh — được cung cấp bởi

nhà cung cấp bên thứ ba hoặc do bạn phát triển.

102 CHƯƠNG 3 Tạo gói SSIS

www.it-ebooks.info
Machine Translated by Google

THỰC HÀNH Bắt đầu với SSDT

Trong phần thực hành này, bạn sẽ làm quen với SSDT và có cơ hội thực hiện các bước đầu tiên trong quá trình

phát triển giải pháp Dịch vụ Tích hợp SQL Server 2012.

So với Trình hướng dẫn Nhập và Xuất mà bạn đã làm việc trước đó trong chương này, việc phát triển SSIS

trong SSDT thoạt nhìn có vẻ như là một nhiệm vụ khó khăn; mặc dù trình hướng dẫn cung cấp một lộ trình phát

triển rất đơn giản từ đầu đến cuối, nhưng trải nghiệm tổng thể của SSDT vượt trội hơn nhiều, như bạn sẽ sớm

khám phá ra.

Trình hướng dẫn hướng dẫn bạn nhanh chóng đến kết quả, nhưng SSDT cung cấp cho bạn toàn bộ và

tổng quan rõ ràng về giải pháp mới nổi và kiểm soát không bị cản trở đối với các hoạt động.

Nếu bạn gặp sự cố khi hoàn thành bài tập này, bạn có thể cài đặt các dự án đã hoàn thành được cung

cấp cùng với nội dung đồng hành. Chúng có thể được cài đặt từ thư mục Giải pháp cho chương và bài học này.

BÀI TẬP 1 Tạo một dự án SSIS mới


Trong bài tập này, bạn sẽ tự làm quen với môi trường phát triển tích hợp SSDT (IDE), tạo một dự án SSIS

mới và khám phá bộ công cụ phát triển SSIS.

1. Khởi động Công cụ Dữ liệu Máy chủ SQL (SSDT): Trên menu Bắt đầu, nhấp vào Tất cả chương trình |

Microsoft SQL Server 2012 | Công cụ dữ liệu SQL Server hoặc Tất cả các chương trình | Microsoft

Visual Studio 2010 | Visual Studio 2010.

2. Tạo một dự án mới, bằng cách nhấp vào Dự án Mới trên Trang Bắt đầu, qua menu bằng cách nhấp vào

Tệp | Mới | Chiếu hoặc bằng cách sử dụng phím tắt Ctrl + Shift + N.

3. Trong cửa sổ Dự án Mới, được hiển thị trong Hình 3-11, chọn mẫu dự án thích hợp. Dưới các Mẫu

đã Cài đặt | Kinh doanh thông minh | Dịch vụ Tích hợp, chọn Dự án Dịch vụ Tích hợp.

4. Ở cuối cửa sổ Dự án mới, cung cấp tên cho dự án và vị trí của dự án. Đặt tên cho dự án của bạn

là TK 463 Chương 3 và đặt thư mục C: \ TK463 \ Chapter03 \ Lesson2 \ Starter làm vị trí của dự

án. Ngoài ra, hãy đảm bảo rằng hộp kiểm Tạo Thư mục Cho Giải pháp không được chọn, vì không cần

thư mục tỷ lệ riêng cho giải pháp les. Bấm OK khi đã sẵn sàng.

5. Sau khi dự án và giải pháp mới đã được tạo, hãy kiểm tra ngăn Giải pháp Explorer ở phía trên bên

phải của IDE, như thể hiện trong Hình 3-12. Dự án bạn vừa tạo phải được liệt kê và nó phải chứa

một gói SSIS duy nhất có tên là Package.dtsx.

Ngăn Giải pháp Explorer cung cấp quyền truy cập vào các thuộc tính giải pháp và dự án cũng như

các đối tượng mà chúng chứa; Các dự án SSIS chứa ít nhất một gói SSIS. Trình quản lý kết nối cấp

dự án và các thông số dự án có thể được truy cập thông qua ngăn Giải pháp Explorer.

Bài 2: Phát triển các gói SSIS trong SSDT CHƯƠNG 3 103

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-11 Tạo một dự án mới.

HÌNH 3-12 Giải pháp Explorer.

104 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

6. Lưu lời giải, nhưng hãy để nó mở, vì bạn sẽ cần nó trong bài tập sau.

BÀI TẬP 2 Khám phá thiết kế luồng điều khiển SSIS

1. Trong ngăn Giải pháp Explorer, bấm đúp vào gói Package.dtsx để mở trình thiết kế
Dòng điều khiển.

Phần lớn nhất ở giữa cửa sổ IDE được dành cho kiểm soát gói SSIS Áow và thiết kế
dữ liệu.

2. Ở bên trái SSDT IDE, bạn có thể tìm Hộp công cụ SSIS, được hiển thị trong Hình 3-13.
Trong ngữ cảnh của gói SSIS, Hộp công cụ SSIS liệt kê các tác vụ điều khiển hiện tại,
cho phép bạn tạo và thu thập điều khiển hiện tại cho gói SSIS.

HÌNH 3-13 Hộp công cụ SSIS trong ngữ cảnh của một gói SSIS.

Bài 2: Phát triển các gói SSIS trong SSDT CHƯƠNG 3 105

www.it-ebooks.info
Machine Translated by Google

Hãy dành một phút để khám phá hộp công cụ; bây giờ, chỉ cần duyệt qua các tác vụ
controlÁow. Bạn sẽ tìm hiểu thêm về chúng trong Chương 4, “Thiết kế và triển khai quy
trình kiểm soát”.

3. Kéo tác vụ dữ liệu hiện tại từ Hộp công cụ SSIS vào trình thiết kế điều khiển SSIS
như trong Hình 3-14.

HÌNH 3-14 Ngăn gói SSIS với Tác vụ Luồng Dữ liệu.

4. Bấm đúp vào tác vụ dataÁow, hoặc chọn tab Data Flow ở đầu ngăn tuổi gói SSIS, để truy
cập dataÁow de nition. Một tác vụ dữ liệu mới được tạo ra không chứa thành phần nào;
tuy nhiên, nội dung của Hộp công cụ SSIS đã thay đổi, như thể hiện trong Hình 3-15.

Hãy dành thêm một phút để khám phá Hộp công cụ; bây giờ, chỉ cần duyệt qua các thành
phần dữ liệu Áow. Bạn sẽ tìm hiểu thêm về chúng trong Chương 5, “Thiết kế và triển
khai Luồng dữ liệu.”

5. Khi bạn hoàn tất, hãy lưu dự án SSIS và đóng SSDT.

106 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-15 Hộp công cụ SSIS trong ngữ cảnh của nhiệm vụ luồng dữ liệu.

Tom tăt bai ho c


■ Các dự án SSIS được phát triển bằng cách sử dụng SSDT, một phiên bản chuyên biệt của

Visual Studio. ■ SSDT cung cấp môi trường phát triển tích hợp hoàn chỉnh (IDE) cần thiết để

phát triển nhanh các gói SSIS.

■ Hộp công cụ SSIS nhận biết ngữ cảnh và sẽ cho phép bạn truy cập để kiểm soát các tác vụ hiện

tại hoặc các thành phần dữ liệu hiện tại, tùy thuộc vào việc bạn đang thiết kế điều khiển hiện
tại hay dữ liệu.

Bài 2: Phát triển các gói SSIS trong SSDT CHƯƠNG 3 107

www.it-ebooks.info
Machine Translated by Google

Nhận xét bài học

Trả lời các câu hỏi sau để kiểm tra kiến thức của bạn về thông tin trong bài học này. Bạn

có thể tìm ra câu trả lời cho những câu hỏi này và giải thích tại sao mỗi lựa chọn câu trả lời là đúng

hoặc không chính xác trong phần "Câu trả lời" ở cuối chương này.

1. Câu nào mô tả đúng nhất về Công cụ phát triển máy chủ SQL (SSDT)? (Chọn tất cả

áp dụng.)

A. SSDT là một phần mở rộng của SQL Server Management Studio có thể được sử dụng để tạo các gói SSIS

bằng một trình hướng dẫn đặc biệt.

B. SSDT là một phiên bản đặc biệt của SQL Server Management Studio, được thiết kế để cung cấp trải

nghiệm người dùng được cải thiện cho các nhà phát triển không đặc biệt quen thuộc
với quản trị cơ sở dữ liệu.

C. SSDT là một phiên bản đặc biệt của Visual Studio, được phân phối với SQL Server 2012, được cung cấp

ing một bộ công cụ phát triển cơ sở dữ liệu phong phú.

D. SSDT là một dịch vụ mới trong SQL Server 2012 có thể được sử dụng để thực hiện SQL Server

các nhiệm vụ bảo trì, chẳng hạn như chuyển động dữ liệu và quản lý dữ liệu tương tự

cesses.

2. Phát biểu nào sau đây về chuyển động dữ liệu đơn giản và phức tạp là

thật? (Chọn tất cả các áp dụng.)

A. Các chuyển động dữ liệu đơn giản chỉ có một nguồn dữ liệu và một dữ liệu duy nhất
điểm đến.

B. Các chuyển động dữ liệu phức tạp yêu cầu dữ liệu phải được chuyển đổi trước khi có thể được lưu trữ

tại điểm đến.

C. Trong các chuyển động dữ liệu đơn giản, các phép biến đổi dữ liệu được giới hạn ở kiểu dữ liệu

sự chuyển đổi.

D. Trong các chuyển động dữ liệu phức tạp, cần có thêm logic chương trình để hợp nhất dữ liệu nguồn

với dữ liệu đích.

3. Phát biểu nào sau đây là đúng? (Chọn tất cả các áp dụng.)

A. Một gói SSIS có thể chứa một hoặc nhiều giải pháp SSDT, mỗi giải pháp thực hiện một hoạt động

quản lý dữ liệu cụ thể.

B. Một dự án SSIS có thể chứa một hoặc nhiều gói SSIS.

C. Một dự án SSIS có thể chứa chính xác một gói SSIS.

D. Các gói SSIS chứa logic lập trình được sử dụng trong các chuyển động dữ liệu và dữ liệu

các phép toán biến đổi.

108 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

Bài 3: Giới thiệu Luồng điều khiển, Luồng dữ liệu và


Người quản lý kết nối

Trước khi đi sâu vào phát triển SSIS, bạn nên làm quen với ba yếu tố cần thiết

của mọi gói SSIS:

■ Trình quản lý kết nối Cung cấp kết nối tới kho dữ liệu, dưới dạng nguồn dữ liệu hoặc

Chìa khóa
đích dữ liệu. Bởi vì cùng một kho lưu trữ dữ liệu có thể đóng vai trò của nguồn dữ liệu cũng như

đích dữ liệu, các trình quản lý kết nối cho phép kết nối được xác định

một lần và sử dụng nhiều lần trong cùng một gói (hoặc dự án).

■ ControlÁow De nes cả thứ tự hoạt động và các điều kiện

chúng sẽ được thực thi. Một gói có thể bao gồm một hoặc nhiều hoạt động, được đại diện

bằng cách kiểm soát các tác vụ hiện tại. Thứ tự thực thi được xác định bởi cách các tác vụ riêng lẻ được kết nối

với nhau. Các nhiệm vụ không theo sau bất kỳ nhiệm vụ nào trước đó cũng như các nhiệm vụ tiếp theo
Chìa khóa

cùng một nhiệm vụ trước đó được thực hiện song song.

■ DataÁow Đóng gói các thành phần chuyển động dữ liệu — ETL:

■ Một hoặc nhiều thành phần nguồn, chỉ định các kho lưu trữ dữ liệu mà từ đó dữ liệu
sẽ được trích xuất

■ Một hoặc nhiều thành phần đích, chỉ định các kho lưu trữ dữ liệu mà
dữ liệu sẽ được tải

■ Một hoặc nhiều thành phần biến đổi (tùy chọn), chỉ định biến đổi

hàng tấn dữ liệu sẽ được chuyển qua

MẸO THI

Đừng bao giờ nhầm lẫn giữa controlÁow với dataÁow. ControlÁow xác định các hoạt động

và thứ tự thực hiện chúng. DataÁow là một tác vụ trong controlÁow xác định

Hoạt động ETL.

Vai trò của người quản lý kết nối là cung cấp quyền truy cập vào các kho dữ liệu, với tư cách là nguồn dữ liệu,

đích dữ liệu hoặc kho dữ liệu tham chiếu. Kiểm soát các tác vụ hiện tại để quản lý dữ liệu

hoạt động của quy trình SSIS, với các tác vụ dữ liệu dưới đây cung cấp cốt lõi của hoạt động nhập kho dữ

liệu — ETL.

Bài 3: Giới thiệu Luồng điều khiển, Luồng dữ liệu và Trình quản lý kết nối CHƯƠNG 3 109

www.it-ebooks.info
Machine Translated by Google

Giới thiệu về Phát triển SSIS


Môi trường phát triển tích hợp (IDE) của SSDT cung cấp một phiên bản thống nhất và toàn diện

cách tiếp cận phát triển cơ sở dữ liệu; Các giải pháp Dịch vụ Phân tích, Dịch vụ Báo cáo và Dịch vụ Tích

hợp đều được cung cấp bởi cùng một IDE, với các tùy chỉnh rõ ràng và cần thiết để giải thích sự khác biệt

giữa các mô hình phát triển riêng lẻ.

Ngay cả khi có liên quan đến các giải pháp Dịch vụ Tích hợp, toàn bộ dự án SSIS có thể không chỉ là

một chuyển động dữ liệu đơn lẻ (và nó thường là, khá nhiều). IDE cung cấp khả năng phát triển, duy trì và

triển khai nhiều quy trình quản lý dữ liệu trong thế giới thực tạo thành cùng một đơn vị công việc logic

hoàn chỉnh như một dự án.

Trên hết, thông thường trong các kịch bản kho dữ liệu, các chuyển động dữ liệu thực sự đại diện cho

chỉ là một trong số các yếu tố của việc thu thập, bảo trì và tiêu thụ dữ liệu cần thiết để hỗ trợ môi trường

kinh doanh. Nhu cầu kinh doanh này cũng được hỗ trợ đầy đủ bởi SSDT IDE — nhiều dự án, nhắm mục tiêu đến

nhiều yếu tố của nền tảng SQL Server, đại diện cho

các khối xây dựng của một khái niệm kinh doanh duy nhất, có thể được phát triển và duy trì như một giải
pháp SSDT.

Mặc dù trọng tâm của chương này là phát triển SSIS, bạn nên biết

phạm vi công việc của bạn lớn hơn và lập kế hoạch cho các hoạt động phát triển của bạn cho phù hợp. Khi bạn tiếp tục

trên con đường của bạn thông qua cuốn sách này và thông qua phát triển kho dữ liệu, bạn sẽ dần dần

bắt đầu nhận ra phạm vi này thực sự rộng như thế nào.

Trước đó trong chương này, bạn đã phát triển một giải pháp SSIS — bạn đã sử dụng một công cụ chuyên biệt,

đã hướng dẫn bạn khá nhiều thông tin trực tiếp về tất cả các bước thiết yếu của quy trình phát triển

SSIS. Đến cuối chương này, bạn sẽ có thể tự mình thực hiện tất cả các bước này,

mà không có trình hướng dẫn để hướng dẫn bạn, và sau khi hoàn thành phần này và hai chương sau, bạn

sẽ học đủ để tiếp nhận hầu hết những gì thường được yêu cầu đối với một nhà phát triển SSIS

ngoài kia, trong thế giới thực.

Giới thiệu Triển khai Dự án SSIS


Để đảm bảo sự tách biệt của các hoạt động phát triển và thử nghiệm khỏi các hoạt động sản xuất, việc phát

triển giải pháp SSIS nên được thực hiện trong các môi trường phát triển chuyên dụng, lý tưởng là không có

quyền truy cập trực tiếp vào môi trường sản xuất. Chỉ sau khi phát triển đã được

đã hoàn thành và các giải pháp được kiểm tra đúng cách nếu các gói SSIS kết quả được triển khai cho môi

trường sản xuất.

Tuy nhiên, ngay cả trong giai đoạn lập kế hoạch và phát triển, bạn không chỉ nên lưu ý

sự khác biệt giữa môi trường phát triển và sản xuất, nhưng cũng giải thích

cho họ trước khi cố gắng triển khai.

110 CHƯƠNG 3 Tạo các gói SSIS

www.it-ebooks.info
Machine Translated by Google

Thông thường, sự khác biệt cơ bản giữa môi trường phát triển và sản xuất là

trong vỏ bọc của các kho lưu trữ dữ liệu. Trong quá trình phát triển, tất cả dữ liệu có thể nằm trên cùng một máy chủ

(ngay cả trong cùng một cơ sở dữ liệu). Trên thực tế, vì để phát triển, một tập hợp con dữ liệu thường

là tất cả những gì cần thiết (hoặc có sẵn) cho nhà phát triển, nên tất cả dữ liệu phát triển được lưu

trữ có thể dễ dàng được đặt trên máy tính cá nhân của nhà phát triển. Do đó, bạn nên tính đến những

khác biệt sau giữa môi trường phát triển và môi trường sản xuất khi phát triển các giải pháp SSIS ing:

■ Kết nối Trong sản xuất, kho dữ liệu nguồn và đích sẽ thường xuyên hơn

hơn không, được lưu trữ trên các máy chủ khác nhau.

■ Nền tảng dữ liệu Các phiên bản sản xuất của nền tảng dữ liệu có thể khác với phiên bản được sử

dụng trong môi trường phát triển (ví dụ: SQL Server 2012 có thể được sử dụng để phát triển,

nhưng SQL Server 2008 trong phiên bản sản xuất) hoặc các môi trường thậm chí có thể trên các

nền tảng khác nhau hoàn toàn (ví dụ: SQL Server để phát triển và một DBMS khác để sản xuất).

■ Bảo mật Nói chung, một máy phát triển không cần phải là một phần của cùng một

miền hệ điều hành làm máy chủ sản xuất. Hơn nữa, các dịch vụ sản xuất lưu trữ nguồn hoặc lưu trữ

dữ liệu đích có thể tồn tại trong các miền riêng biệt.

Trong các phiên bản trước của SQL Server, có thể thu thập các gói SSIS bằng cách sử dụng

con guration le hoặc bằng cách lưu trữ dữ liệu con guration trong một bảng. Tuy nhiên, việc triển khai

và việc duy trì các chiêu trò lừa đảo này được chứng minh là một nhiệm vụ khá phức tạp và đã

không cung cấp trải nghiệm người dùng rất tốt. Trong SQL Server 2012, tính năng đánh lừa được thay

thế hợp lý bằng tham số hóa, về cơ bản cung cấp các chức năng giống nhau

Chìa khóa
(ví dụ, khả năng kiểm soát tất cả các thuộc tính lộ ra của bất kỳ đối tượng có thể che giấu nào

trong một gói SSIS thông qua kỹ thuật đánh lừa, cho phép quản trị viên xác định độ tuổi của gói phù

hợp với môi trường mà nó đang được triển khai). Việc triển khai SSIS

tham số hóa cung cấp trải nghiệm triển khai và bảo trì vượt trội hơn nhiều so với

đối với các chiêu thức SSIS. Tham số hóa SSIS sẽ được thảo luận chi tiết hơn trong Chương 4 và

Chương 11, “Cài đặt SSIS và Triển khai các Gói.”

MẸO THI

Tham số hóa SSIS đại diện cho một yếu tố quan trọng của sự phát triển SSIS; vai trò chính

của nó có thể không rõ ràng cho đến khi giải pháp SSIS được triển khai, nhưng nó phải được xem

xét ngay từ khi bắt đầu phát triển.

Bài 3: Giới thiệu Luồng điều khiển, Luồng dữ liệu và Trình quản lý kết nối CHƯƠNG 3 111

www.it-ebooks.info
Machine Translated by Google

THỰC HÀNH Sửa đổi một chuyển động dữ liệu hiện có

Trong Bài 1 của chương này, bạn đã tạo một giải pháp di chuyển dữ liệu bằng cách sử dụng Trình hướng dẫn

Xuất và Nhập, kết quả của nó là một gói SSIS mà bạn đã lưu dưới dạng một phần mềm cho hệ thống. Trong Bài 2,

bạn đã được giới thiệu về môi trường phát triển tích hợp SSDT, cụ thể là mẫu phát triển SSIS (dự án Dịch vụ

tích hợp), và bạn

đã xem qua bộ công cụ phát triển SSIS do SSDT cung cấp.

Trong chương này đã đề cập nhiều lần rằng các gói SSIS được tạo bởi Im-port và Export Wizard có thể được

sử dụng lại và chỉnh sửa bằng cách sử dụng SSDT; trong bài học thứ ba này, bạn sẽ

nhập gói SSIS được tạo trong bài học đầu tiên vào dự án SSIS được tạo trong bài học thứ hai

và sửa đổi nó với một mục tiêu rất quan trọng trong tâm trí: cải thiện khả năng tái sử dụng của nó. Bạn sẽ

xem xét các kết nối dữ liệu được sử dụng bởi dự án SSIS và chuẩn bị các kết nối của chúng theo thứ tự

để đảm bảo triển khai và sử dụng thành công trong sản xuất.

Nếu bạn gặp sự cố khi hoàn thành bài tập, bạn có thể cài đặt các dự án đã hoàn thành

từ thư mục Giải pháp được cung cấp với nội dung đồng hành cho chương này và

bài học.

BÀI TẬP 1 Thêm một gói SSIS Hiện có vào Dự án SSIS

1. Điều hướng đến thư mục C: \ TK463 \ Chapter03 \ Lesson3 \ Starter \ TK 463 Chương 3 trong thư mục le

hệ thống và mở bài giải TK 463 Chương 3.sln. Giải pháp này giống với giải pháp bạn đã hoàn thành trong

Bài học 2.

2. Trong Trình khám phá Giải pháp, bấm chuột phải vào các nút của dự án. Sau đó, trong menu lối tắt,

bên dưới Thêm, bấm Gói hiện có, như trong Hình 3-16.

112 CHƯƠNG 3 Tạo gói SSIS

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-16 Thêm một gói hiện có vào dự án SSIS.

3. Trong hộp thoại Add Copy Of Existing Package, hiển thị trong Hình 3-17, đảm bảo rằng
File System được chọn làm vị trí gói, sau đó nhấp vào nút dấu chấm lửng (…) ở cuối
hộp thoại. Hộp thoại Tải Gói xuất hiện. Sử dụng nó để điều hướng đến vị trí của
gói SSIS bạn đã tạo trong Bài 1: C: \ TK463 \ Chương03 \ Bài1.
Nếu vì lý do nào đó mà gói này không khả dụng, thì phải có một bản sao trong thư mục C: \

TK463 \ Chapter03 \ Lesson1 \ Solution.

HÌNH 3-17 Thêm một bản sao của một gói hiện có.

Bài 3: Giới thiệu Luồng điều khiển, Luồng dữ liệu và Trình quản lý kết nối CHƯƠNG 3 113

www.it-ebooks.info
Machine Translated by Google

4. Chọn TK463_IEWizard.dtsx le, bấm Mở, rồi bấm OK. Sau một vài

, Giải pháp Explorer sẽ liệt kê gói mới được thêm vào, như
trong Hình 3-18.

HÌNH 3-18 Dự án SSIS với nhiều gói SSIS.

5. Lưu giải pháp SSIS, nhưng giữ nó ở trạng thái mở, vì bạn sẽ cần nó trong bài tập tiếp theo.

BÀI TẬP 2 Chỉnh sửa gói SSIS được tạo bởi trình hướng dẫn xuất nhập máy chủ SQL

1. Mở gói TK463_IEWizard.dtsx bằng cách nhấp đúp vào gói trong Trình khám phá giải pháp.

2. Xem lại controlÁow của gói. Nó phải chứa hai tác vụ: một Nhiệm vụ SQL thực thi có tên là

Chuẩn bị SQL Nhiệm vụ 1, và một tác vụ dữ liệu có tên là Nhiệm vụ Luồng Dữ liệu 1, như

thể hiện trong Hình 3-19.

HÌNH 3-19 Luồng điều khiển của gói SSIS được tạo trong Bài 1.

114 CHƯƠNG 3 Tạo gói SSIS

www.it-ebooks.info
Machine Translated by Google

3. Bấm đúp (hoặc bấm chuột phải) Chuẩn bị SQL Task 1, và trong menu lối tắt, hãy chọn
Chỉnh sửa để mở Trình soạn thảo Tác vụ SQL Thực thi. Như trong Hình 3-20, trình soạn thảo cung cấp

truy cập vào các cài đặt của Execute SQL Task được sử dụng để điều khiển hoạt động.

HÌNH 3-20 Trình soạn thảo tác vụ SQL thực thi.

Bạn sẽ tìm hiểu thêm về nhiệm vụ này trong Chương 4; trong bài tập này, bạn chỉ cần xem lại câu lệnh SQL.

4. Để xem toàn bộ khái niệm, hãy nhấp vào nút dấu chấm lửng bên trong hộp giá trị của SQL
Tài sản sao kê. Thay đổi kích thước hộp thoại trình soạn thảo tập lệnh, được hiển thị trong Hình 3-21, để có

thể đọc được thời hạn đặt cược và xem lại tập lệnh T-SQL.

Như bạn có thể thấy, nhiệm vụ sẽ cố gắng tạo hai bảng mà không cần chọn lần đầu tiên để xem

cho dù chúng đã tồn tại. Lỗi sẽ không ảnh hưởng đến cơ sở dữ liệu đích; nó sẽ,

tuy nhiên, ảnh hưởng đến việc thực thi gói SSIS, khiến nó bị lỗi.

Bài 3: Giới thiệu Luồng điều khiển, Luồng dữ liệu và Trình quản lý kết nối CHƯƠNG 3 115

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-21 Tập lệnh T-SQL được tạo bởi Trình hướng dẫn Nhập và Xuất.

5. Đóng hộp thoại trình soạn thảo câu lệnh SQL Statement bằng cách nhấp vào Hủy. Đối với mục

đích của bài tập này, mã không cần phải được sửa đổi theo bất kỳ cách nào.

6. Đóng cửa sổ Execute SQL Task Editor bằng cách nhấp vào Cancel một lần nữa.

7. Nhấp chuột phải vào Prep SQL Task 1 và chọn Thuộc tính trên menu lối tắt. Ở phía dưới bên

phải của IDE, bạn có thể thấy ngăn Thuộc tính, hiển thị các cài đặt bổ sung cho đối tượng

đã chọn — trong trường hợp này là Thực thi Tác vụ SQL. Tìm cài đặt FailPackageOn Failure

và đảm bảo rằng giá trị của nó là False, như trong Hình 3-22.

HÌNH 3-22 Thực thi các thuộc tính tác vụ SQL.

116 CHƯƠNG 3 Tạo gói SSIS

www.it-ebooks.info
Machine Translated by Google

Điều này sẽ ngăn ngừa lỗi có thể xảy ra (hoặc đúng hơn là có thể xảy ra) của việc chuẩn bị SQL Task 1

khỏi lỗi toàn bộ gói SSIS.

8. Chọn ràng buộc ưu tiên (mũi tên) dẫn từ Chuẩn bị SQL Nhiệm vụ 1 đến

Tác vụ Luồng dữ liệu 1. Nhấn Delete trên bàn phím hoặc nhấp chuột phải vào ràng buộc và chọn
Xóa để loại bỏ ràng buộc.

Các ràng buộc về ưu tiên được thảo luận chi tiết hơn trong Chương 4.

9. Từ Hộp công cụ SSIS, kéo một Nhiệm vụ SQL Thực thi khác vào ngăn điều khiển.

10. Bấm đúp vào nhiệm vụ mới được thêm vào hoặc bấm chuột phải vào nó, sau đó chọn Chỉnh sửa, để mở

Thực thi SQL Task Editor. Thực hiện nhiệm vụ bằng cách sử dụng thông tin trong Bảng 3-1.

BẢNG 3-1 Thực thi thuộc tính tác vụ SQL

Tài sản Giá trị

Tên Chuẩn bị SQL Task 2

Kiểu kết nối KHÔNG DB

Sự liên quan DestinationConnectionOLEDB

SQLSourceType Nhập trực tiếp

11. Nhấp vào nút dấu chấm lửng bên trong hộp giá trị của thuộc tính SQLStatement để chỉnh sửa

SQLStatement và nhập các câu lệnh từ Liệt kê 3-1.

DANH SÁCH 3-1 Cắt ngắn các Bảng Đích đến

TRUNCATE TABLE Sản xuất.ProductAndDescription; TRUNCATE TABLE


Sản xuất.ProductModelInstructions;

Theo tùy chọn, bạn có thể sao chép và dán các câu lệnh từ TK463Chapter03.sql le,

nằm trong thư mục C: \ TK463 \ Chapter03 \ Code. Bấm OK khi bạn chỉnh sửa xong
lời tuyên bố, phát biểu.

12. Khi bạn đã hoàn thành nhiệm vụ như thực hiện ở bước 10 và 11, hãy thực hiện

thay đổi bằng cách nhấp vào OK. Hình 3-23 cho thấy Nhiệm vụ SQL chuẩn bị 2 đã được kiểm tra.

Bài 3: Giới thiệu Luồng điều khiển, Luồng dữ liệu và Trình quản lý kết nối CHƯƠNG 3 117

www.it-ebooks.info
Machine Translated by Google

HÌNH 3-23 Chuẩn bị Nhiệm vụ SQL 2.

13. Chọn Nhiệm vụ SQL Chuẩn bị 1. Một mũi tên nhỏ sẽ xuất hiện bên dưới nó. Kéo mũi tên
chuyển sang Tác vụ SQL chuẩn bị 2, và sau đó giải phóng nó để tạo ràng buộc ưu tiên giữa hai

tác vụ, như thể hiện trong Hình 3-24.

HÌNH 3-24 Tạo ràng buộc ưu tiên.

14. Nhấp đúp vào ràng buộc ưu tiên bạn vừa tạo hoặc nhấp chuột phải vào nó và chọn
Chỉnh sửa. Trong Trình soạn thảo ràng buộc ưu tiên, được hiển thị trong Hình 3-25, bạn có thể

hiểu các điều kiện của việc thực thi gói SSIS.

118 CHƯƠNG 3 Tạo gói SSIS

www.it-ebooks.info

You might also like