Professional Documents
Culture Documents
PHẦN I
Thiết kế và
Thực hiện một
Kho dữ liệu
www.it-ebooks.info
Machine Translated by Google
www.it-ebooks.info
Machine Translated by Google
CHƯƠNG 1
đồ 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 để
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.
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
nghiệm làm việc với Microsoft SQL Server 2012 Management Studio. ■ Có kiến thức về
AdventureWorksDW2012.
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).
www.it-ebooks.info
Machine Translated by Google
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
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
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,
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
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
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
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.
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à
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."
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
HÌNH 1-3 Sản phẩm là một thứ nguyên được chia sẻ.
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ư.
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à
www.it-ebooks.info
Machine Translated by Google
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
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.
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
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
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.
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
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
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.
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ọ.
www.it-ebooks.info
Machine Translated by Google
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.
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
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
www.it-ebooks.info
Machine Translated by Google
4. Phân tích kỹ lưỡng các bảng, cột và các mối quan hệ.
■ 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
■ 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
■ 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ơ đồ.
www.it-ebooks.info
Machine Translated by Google
đồ 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.
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
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
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
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
A. Lược đồ sao
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.)
B. Kích thước
C. Biện pháp
D. Bảng dữ kiện
www.it-ebooks.info
Machine Translated by Google
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
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
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.
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 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
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ộ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
www.it-ebooks.info
Machine Translated by Google
Hình 1-9 cho thấy thứ nguyên DimCustomer của cơ sở dữ liệu mẫu AdventureWorksDW2012.
Trong gure, các cột sau là thuộc tính (cột được sử dụng để xoay vòng):
■ MaritalStatus
■ Giới tính
■ TotalChildren
■ 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
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
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):
■ 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
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ế
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à
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,
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ó ý
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à
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
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á
BẢNG 1-2 Dữ liệu OLTP cho một khách hàng sau khi thành phố thay đổi
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
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ử.
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ạ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ả
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
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
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ố.
CustomerId Họ và tên Thành phố hiện tại Thành phố trước Nghề 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,
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
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.
www.it-ebooks.info
Machine Translated by Google
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á
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
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
■ Dòng dõi
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.
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
www.it-ebooks.info
Machine Translated by Google
www.it-ebooks.info
Machine Translated by Google
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ó 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ả
■ 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ơ đồ.
■ 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).
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.
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
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.
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ả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 đồ
www.it-ebooks.info
Machine Translated by Google
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à
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
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
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,
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ạ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.
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ễ,
■ Khóa ngoại
■ Biện pháp
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
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
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.
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
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
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
www.it-ebooks.info
Machine Translated by Google
Đố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"
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.
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
HÌNH 1-14 Mối quan hệ nhiều-nhiều với hai bảng trung gian.
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.
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
www.it-ebooks.info
Machine Translated by Google
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
■ 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ỳ
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 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.
www.it-ebooks.info
Machine Translated by Google
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
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.
để 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:
www.it-ebooks.info
Machine Translated by Google
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
■ 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”.
Câu hỏi
1. Bạn sẽ giải quyết vấn đề Doanh nghiệp SME như thế nào?
Để 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
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.
www.it-ebooks.info
Machine Translated by Google
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?
■ 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
www.it-ebooks.info
Machine Translated by Google
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
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
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
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.
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
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.
Đá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.
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
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
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
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
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
E. Không chính xác: Cân bằng là các biện pháp bán phụ gia.
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.
D. Đúng: Thuộc tính thành viên là một kiểu cột trong một thứ nguyên.
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.
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
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.
41
www.it-ebooks.info
Machine Translated by Google
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
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.
đổ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.
www.it-ebooks.info
Machine Translated by Google
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
■ 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
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ể
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,
đă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
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
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à
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
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
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
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
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
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í
■ Khi bạn cần bắt đầu lại chuỗi số khi đạt đến một số cụ thể (đó
■ 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
■ Khi bạn cần thay đổi đặc điểm của trình tự, chẳng hạn như gia số
giá trị.
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
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à
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
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ữ
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.
www.it-ebooks.info
Machine Translated by Google
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
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
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
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.
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ử
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.
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
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ó
■ 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ư
■ 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-
SỬ DỤNG chính;
NẾU DB_ID ('TK463DW') KHÔNG ĐẦY ĐỦ
TRÊN CHÍNH
www.it-ebooks.info
Machine Translated by Google
ĐĂNG NHẬP
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
SỬ DỤNG TK463DW;
ĐI
NẾU OBJECT_ID ('dbo.SeqCustomerDwKey', 'SO') KHÔNG ĐẦY ĐỦ
TĂNG BẰNG 1;
ĐI
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
đượ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
CustomerDwKey INT CÓ GIÁ TRỊ Phím thay thế; gán giá trị với một
sự phối hợp
www.it-ebooks.info
Machine Translated by Google
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:
"Trẻ hơn"
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.
NGÀY
VÔ GIÁ TRỊ,
www.it-ebooks.info
Machine Translated by Google
ĐI
3. Tạo thứ nguyên Sản phẩm. Nguồn cho thứ nguyên này là DimProducts
BẢNG 2-2 Thông tin cột cho thứ nguyên sản phẩm
Kích thước
NVARCHAR (50) VÔ GIÁ TRỊ
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.
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 ĐỦ,
ĐI
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
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.
ĐI
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
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.
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
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.
CÓ GIÁ TRỊ,
INT CÓ GIÁ TRỊ,
INT CÓ GIÁ TRỊ,
CONSTRAINT PK_InternetSales
Đ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ả
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.
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
■ 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. ■
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
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?
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. Một hàng trong bảng dữ kiện được thêm vào khi tải thứ nguyên
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ế
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-
www.it-ebooks.info
Machine Translated by Google
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
■ 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
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 đó
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ỳ
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
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
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
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
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.
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.
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.
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
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.
NumberOfRows
TỪ dbo.FactInternetSales
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
CHỌN ProductKey,
SUM (SalesAmount) NHƯ Doanh số,
COUNT_BIG (*) AS NumberOfRows
TỪ dbo.FactInternetSales
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.
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
đượ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
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.
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
AS OrderLineNumber,
ISA.SalesAmount
TỪ dbo.FactInternetSales AS ISA
SUM (ISG.SalesAmount)
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
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.
■ 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.
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
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
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.
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
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
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
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
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
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.
■ 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.
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:
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
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ỏ.
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.
www.it-ebooks.info
Machine Translated by Google
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
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
CustomerDwKey INT CÓ GIÁ TRỊ Phím thay thế; gán giá trị với một
sự phối hợp
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:
"Trẻ hơn"
www.it-ebooks.info
Machine Translated by Google
LỰA CHỌN
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
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
Kích thước
NVARCHAR (50) KHÔNG CÓ
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).
www.it-ebooks.info
Machine Translated by Google
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
www.it-ebooks.info
Machine Translated by Google
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
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.
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.
ĐI
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.
ON I.ProductKey = p.ProductKey
INNER JOIN dbo.Dates AS d ON
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.
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.
■ 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.
www.it-ebooks.info
Machine Translated by Google
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ả
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.)
C. Quét
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.)
D. Để tăng tốc các truy vấn liên quan đến nhiều phép nối
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.
www.it-ebooks.info
Machine Translated by Google
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ệ
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
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
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
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
■ 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
■ 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
■ 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.
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
www.it-ebooks.info
Machine Translated by Google
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.
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
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
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ư
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.
INT
CONSTRAINT PK_InternetSales
www.it-ebooks.info
Machine Translated by Google
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.
LỰA CHỌN
TỪ AdventureWorksDW2012.dbo.FactInternetSales AS FIS
INNER THAM GIA dbo. Khách hàng NHƯ C
(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
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
CONSTRAINT PK_InternetSalesNew
Đ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.
(PcInternetSalesYear, CustomerDwKey,
ProductKey, DateKey,
AS PcInternetSalesYear,
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
(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.
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
www.it-ebooks.info
Machine Translated by Google
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
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
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)
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.
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 ()
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.
www.it-ebooks.info
Machine Translated by Google
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?
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?
Để 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ỉ
■ 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.
■ 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à
■ 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.
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).
www.it-ebooks.info
Machine Translated by Google
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
■ 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.
www.it-ebooks.info
Machine Translated by Google
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
Bài 1
1. Đáp án đúng: A và B
B. Đúng: Bạn có thể sử dụng đối tượng SQL Server 2012 SEQUENCE mới cho
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. 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 để
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. Đú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
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
Đáp án CHƯƠNG 2 81
www.it-ebooks.info
Machine Translated by Google
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.
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ý.
D. Đúng: Lược đồ phân vùng thực hiện phân vùng vật lý.
A. Đúng: Nó phải có các ràng buộc giống như bảng được 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.
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.
www.it-ebooks.info
Machine Translated by Google
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à
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.
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ý.
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
Đá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
www.it-ebooks.info
Machine Translated by Google
www.it-ebooks.info
Machine Translated by Google
CHƯƠNG 3
■ Tải dữ liệu
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),
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
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ừ
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
■ 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ữ
Đ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
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ủ
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).
www.it-ebooks.info
Machine Translated by Google
■ 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
■ 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).
Đố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:
■ 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.
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à
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
www.it-ebooks.info
Machine Translated by Google
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.
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ó.
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
www.it-ebooks.info
Machine Translated by Google
HÌNH 3-4 Chỉ định sao chép hoặc truy vấn bảng.
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
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
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ả
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,
www.it-ebooks.info
Machine Translated by Google
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
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
(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.
www.it-ebooks.info
Machine Translated by Google
www.it-ebooks.info
Machine Translated by Google
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.
1. Mở Windows Explorer và điều hướng đến thư mục C: \ TK463 \ Chapter03 \ Lesson1, nơi bạn
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!
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.
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ó.
■ 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
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” ở
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.
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
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
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?
B. Chúng được lưu trữ dưới dạng văn bản thuần túy les.
D. Chúng được lưu trữ dưới dạng tài liệu Microsoft Word đặc biệt.
www.it-ebooks.info
Machine Translated by Google
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
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ả
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
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
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
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
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
www.it-ebooks.info
Machine Translated by Google
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
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.
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
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
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
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.
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.
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.”
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.
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 để
■ 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
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. 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
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à
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ữ
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
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
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
www.it-ebooks.info
Machine Translated by Google
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
■ 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).
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
■ 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
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
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
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
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
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
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
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
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à
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
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
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ụ
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.
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.
www.it-ebooks.info
Machine Translated by Google
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: \
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.
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ư
HÌNH 3-19 Luồng điều khiển của gói SSIS được tạo trong Bài 1.
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.
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.
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
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.
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
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
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
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.
www.it-ebooks.info