You are on page 1of 64

NGÂN HÀNG NHÀ NƯỚC VIỆT NAM BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP. HỒ CHÍ MINH


KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ
---------------------------------------------------------

BÀI TẬP NHÓM


Môn học: Kho dữ liệu và hệ hỗ trợ ra quyết định
Chủ đề:

TÌM HIỂU VỀ SSIS: EXECUTE SQL TASK, DATA FLOW


TASK (EXCEL, DATA CONVERSION, DERIVERED
COLUMN)

Lớp : ITS718_231_1_D01
Giảng viên hướng dẫn : Ths.Nguyễn Hoàng Ân
Nhóm thực hiện : Nhóm 6

ST Họ và tên thành viên MSSV


T
1 Đoàn Trương Khánh Nhi 030237210133
2 Nguyễn Thị Ngọc Sương 030237210163
3 Phan Hoàng Bảo Trân 030237210193
4 Triệu Tuấn Vĩ 030237210212
5 Nguyễn Thanh Vy 030237210219
Mục lục
SQL Server Integration Services.....................................................................................1
I. Execute SQL Task....................................................................................................1
1. General Page - Execute SQL Task Editor............................................................2
2. Parameter Mapping Page - Execute SQL Task Editor.........................................6
3. Result Set Page - Execute SQL Task Editor......................................................10
a. None................................................................................................................11
b. Single Row.....................................................................................................13
c. Full result set..................................................................................................17
d. XML...............................................................................................................19
4. Expressions Page - Execute SQL Task Editor...................................................21
II. Data Flow Task.......................................................................................................22
1. Data Flow Task..................................................................................................22
2. Một số tính năng quan trọng nhất của Data Flow (luồng dữ liệu) trong SSIS :.22
3. Các thành phần của Data Flow...........................................................................23
a. Sơ đồ của một Data Flow :.............................................................................23
b. Các thành phần của Data Flow.......................................................................24
c. Các định nghĩa liên quan đến Data Flow........................................................29
4. Các bước tạo Data Flow Task............................................................................31
III. Data Conversion.................................................................................................34
1. Thành phần.........................................................................................................34
2. Cách chuyển đổi dữ liệu sang một kiểu dữ liệu khác.........................................34
IV. Derived Column Transformation.......................................................................38
1. Các bước biến đổi Derived Column...................................................................38
2. Lợi ích của Derived Column Transformation....................................................43
V. Nhập xuất dữ liệu cho Excel với SSIS...............................................................45
1. Tạo kết nối tới Excel..........................................................................................45
2. Phiên bản Excel..................................................................................................45
3. Hàng đầu tiên có tên cột.....................................................................................45
4. Bảng tính và phạm vi.........................................................................................46
5. Các bước thực hiện.............................................................................................47

2
6. Ưu điểm..............................................................................................................59
7. Nhược điểm........................................................................................................60
8. Lưu ý..................................................................................................................60
a. Vấn đề với kiểu dữ liệu..................................................................................60
b. Các vấn đề về đầu vào....................................................................................61
c. Các vấn đề về đầu ra.......................................................................................62
TÀI LIỆU THAM KHẢO.............................................................................................63

3
DANH MỤC HÌNH ẢNH
Hình I.1: Tạo Execute SQL Task....................................................................................2
Hình I.2: Định cấu hình các thuộc tính ở SSIS Execute SQL Task................................3
Hình I.3: Tạo Variables...................................................................................................7
Hình I.4: Nhập câu truy vấn............................................................................................8
Hình I.5: Thêm các thuộc tính vào các cột ở Parameter Mapping..................................9
Hình I.6: Kết quả nhận được ở SQL...............................................................................9
Hình I.7: Chọn None ở ResultSet..................................................................................11
Hình I.8: Nhập câu lệnh truy vấn ở SQLStatement.......................................................12
Hình I.9: Kết quả nhận được ở SQL.............................................................................12
Hình I.10: Chọn Single Row ở Result Set.....................................................................13
Hình I.11: Nhập Result Name và Variable Name ở Result Set.....................................14
Hình I.12: Chọn các biến đã được thiết lập ở thuộc tính ReadOnlyVariables trong
Script.............................................................................................................................15
Hình I.13: Nhập Code vào Edit Script..........................................................................15
Hình I.14: Chạy thành công..........................................................................................16
Hình I.15: Chọn Full result set ở ResultSet...................................................................17
Hình I.16: Nhập Result Name và Variabe Name ở Result Set......................................18
Hình I.17: Chạy thành công..........................................................................................18
Hình I.18: Chọn XML ở ResultSet...............................................................................19
Hình I.19: Nhập Result Name và Variables Name ở Result Set...................................20
Hình I.20: Nhập Code ở Edit Script..............................................................................20
Hình I.21: Kết quả chạy thành công..............................................................................21
Hình II.1: Sơ đồ hoạt động của Data Flow....................................................................23
Hình II.2: Các tác vụ phổ biến trong Data Flow...........................................................24
Hình II.3: Các tác vụ Source khác trong Data Flow.....................................................25
Hình II.4: Các tác vụ Transform khác trong Data Flow................................................27
Hình II.5: Các tác vụ Destination khác trong Data Flow..............................................29
Hình II.6: Kéo Data Flow vào Control Flow.................................................................31
Hình II.7: Chọn Rename đổi tên Data Flow Task.........................................................32
Hình II.8: Chọn Properties để đổi các thuộc tính của Data Flow Task.........................33
Hình III.1: Tạo Data Conversion bằng cách kéo từ Toolbox vào vùng thiết kế...........34
Hình III.2: Kết nối Data Conversion với nguồn dữ liệu................................................35
Hình III.3: Chọn các cột cần chuyển đổi dữ liệu trong bảng Available Input Columns ở
hộp thoại Data Conversion Transformation Editor.......................................................35
Hình III.4: Điều chỉnh các giá trị mặc định trong cột Output Alias..............................36
Hình III.5: Chọn kiểu dữ liệu trong cột Data Type.......................................................36
Hình III.6: Cập nhật các giá trị trong các cột Length, Precision, Scale và Code Page. 37
Hình III.7: Cấu hình lỗi đầu ra trong Configure Error Output......................................37
Hình III.8: Kết quả sau khi chạy thành công.................................................................38

4
Hình IV.1: Kéo thả Data Flow Task vào tab Control Flow..........................................38
Hình IV.2: Thêm source đầu vào ở tab Data Flow........................................................39
Hình IV.3: Kết nối source đầu vào với Derived Column..............................................39
Hình IV.4: SSIS Derived Column Editor......................................................................40
Hình IV.5: Error output configuration..........................................................................42
Hình IV.6: Luồng dữ liệu hoàn chỉnh...........................................................................43
Hình IV.7: Ví dụ minh họa............................................................................................44
Hình V.1: Tạo Data Flow trong Control Flow..............................................................47
Hình V.2: Tạo Excel Source trong Data Flow..............................................................47
Hình V.3: Tạo Conection Manager mới........................................................................48
Hình V.4: Lựa chọn nguồn Excel..................................................................................49
Hình V.5: Chọn đường dẫn tới tệp Excel......................................................................50
Hình V.6: Chọn file Excel.............................................................................................51
Hình V.7: Chọn đường dẫn tới file Excel.....................................................................52
Hình V.8: Excel Conection Manager vừa được tạo và kết nối......................................53
Hình V.9: Trình quản lí kết nối.....................................................................................54
Hình V.10: Lựa chọn hình thức kết nối Data................................................................55
Hình V.11: Mở hộp thoại thực hiện lệnh SQL..............................................................56
Hình V.12: Chọn bảng tính nhập vào............................................................................57
Hình V.13: Xem trước dữ liệu......................................................................................58
Hình V.14: Lựa chọn các cột và thuộc tính trong bảng tính.........................................59

5
SQL Server Integration Services
SQL Server Integration Services là một nền tảng để xây dựng các giải pháp quy trình
làm việc và tích hợp dữ liệu hiệu suất cao, bao gồm các hoạt động trích xuất, chuyển
đổi và tải (ETL) để lưu trữ dữ liệu. Điều này bao gồm các công cụ đồ họa và trình
hướng dẫn để xây dựng và gỡ lỗi các gói.

I. Execute SQL Task


Execute SQL task chạy các câu lệnh SQL hoặc các thủ tục được lưu trữ từ một gói.
Tác vụ có thể chứa một câu lệnh SQL hoặc nhiều câu lệnh SQL chạy tuần tự. Có thể
sử dụng Execute SQL task cho các mục đích sau:

- Cắt bớt table hoặc view để chuẩn bị chèn dữ liệu.

- Tạo, thay đổi và loại bỏ các đối tượng cơ sở dữ liệu như tables and views.

- Tạo lại fact and dimension tables trước khi tải dữ liệu vào chúng.

- Chạy các thủ tục được lưu trữ. Nếu câu lệnh SQL gọi một thủ tục lưu trữ trả về kết
quả từ một bảng tạm thời, hãy sử dụng tùy chọn CÓ TẬP KẾT QUẢ để xác định siêu
dữ liệu cho tập hợp kết quả.

- Lưu tập hợp hàng được trả về từ truy vấn vào một biến.

Execute SQL task có thể được sử dụng kết hợp với các vùng chứa Foreach Loop và
For Loop để chạy nhiều câu lệnh SQL. Các vùng chứa này triển khai các luồng điều
khiển lặp lại trong một gói và chúng có thể chạy lặp lại Execute SQL task. Ví dụ: bằng
cách sử dụng bộ chứa Foreach Loop, một gói có thể liệt kê các tệp trong một thư mục
và chạy lặp lại tác vụ Thực thi SQL để thực thi câu lệnh SQL được lưu trữ trong mỗi
tệp.

Configure the Execute SQL task

Bạn có thể cấu hình Execute SQL task theo những cách sau:

- Chỉ định loại connection manager sẽ sử dụng để kết nối với cơ sở dữ liệu.

- Chỉ định loại tập kết quả mà câu lệnh SQL trả về.

- Chỉ định thời gian chờ cho các câu lệnh SQL

- Chỉ định nguồn của câu lệnh SQL

- Cho biết liệu tác vụ có bỏ qua giai đoạn chuẩn bị cho câu lệnh SQL hay không.

1
- Nếu sử dụng loại kết nối ADO, phải cho biết liệu câu lệnh SQL có phải là thủ tục
được lưu trữ hay không. Đối với các loại kết nối khác, thuộc tính này ở chế độ chỉ đọc
và giá trị của nó luôn là sai.

Các bước trong việc định cấu hình Execute SQL Task trong SSIS bằng một ví dụ :
Đầu tiên, kéo Execute SQL Task trong Toolbar và thả nó vào vùng Control Flow.

Hình I.1: Tạo Execute SQL Task


Nhấp đúp chuột vào nó sẽ mở Editor để cấu hình nó.

1. General Page - Execute SQL Task Editor


Tab này được sử dụng để định cấu hình các thuộc tính SSIS Execute SQL Task.

2
Hình I.2: Định cấu hình các thuộc tính ở SSIS Execute SQL Task
General

- Name: Cung cấp tên duy nhất cho Execute SQL task trong quy trình làm việc. Tên
được cung cấp sẽ được hiển thị trong SSIS Designer.

- Description: Mô tả ngắn gọn chức năng nhiệm vụ. Việc cung cấp mô tả hợp lệ luôn
là một phương pháp hay.

+ Trong thời gian thực, vui lòng thay đổi tên SSIS Execute SQL Task thành tên
thích hợp và viết mô tả để giải thích chức năng của tác vụ. Mô tả giúp các nhà
phát triển khác hiểu rõ hơn về nhiệm vụ SSIS.

Options

- TimeOut: Chỉ định số giây tối đa mà tác vụ sẽ chạy trước khi hết thời gian. Giá trị 0
biểu thị thời gian vô hạn. Mặc định là 0.

- CodePage: Chỉ định trang code sẽ sử dụng khi dịch các giá trị Unicode theo biến. Giá
trị mặc định là trang code của máy tính cục bộ.

3
- Type Conversion Mode: Khi đặt thuộc tính này thành Allowed, Execute SQL Task sẽ
cố gắng chuyển đổi tham số đầu ra và kết quả truy vấn thành kiểu dữ liệu của biến mà
kết quả được gán cho. Điều này áp dụng cho loại tập hợp kết quả Single row .

Result Set

Thuộc tính SSIS Execute SQL Task này giúp chúng ta định cấu hình đầu ra. Nó có bốn
thuộc tính:

- None: Nếu không muốn trả lại bất cứ thứ gì, hãy chọn tùy chọn này. Ví dụ: ta sử
dụng Execute SQL Task để cắt bớt bảng. Sau đó, không có ích gì khi trả lại bất kỳ giá
trị nào.

- Single Row Result Set: Nếu muốn trả về tập kết quả một hàng thì ta có thể sử dụng
tùy chọn này - ví dụ: tổng số bản ghi trong một bảng, cột, v.v.

- Full Result Set: Nếu muốn trả về nhiều hàng dưới dạng tập kết quả, bạn có thể sử
dụng tùy chọn này.

- XML: Nếu muốn trả về tệp XML dưới dạng tập kết quả, ta có thể sử dụng tùy chọn
này.

SQL Statement

- ConnectionType: Execute SQL task có thể sử dụng các loại connection manager khác
nhau để kết nối với nguồn dữ liệu nơi nó chạy câu lệnh SQL hoặc thủ tục được lưu trữ.
Tác vụ có thể sử dụng các loại kết nối được liệt kê trong bảng sau :

Connection Type Connection Manager

Excel Excel Connection Manager

OLE DB OLE DB Connection Manager

ODBC ODBC Connection Manager

ADO ADO Connection Manager

ADO.NET ADO.NET Connection Manager

SQLMOBILE SQL Service Compact Edition Connection Manager

- Connection: Cấu hình cài đặt Connection Manager cho Statement. Nếu đã tạo
Connection, hãy chọn từ danh sách hoặc nhấp vào <New connection…> để tạo New
Connection.
4
- SQLSourceType: Chọn loại nguồn của câu lệnh SQL mà tác vụ chạy.

Tùy thuộc vào connection manager mà Execute SQL task sử dụng, ta phải sử dụng các
dấu tham số cụ thể trong các câu lệnh SQL được tham số hóa.

Thuộc tính này có các tùy chọn được liệt kê trong bảng sau :

Value Description

Direct input Đặt nguồn thành câu lệnh Transact-SQL. Việc chọn giá trị này sẽ
hiển thị tùy chọn động, SQL Statement.

File Chọn một tệp có chứa câu lệnh Transact-SQL. Việc đặt tùy chọn
connection này sẽ hiển thị tùy chọn động, FileConnection.

Variable Đặt nguồn thành biến xác định câu lệnh Transact-SQL. Việc chọn
giá trị này sẽ hiển thị tùy chọn động, Source Variable.

IsQueryStoredProcedure

Cho biết liệu câu lệnh SQL được chỉ định sẽ chạy là một thủ tục được lưu trữ. Thuộc
tính này chỉ đọc/ghi nếu tác vụ sử dụng ADO connection manager. Nếu không thì
thuộc tính chỉ đọc và giá trị của nó là False.

BypassPrepare

Cho biết liệu câu lệnh SQL đã được chuẩn bị chưa true bỏ qua việc chuẩn bị; false
chuẩn bị câu lệnh SQL trước khi chạy nó. Tùy chọn này chỉ khả dụng với các kết nối
OLE DB hỗ trợ chuẩn bị.

Browse

Xác định vị trí tệp chứa câu lệnh SQL bằng cách sử dụng hộp thoại Open. Chọn một
tệp để sao chép nội dung của tệp dưới dạng câu lệnh SQL vào thuộc tính
SQLStatement.

Build Query

Tạo câu lệnh SQL bằng hộp thoại Query Builder dialog, một công cụ đồ họa dùng để
tạo truy vấn. Tùy chọn này khả dụng khi tùy chọn SQLSourceType được đặt thành
Direct input.

Parse Query

Xác thực cú pháp của câu lệnh SQL.


5
2. Parameter Mapping Page - Execute SQL Task Editor
Sử dụng trang Parameter Mapping của hộp thoại Execute SQL Task Editor để ánh xạ
các biến thành các tham số trong câu lệnh SQL.

Options

Variable Name

Sau khi đã thêm parameter mapping bằng cách nhấp vào Add, hãy chọn biến hệ thống
hoặc biến do người dùng xác định từ danh sách hoặc nhấp vào <New variable...> để
thêm biến mới bằng cách sử dụng hộp thoại Add Variable.

Direction

Chọn hướng của tham số. Ánh xạ từng biến tới tham số đầu vào, tham số đầu ra hoặc
mã trả về.

Data Type

Chọn kiểu dữ liệu của tham số. Danh sách các loại dữ liệu có sẵn dành riêng cho nhà
cung cấp được chọn trong connection manager được tác vụ sử dụng.

Parameter Name

Cung cấp tên tham số.

Tùy thuộc vào loại connection manager mà tác vụ sử dụng, ta phải sử dụng số hoặc tên
tham số. Một số loại connection manager yêu cầu ký tự đầu tiên của tên tham số là @
sign, các tên cụ thể như @Param1, hoặc tên cột làm tên tham số.

Parameter Size

Cung cấp kích thước của các tham số có độ dài thay đổi, chẳng hạn như chuỗi và
trường nhị phân.

Cài đặt này đảm bảo rằng nhà cung cấp phân bổ đủ không gian cho các giá trị tham số
có độ dài thay đổi.

Add

Nhấp vào để thêm parameter mapping.

Remove

Chọn parameter mapping trong danh sách rồi bấm Remove.

Ví dụ thực hành:

6
Hình I.3: Tạo Variables

Hình I.4: Nhập câu truy vấn

7
Hình I.5: Thêm các thuộc tính vào các cột ở Parameter Mapping

Hình I.6: Kết quả nhận được ở SQL

8
3. Result Set Page - Execute SQL Task Editor
Sử dụng trang Result Set của hộp thoại Execute SQL Task Editor để ánh xạ kết quả
của câu lệnh SQL tới các biến mới hoặc biến hiện có. Các tùy chọn trong hộp thoại
này bị tắt nếu ResultSet trên trang General được đặt thành None.

Options

Result Name

Sau khi đã thêm tập ánh xạ tập kết quả bằng cách bấm vào Add, hãy đặt tên cho kết
quả. Tùy thuộc vào loại tập kết quả, phải sử dụng tên kết quả cụ thể.

Nếu loại tập kết quả là Single row, có thể sử dụng tên của cột được truy vấn trả về
hoặc số đại diện cho vị trí của cột trong danh sách cột của cột được truy vấn trả về.

Nếu loại tập kết quả là Full result set hoặc XML thì phải sử dụng 0 làm tên tập hợp kết
quả.

Variable Name

Ánh xạ tập kết quả tới một biến bằng cách chọn một biến hoặc nhấp vào <New
variable...> để thêm biến mới bằng cách sử dụng hộp thoại Add Variable.

Add

Nhấp để thêm result set mapping

Remove

Chọn ánh xạ tập kết quả trong danh sách rồi bấm Remove.

9
a. None

Hình I.7: Chọn None ở ResultSet

10
Hình I.8: Nhập câu lệnh truy vấn ở SQLStatement

Hình I.9: Kết quả nhận được ở SQL

11
b. Single Row

Hình I.10: Chọn Single Row ở Result Set

12
Hình I.11: Nhập Result Name và Variable Name ở Result Set

13
Hình I.12: Chọn các biến đã được thiết lập ở thuộc tính ReadOnlyVariables trong
Script
Edit Script

Hình I.13: Nhập Code vào Edit Script

14
Hình I.14: Chạy thành công

15
c. Full result set

Hình I.15: Chọn Full result set ở ResultSet

16
Hình I.16: Nhập Result Name và Variabe Name ở Result Set
Sau đó nhấn OK. Sau đó Start và kết quả chạy thành công

Hình I.17: Chạy thành công

17
d. XML

Hình I.18: Chọn XML ở ResultSet

18
Hình I.19: Nhập Result Name và Variables Name ở Result Set

Hình I.20: Nhập Code ở Edit Script

19
Hình I.21: Kết quả chạy thành công

4. Expressions Page - Execute SQL Task Editor


Trong Execute SQL Task Editor, có nhiều Expression mà ta có thể sử dụng để đặt
động các thuộc tính dựa trên các giá trị tại thời điểm chạy. Expression được sử dụng để
đặt giá trị cho các thuộc tính khác nhau của Execute SQL Task. Dưới đây là một số
Expression chính có thể sử dụng:

SqlStatementSource:

- Thuộc tính này được sử dụng để chỉ định câu lệnh SQL hoặc thủ tục lưu trữ mà
bạn muốn thực thi.
- Ta có thể sử dụng một biểu thức để đặt động câu lệnh SQL dựa trên biến hoặc
các giá trị động khác.

Connection:

- Thuộc tính kết nối được sử dụng để chỉ định quản lý kết nối sẽ được sử dụng
bởi tác vụ.
- Ta có thể sử dụng một biểu thức để đặt động quản lý kết nối dựa trên điều kiện
hoặc biến nhất định.

IsQueryStoredProcedure:

- Thuộc tính này xác định xem câu lệnh SQL có phải là truy vấn trực tiếp hay thủ
tục lưu trữ không.
- Ta có thể sử dụng một biểu thức để đặt động thuộc tính này dựa trên điều kiện.
20
ResultSetType:

- Chỉ định loại kết quả cho câu lệnh SQL.


- Biểu thức có thể được sử dụng để đặt động thuộc tính này.

ResultName:

- Chỉ định tên kết quả của bộ kết quả.


- Ta có thể sử dụng biểu thức để đặt động thuộc tính này.

Để đặt một Expression cho một thuộc tính trong Execute SQL Task Editor:

B1: Mở Execute SQL Task Editor.

B2: Chuyển đến tab "Expressions".

B3: Chọn thuộc tính bạn muốn đặt biểu thức trong danh sách "Property".

B4: Nhấp vào cột "Expression" và đặt biểu thức.

Ví dụ: Đặt động câu lệnh SQL dựa trên một biến, ta sẽ đặt biểu thức cho thuộc tính
SqlStatementSource.

II. Data Flow Task

1. Data Flow Task


Data Flow Task (tác vụ Luồng dữ liệu) là một trong những thành phần quan trọng
của SQL Server Integration Services (SSIS). Nó được sử dụng để di chuyển luồng dữ
liệu từ Source (nguồn) đến Destination (đích), đồng thời cho phép người dùng chuyển
đổi dữ liệu như dọn dẹp, sửa đổi và mở rộng dữ liệu khi dữ liệu được di chuyển. Việc
thêm Data Flow Task vào trong Control Flow giúp package có thể trích xuất, chuyển
đổi và tải dữ liệu. Data Flow Task là nơi mà hầu hết các công việc của quá trình trích
xuất, chuyển đổi và tải (ETL) được thực hiện.

2. Một số tính năng quan trọng nhất của Data Flow (luồng dữ liệu) trong
SSIS :
- Trích xuất dữ liệu: trích xuất dữ liệu từ các nguồn khác nhau như cơ sở dữ liệu, tệp
tin văn bản, danh sách, web service,...Cho phép việc lấy dữ liệu từ nhiều nguồn khác
nhau và sử dụng chúng để tiếp tục xử lý.

21
- Chuyển đổi dữ liệu: cung cấp các thành phần chuyển đổi dữ liệu cho phép thực hiện
các thao tác như chuẩn hóa dữ liệu, chuyển đổi kiểu dữ liệu, tính toán mới, ghép nối
dữ liệu, lọc, sắp xếp và làm sạch dữ liệu trước khi nó được tải vào cơ sở dữ liệu đích.

- Xử lý dữ liệu hàng loạt: xử lý dữ liệu hàng loạt thông qua việc xử lý các tập hợp dữ
liệu theo các nhóm hoặc cỡ lớn mà không gặp vấn đề hiệu suất.

- Đồ thị thực hiện: thiết kế và xây dựng các đồ thị thực hiện phức tạp. Ta có thể tạo ra
các quy trình luồng dữ liệu phức tạp bằng cách kết hợp các thành phần trích xuất,
chuyển đổi và tải vào các quy trình xử lý dữ liệu.

- Tiếp tục thực hiện: Data Flow cho phép tiếp tục công việc từ nơi đã dừng lại trong
quá trình xử lý dữ liệu nhất là xử lý dữ liệu lớn và cần thực hiện các công việc phức
tạp trên dữ liệu trong quá trình xử lý.

3. Các thành phần của Data Flow

a. Sơ đồ của một Data Flow :

Hình II.22: Sơ đồ hoạt động của Data Flow

22
b. Các thành phần của Data Flow
Một data flow trong SSIS cần phải có đủ :

- Sources (Nguồn)

- Transformation (Chuyển đổi)

- Destination (Đích)

Một số tác vụ phổ biến :

Hình II.23: Các tác vụ phổ biến trong Data Flow


Sources (Nguồn) : Source được sử dụng để trích xuất dữ liệu từ các nguồn, kho dữ
liệu như table (bảng) và dạng view trong cơ sở dữ liệu quan hệ (relational databases),
các tệp tin và cơ sở dữ liệu Analysis Services. Cho đến nay, nguồn OLE DB là tùy
chọn nhanh nhất cho SQL Server.

Các nguồn phổ biến :

23
Source

Sử dụng dữ liệu từ nhà cung cấp .NET và làm cho dữ liệu


ADO.NET
xuất hiện trong luồng dữ liệu.

Trích xuất dữ liệu từ các trang tính hoặc một phạm vi trong
Excel
workbook Microsoft Excel.

Trích xuất dữ liệu từ nhiều cơ sở dữ liệu nào có sẵn nhà


OLE DB cung cấp OLE DB bằng cách sử dụng bảng (table) cơ sở dữ
liệu, view hoặc lệnh SQL.

Raw File Đọc dữ liệu thô từ một tệp.

Đọc tệp dữ liệu XML và điền dữ liệu vào các cột trong đầu
XML
ra nguồn.

Flat File Đọc dữ liệu từ tệp văn bản.

Hình II.24: Các tác vụ Source khác trong Data Flow


Transformation (Chuyển đổi) : là nơi xử lý, biến đổi dữ liệu như tổng hợp, lọc, sắp
xếp, ghép nối, tính toán, sửa đổi, tóm tắt và làm sạch dữ liệu theo các quy tắc được xác
định.

24
Các chuyển đổi phổ biến :

Transformation

Tách các luồng dữ liệu dựa trên một hoặc nhiều điều kiện ,
Conditional Split
phân phối vào nhiều đầu ra khác nhau.

Cho phép thao tác với các cột hiện có hoặc tạo các cột mới
Derived Column
bằng cách sử dụng biểu thức

Xác định các hàng/cột dữ liệu có khả năng trùng lặp và


Fuzzy Grouping chọn một hàng/cột dữ liệu chuẩn để sử dụng trong việc
chuẩn hóa dữ liệu.

Tương tự như hàm VLOOKUP trong Excel. Tra cứu các


Lookup giá trị trong bảng tham chiếu bằng cách sử dụng kết quả
khớp chính xác.

OLE DB Command Chạy câu lệnh SQL cho mỗi hàng trong luồng dữ liệu.

Tạo tập dữ liệu mẫu bằng cách sử dụng tỷ lệ phần trăm để


Percentage Sampling
chỉ định cỡ mẫu.

Làm cho một tập dữ liệu chuẩn hóa thành một phiên bản ít
Pivot chuẩn hóa hơn, nhưng nhỏ gọn hơn bằng cách xoay
(pivoting) dữ liệu đầu vào trên một giá trị cột.

Tạo ra một tập dữ liệu mẫu bằng cách chỉ định số hàng
Row Sampling
trong mẫu.

Sort Cho phép sắp xếp dữ liệu và loại bỏ các bản sao

Tạo tập dữ liệu chuẩn hóa thành phiên bản chuẩn hóa hơn
Unpivot bằng cách mở rộng các giá trị từ nhiều cột trong một bản
ghi thành nhiều bản ghi có cùng giá trị trong một cột.

Multicast Sao chép một luồng dữ liệu thành nhiều luồng và phân
25
phối cho nhiều đầu ra

Thực hiện các phép tổng hợp như AVERAGE, SUM và


Aggregate
COUNT.

Cho phép chuyển đổi các cột từ kiểu dữ liệu này sang kiểu
Data Conversion
dữ liệu khác

Merge Hợp nhất hai luồng dữ liệu được sắp xếp với nhau

Kết hợp hai tập dữ liệu bằng cách sử dụng kết nối FULL,
Merge Join
LEFT hoặc INSIDE.

Lưu trữ một tập lệnh để trích xuất, chuyển đổi hoặc tải dữ
Script Component
liệu.

Hình II.25: Các tác vụ Transform khác trong Data Flow

Destination (Đích) : là nơi lưu trữ hoặc tải dữ liệu vào kho dữ liệu được xử lý từ
source và transformationải hoặc tạo bộ dữ liệu trong bộ nhớ. Ta có thể sử dụng nhiều
loại Destination như cơ sở dữ liệu SQL Server, tệp tin, hoặc hệ thống truyền tải dữ liệu
khác. Cho đến nay, đích OLE DB là tùy chọn nhanh nhất cho SQL Server.

Các đích phổ biến :


26
Destination

Tải dữ liệu vào nhiều ADO khác nhau. Cơ sở dữ liệu từ


ADO.NET
nhà cung cấp .NET sử dụng table hoặc view cơ sở dữ liệu.

Tải dữ liệu vào trang tính hoặc một phạm vi trong


Excel
workbook Microsoft Excel.

Tải dữ liệu vào nhiều cơ sở dữ liệu nào có sẵn nhà cung


OLE DB cấp OLE DB bằng cách sử dụng bảng (table) cơ sở dữ liệu,
view hoặc lệnh SQL.

Raw File Ghi dữ liệu thô vào một tệp.

SQLServer
Ghi dữ liệu vào cơ sở dữ liệu SQL Server Compact.
Compact Edition

Kết nối với cơ sở dữ liệu SQL Server cục bộ và tải các dữ


SQL Server
liệu vào tables và view của SQL Server.

Flat File Ghi dữ liệu vào tệp văn bản

27
Hình II.26: Các tác vụ Destination khác trong Data Flow
Tất cả các thành phần này cần có để xây dựng một Data Flow hoàn chỉnh trong SSIS.

Một package trong SSIS có thể chứa nhiều Data Flow Task, mỗi task có thể chứa một
Data Flow riêng của nó. Mỗi Data Flow Task lại có thể có nhiều nguồn, chuyển đổi và
đích dữ liệu, số lượng của chúng phụ thuộc vào yêu cầu của người dùng và thiết kế của
package. Tuy nhiên, công cụ có thể sẽ xác định thứ tự thực thi khi có nhiều Data Flow
trong một Data Flow Task. Ví dụ, nếu một package yêu cầu các Data Flow được thực
hiện theo một thứ tự nhất định, hoặc có các tác vụ phải thực hiện giữa các Data Flow,
ta phải sử dụng một Data Flow Task riêng cho mỗi Data Flow. Do đó, package nên sử
dụng nhiều Data Flow Task, mỗi task chứa một Data Flow. Khi đó, ta có thể áp dụng
các ràng buộc ưu tiên để kiểm soát thứ tự thực hiện của các task.

c. Các định nghĩa liên quan đến Data Flow


Input ( Đầu vào )

Các đích và chuyển đổi đều có Input. Một Input chứa một hoặc nhiều cột đầu vào và
có thể tham chiếu đến các cột bên ngoài mà thành phần luồng dữ liệu đã được cấu hình
để sử dụng. Input có thể được cấu hình để giám sát và kiểm soát luồng dữ liệu: Ví dụ:
ta có thể chỉ định xem thành phần có bị lỗi hay không, khi bị lỗi nên bỏ qua lỗi hoặc
chuyển hướng các hàng lỗi sang Error Output hay không. Ta cũng có thể gán mô tả

28
hoặc cập nhật tên cho Input. Trong SSIS Designer, Input được cấu hình bằng cách sử
dụng hộp thoại Advanced Editor (Trình chỉnh sửa nâng cao).

Output ( Đầu ra )

Các đích và chuyển đổi đều có Output. Một Output chứa một hoặc nhiều cột đầu ra và
có thể tham chiếu đến các cột bên ngoài mà thành phần luồng dữ liệu đã được cấu hình
để sử dụng. Output có thể được cấu hình để cung cấp thông tin hữu ích cho quá trình
xử lý dữ liệu tiếp theo. Ví dụ: ta có thể cho biết Output có được sắp xếp hay không. Ta
cũng có thể gán mô tả hoặc cập nhật tên cho Output. Trong SSIS Designer, Output
được đặt cấu hình bằng cách sử dụng hộp thoại Advanced Editor (Trình chỉnh sửa
nâng cao).

Error Output ( Đầu ra lỗi )

Được dùng để xử lý các lỗi xảy ra trong Data Flow, cho phép chúng ta kiểm soát và xử
lý các dòng dữ liệu gây ra lỗi. Nguồn, đích và chuyển đổi có thể bao gồm Error
Output. Ta có thể chỉ định cách thành phần luồng dữ liệu phản hồi với các lỗi trong
mỗi Input hoặc cột bằng cách sử dụng hộp thoại Configure Error Output (Định cấu
hình đầu ra lỗi). Nếu trong thời gian chạy xảy ra lỗi hoặc thiếu hụt dữ liệu, các hàng
dữ liệu có lỗi sẽ được gửi đến Error Output. Error Output có thể được kết nối với các
chuyển đổi áp dụng các phép chuyển đổi bổ sung hoặc hướng dữ liệu đến một đích
khác.

Theo mặc định, Error Output chứa các cột đầu ra và hai cột lỗi: ErrorCode và
ErrorColumn. Các cột đầu ra chứa dữ liệu từ hàng bị lỗi, ErrorCode cung cấp mã lỗi
và ErrorColumn xác định cột bị lỗi.

Connection Managers ( Trình quản lý kết nối)

SSIS sử dụng kết nối để thực hiện các tác vụ khác nhau và triển khai các tính năng
khác nhau như kết nối với các kho dữ liệu nguồn và đích như văn bản, XML, Excel,...
để trích xuất và tải dữ liệu; kết nối với cơ sở dữ liệu quan hệ để thực hiện tra cứu,chạy
các câu lệnh SQL; kết nối với SQL Server ;... Để thực hiện các kết nối này, Integration
Services đã sử dụng Connection Managers, để quản lý các kết nối.

Connection Managers có thể thêm vào trước khi bắt đầu hoặc ngay khi xây dựng Data
Flow.

29
SSIS cung cấp các loại Connection Managers khác nhau cho phép các package kết nối
với nhiều nguồn dữ liệu và máy chủ, có Connection Managers tích hợp sẵn khi cài đặt
và có các Connection Managers có thể tải xuống từ Microsoft

4. Các bước tạo Data Flow Task


Trong package muốn thêm Data Flow , chọn tab Control Flow :

1. Trong ngăn SSIS Toolbox, mở rộng mục Favorites và nhấn chọn Data Flow
Task kéo vào đặt trong bề mặt thiết kế (design surface) của tab Control Flow.

Hình II.27: Kéo Data Flow vào Control Flow


2. Trên bề mặt thiết kế Control Flow, bấm chuột phải vào Data Flow Task mới ,
chọn Rename và đổi tên theo yêu cầu công việc.

30
Hình II.28: Chọn Rename đổi tên Data Flow Task
Các thành phần trên bề mặt thiết kế của Control Flow đều phải là duy nhất để dễ sử
dụng và bảo trì, các tên nên mô tả chức năng của từng thành phần. Việc tuân thủ các
nguyên tắc đặt tên này cho phép Integration Services packages tự ghi lại. Một cách
khác để ghi lại các package là sử dụng chú thích.

3. Bấm chuột phải vào Data Flow Task, chọn Properties và trong cửa sổ Properties
có thể chỉnh sửa các thuộc tính của Data Flow.

31
Hình II.29: Chọn Properties để đổi các thuộc tính của Data Flow Task

32
III. Data Conversion

1. Thành phần
Data Conversion không quá phức tạp, gồm hai phần chính:

- Các cột đầu vào (Input columns): Phần này dùng để chọn các cột mà chúng ta muốn
chuyển đổi kiểu dữ liệu của chúng.

- Cấu hình chuyển đổi dữ liệu (Data conversion configuration): Phần này là nơi chúng
ta chỉ định các kiểu dữ liệu SSIS của các cột đầu ra, và các thuộc tính liên quan khác
như:

+ Output Alias: Xác định tên cột đầu ra.

+ Length: Thiết lập độ dài cột đầu ra cho kiểu dữ liệu chuỗi.

+ Precision: Thiết lập độ chính xác của cột đối với kiểu dữ liệu số.

+ Scale: Thiết lập số thập phân của cột đối với kiểu dữ liệu số.

+ Code Page: Chọn trang mã cho các cột có kiểu DT_STR.


(Microsoft, 2023)

2. Cách chuyển đổi dữ liệu sang một kiểu dữ liệu khác


1. Trong SQL Server Data Tools (SSDT), mở dự án Integration Services chứa
gói bạn muốn.

2. Trong Solution Explorer, nhấp đúp vào gói để mở nó.

3. Nhấp vào tab Data Flow, sau đó kéo thành phần Data Conversion từ Toolbox
vào bề mặt thiết kế.

33
Hình III.30: Tạo Data Conversion bằng cách kéo từ Toolbox vào vùng thiết kế
4. Kết nối thành phần Data Conversion với luồng dữ liệu bằng cách kéo một kết
nối từ nguồn hoặc thành phần chuyển đổi trước đó đến thành phần Data
Conversion.

Hình III.31: Kết nối Data Conversion với nguồn dữ liệu


5. Nhấp đúp vào thành phần Data Conversion.

6. Trong hộp thoại Data Conversion Transformation Editor, trong bảng Available
Input Columns, chọn hộp kiểm bên cạnh các cột cần chuyển đổi kiểu dữ liệu.

34
Hình III.32: Chọn các cột cần chuyển đổi dữ liệu trong bảng Available Input Columns
ở hộp thoại Data Conversion Transformation Editor
7. Tùy chọn, chỉnh sửa các giá trị mặc định trong cột Output Alias.

Hình III.33: Điều chỉnh các giá trị mặc định trong cột Output Alias
8. Trong danh sách Data Type, chọn kiểu dữ liệu mới cho cột. Kiểu dữ liệu mặc
định là kiểu dữ liệu của cột đầu vào.

35
Hình III.34: Chọn kiểu dữ liệu trong cột Data Type
9. Tùy chọn, tùy thuộc vào kiểu dữ liệu được chọn, cập nhật các giá trị trong các
cột Length, Precision, Scale và Code Page.

Hình III.35: Cập nhật các giá trị trong các cột Length, Precision, Scale và Code Page
10. Để cấu hình đầu ra lỗi, nhấp vào Configure Error Output. Để biết thêm thông
tin, xem Debugging Data Flow.

36
Hình III.36: Cấu hình lỗi đầu ra trong Configure Error Output
11. Nhấp OK.

12. Để lưu gói đã cập nhật, nhấp vào Save Selected Items trên menu File.
(Microsoft, 2023)

Kết quả nhận được sau khi chạy thành công:

Hình III.37: Kết quả sau khi chạy thành công

37
IV. Derived Column Transformation
Trong SQL Server Integration Services (SSIS), biến đổi Derived Column là một bước
biến đổi dữ liệu, cho phép tạo ra các cột mới hoặc sửa đổi các cột hiện có trong một
luồng dữ liệu bằng cách sử dụng các biểu thức. Những biểu thức này có thể là sự kết
hợp của các biến do hệ thống và người dùng định nghĩa, các cột từ tập dữ liệu đầu vào
và các hàm nội tại do SSIS cung cấp.

1. Các bước biến đổi Derived Column


1. Đầu tiên, kéo Data Flow Task trong Toolbar và thả nó vào vùng Control Flow.

Hình IV.38: Kéo thả Data Flow Task vào tab Control Flow
2. Nháy đúp vào Data Flow Task để cấu hình tác vụ này và chuyển sang tab Data
Flow. Chọn loại tệp sắp thao tác ở phần Other Sources và kéo thả vào tab Data
Flow. VD: OLE DB Source

Hình IV.39: Thêm source đầu vào ở tab Data Flow


3. Kéo và thả Derived Column Transformation từ SSIS Toolbox lên tab Data
Flow. Kết nối một tập dữ liệu đầu vào với bước biến đổi bằng cách kéo một đường
nối từ source component đến Derived Column.

38
Hình IV.40: Kết nối source đầu vào với Derived Column
4. Kết nối các cột đầu vào với đầu vào của bước biến đổi bằng cách nhấp đúp vào
Derived Column Transformation và cấu hình tab Input Columns.

5. Nháy đúp chuột để cấu hình Derived Column. SSIS Derived Column editor bao
gồm 4 phần như thể hiện trong hình ảnh dưới đây:

Hình IV.41: SSIS Derived Column Editor


- Columns and Variables List (1) :

39
Variables and parameters tree: Một cây chứa tất cả biến và tham số được tạo trong
package (khi xây dựng biểu thức trong một Data Flow Task, bao gồm các cột Pipeline)

- Expressions built-in functions (2)

Expression built in function: chứa tất cả các hàm và toán tử được cung cấp bởi ngôn
ngữ biểu thức SSIS. Các hàm này được phân loại như sau:

+ Mathematical Functions:: Như giá trị tuyệt đối (ABS), căn bậc hai (SQRT)...

+ String Functions: Sử dụng để xử lý chuỗi như các hàm SUBSTRING và REPLACE.

+ Date/Time Functions: Sử dụng để xử lý giá trị ngày/thời gian như hàm DATEPART.

+ NULL Functions: Sử dụng cho xử lý giá trị NULL.

+ Type Casts: Chuyển Đổi Kiểu

+ Operators: Như điều kiện (? :), so sánh (==)...

- Derived Columns Grid (3)

Derived Columns Grid chứa các cấu hình sau:

+ Derived Column Name: Xác định tên của Derived Column.

+ Derived Column: Chọn giữa các tùy chọn <add new column> và <replace an
existing column>

+ Expression: Viết biểu thức SSIS tạo ra Derived Column.

+ Data Type: Cột này chỉ đọc và hiển thị loại dữ liệu của kết quả biểu thức

+ Length: Cột này chỉ đọc và hiển thị độ dài của cột dựa trên kết quả biểu thức

+ Scale: Cột này chỉ đọc và tự động đặt scale cho dữ liệu số dựa trên loại dữ liệu.

+ Precision: Cột này chỉ đọc và tự động đặt độ chính xác cho dữ liệu số dựa trên loại
dữ liệu.

+ Code Page: Cột này có thể được chỉnh sửa và tự động đặt trang mã cho loại dữ liệu
DT_STR (chuỗi).

- Error Handling (4)

Trong SSIS Derived Column, lỗi chủ yếu xuất phát từ các lỗi đánh giá biểu thức, xảy
ra khi các biểu thức được đánh giá vào thời gian chạy thực hiện các phép toán không
hợp lệ hoặc trở nên cú pháp không chính xác do giá trị dữ liệu thiếu hoặc không chính
xác.

40
Cấu hình đầu ra lỗi là một tùy chọn được bao gồm trong hầu hết các thành phần Data
Flow Task. Trong cấu hình này, có thể chọn cách thành phần này hoạt động khi một
lỗi đánh giá hoặc một cắt bớt xảy ra:

+ Fail component

+ Ignore Failure

+ Redirect Row (Error output Flow)

Hình IV.42: Error output configuration


Chúng ta có thể tùy chọn xử lý các lỗi xảy ra trong quá trình đánh giá biểu thức. Điều
này có thể được thực hiện bằng cách cấu hình tab Error Output trong Derived Column
Transformation Editor. Ta chọn chuyển hướng các hàng có lỗi đến một đầu ra lỗi, bỏ
qua các lỗi của luồng dữ liệu.

41
Hình IV.43: Luồng dữ liệu hoàn chỉnh
Các biểu thức trong bước Derived Column Transformation rất mạnh mẽ và linh hoạt.
Chúng ta có thể sử dụng một loạt các hàm và toán tử để tạo ra các biểu thức phức tạp.
Một số hàm thường được sử dụng bao gồm các hàm chuỗi (ví dụ: CONCAT,
SUBSTRING), các hàm toán học (ví dụ: ABS, ROUND), các hàm ngày (ví dụ:
DATEADD, DATEDIFF), và các hàm chuyển đổi kiểu (ví dụ: (DT_STR),
(DT_NUMERIC)).

2. Lợi ích của Derived Column Transformation


Derived Column Transformation có ích trong nhiều trường hợp, chẳng hạn như:

- Tạo ra các cột mới dựa trên các cột hiện có: Ta có thể nối chuỗi, tách chuỗi, thực
hiện các phép tính toán học, hoặc suy ra các giá trị mới dựa trên các cột hiện có.

VD: Ghép tên và họ thành một cột: [FirstName] - " " - [LastName]

42
Hình IV.44: Ví dụ minh họa
VD: Chuyển đổi ngày thành số nguyên theo định dạng yyyyMMdd:
(DT_I4)((DT_WSTR,4)YEAR([DateColumn])-RIGHT("00"-
(DT_WSTR,2)MONTH([DateColumn]),2) -RIGHT("00" -
(DT_WSTR,2)DAY([DateColumn]),2))

- Sửa đổi các cột hiện có: Ta có thể chuyển đổi kiểu dữ liệu, định dạng ngày, cắt
khoảng trắng, hoặc thực hiện các biến đổi khác trên các cột hiện có.

VD: Loại bỏ khoảng trắng đầu và cuối từ chuỗi:


LTRIM(RTRIM([Address]))

- Tạo ra các cột có điều kiện: Ta có thể tạo ra các cột mới dựa trên giá trị của các cột
khác. Ví dụ, bạn có thể tạo ra một cột cờ dựa trên một điều kiện cụ thể hoặc tạo ra một
cột được tính toán.

43
V. Nhập xuất dữ liệu cho Excel với SSIS

1. Tạo kết nối tới Excel


Trong SSIS, tạo Excel Connection Manager để kết nối với tệp nguồn hoặc đích Excel.
Có một số cách để tạo trình quản lý kết nối:

- Trong khu vực Connection Manager, nhấp chuột phải và chọn New Connection.
Trong hộp thoại Add SSIS Connection Manager , chọn Excel rồi Add .

- Trên menu SSIS , chọn New Conection. Trong hộp thoại Add SSIS Connection
Manager , chọn Excel rồi Thêm .

- Tạo trình quản lý kết nối cùng lúc với việc bạn đặt cấu hình Excel Source hoặc Excel
Destination trên trang Connection Manager của Excel Source Editor hoặc của Excel
Destination Editor .(Microsoft, Microsoft, 2023)

2. Phiên bản Excel


Phần thông tin thứ hai cần cung cấp là phiên bản của tệp Excel. Bạn cung cấp thông tin
này trong Excel Connection Manager Editor trong gói SSIS hoặc trên trang Choose a
Data Source hoặc Choose a Destination của Trình hướng dẫn nhập và xuất.

Chọn phiên bản Microsoft Excel đã được sử dụng để tạo tệp hoặc phiên bản tương
thích khác. Ví dụ: nếu bạn gặp sự cố khi cài đặt các thành phần kết nối 2016, bạn có
thể cài đặt các thành phần 2010 và chọn Microsoft Excel 2007-2010 trong danh sách
này.

Bạn có thể không chọn được phiên bản Excel mới hơn trong danh sách nếu bạn chỉ cài
đặt phiên bản cũ hơn của thành phần kết nối. Danh sách phiên bản Excel bao gồm tất
cả các phiên bản Excel được SSIS hỗ trợ. Sự hiện diện của các mục trong danh sách
này không có nghĩa là các thành phần kết nối cần thiết đã được cài đặt. Ví dụ:
Microsoft Excel 2016 xuất hiện trong danh sách ngay cả khi bạn chưa cài đặt các
thành phần kết nối 2016. (Microsoft, Microsoft, 2023)

3. Hàng đầu tiên có tên cột


Nếu bạn đang nhập dữ liệu từ Excel, bước tiếp theo là cho biết liệu hàng đầu tiên của
dữ liệu có chứa tên cột hay không. Bạn cung cấp thông tin này trong Excel Connection
Manager Editor trong gói SSIS hoặc trên trang Choose a Data Source của Trình hướng
dẫn nhập và xuất.
44
- Nếu bạn tắt tùy chọn này vì dữ liệu nguồn không chứa tên cột thì trình hướng dẫn sẽ
sử dụng F1, F2, v.v. làm tiêu đề cột.

- Nếu dữ liệu chứa tên cột nhưng bạn tắt tùy chọn này thì trình hướng dẫn sẽ nhập tên
cột làm hàng dữ liệu đầu tiên.

- Nếu dữ liệu không chứa tên cột nhưng bạn bật tùy chọn này thì trình hướng dẫn sẽ sử
dụng hàng dữ liệu nguồn đầu tiên làm tên cột. Trong trường hợp này, hàng dữ liệu
nguồn đầu tiên không còn được bao gồm trong dữ liệu đó nữa.

Nếu bạn đang xuất dữ liệu từ Excel và bật tùy chọn này thì hàng dữ liệu được xuất đầu
tiên sẽ bao gồm tên cột. (Microsoft, Microsoft, 2023) (Microsoft, Microsoft, 2023)

4. Bảng tính và phạm vi


Có ba loại đối tượng Excel mà bạn có thể sử dụng làm nguồn hoặc đích cho dữ liệu
của mình: trang tính, phạm vi được đặt tên hoặc phạm vi ô chưa được đặt tên mà bạn
chỉ định bằng địa chỉ của nó.

- Bảng tính: Để chỉ định một trang tính, hãy thêm $ ký tự vào cuối tên trang tính và
thêm dấu phân cách xung quanh chuỗi - ví dụ: [Sheet1$] . Hoặc tìm tên kết thúc bằng
$ ký tự trong danh sách các bảng và dạng xem hiện có.

- Phạm vi được đặt tên: Để chỉ định một phạm vi được đặt tên, hãy cung cấp tên phạm
vi - ví dụ: MyDataRange . Hoặc tìm kiếm tên không kết thúc bằng $ký tự trong danh
sách các bảng và dạng xem hiện có.

- Phạm vi không tên: Để chỉ định một phạm vi ô mà bạn chưa đặt tên, hãy thêm ký tự
$ vào cuối tên trang tính, thêm đặc tả phạm vi và thêm dấu phân cách xung quanh
chuỗi - ví dụ: [Sheet1$A1:B4] .

Để chọn hoặc chỉ định loại đối tượng Excel mà bạn muốn sử dụng làm nguồn hoặc
đích cho dữ liệu của mình, hãy thực hiện một trong những thao tác sau:

Trong SSIS, trên trang Connection manager của Excel Source Editor hoặc Excel
Destination Editor, , hãy thực hiện một trong những việc sau:

- Để sử dụng một trang tính hoặc một phạm vi được đặt tên , hãy chọn Table or View
làm chế độ truy cập Dữ liệu . Sau đó, trong Name of the Excel sheet, hãy chọn trang
tính hoặc phạm vi được đặt tên.

45
- Để sử dụng một dải ô chưa được đặt tên mà bạn chỉ định bằng địa chỉ của nó, hãy
chọn lệnh SQL làm Chế độ truy cập dữ liệu . Sau đó, trong trường SQL command text,
hãy nhập truy vấn như ví dụ sau:

SELECT * FROM [Sheet1$A1:B5]


(Microsoft, Microsoft, 2023)

5. Các bước thực hiện


1. Kéo và thả tác vụ luồng dữ liệu từ hộp công cụ vào luồng điều khiển. Tiếp theo,
đổi tên thành Định cấu hình nguồn Excel trong SSIS.

Hình V.45: Tạo Data Flow trong Control Flow


2. Nhấp đúp vào nó sẽ mở tab luồng dữ liệu. Bây giờ, Kéo và thả Nguồn Excel từ
hộp công cụ SSIS vào vùng luồng dữ liệu

Hình V.46: Tạo Excel Source trong Data Flow


3. Tạo Connection Manager Excel:

Nhấp chuột phải vào thư mục Connection Manager trong Solution Explorer và chọn
tùy chọn New Connection Manager từ menu ngữ cảnh.

46
Hình V.47: Tạo Conection Manager mới
Khi bạn nhấp vào tùy chọn Mới, cửa sổ Thêm Connection Manager SSIS sẽ mở ra. Sử
dụng điều này để chọn một từ danh sách.

Hình V.48: Lựa chọn nguồn Excel

47
Chọn trình quản lý kết nối SSIS Excel từ danh sách. Sau khi thiết lập điều này, một
cửa sổ khác của Trình quản lý kết nối Excel sẽ mở để định cấu hình đường dẫn tệp.

Hình V.49: Chọn đường dẫn tới tệp Excel


Nhấp vào nút Browse để mở một cửa sổ mới để duyệt ổ đĩa.

48
Hình V.50: Chọn file Excel
Nếu bạn quan sát dữ liệu trong tệp COPY PRODUCT.xls, hàng đầu tiên của nó có các
tên cột như màu sắc, Tên sản phẩm và Giá. Vì vậy, vui lòng đánh dấu vào hàng đầu
tiên có tùy chọn tên cột.

49
Hình V.51: Chọn đường dẫn tới file Excel
Nhấp vào nút OK để hoàn tất việc định cấu hình Excel Connection Manager.

Hình V.52: Excel Conection Manager vừa được tạo và kết nối
4. Nhấp đúp chuột vào nguồn Excel trong vùng luồng dữ liệu sẽ mở cài đặt trình
quản lý kết nối. Nếu trước đây bạn chưa tạo Excel Connection Manager, hãy nhấp
vào nút Mới và định cấu hình nó.
50
Hình V.53: Trình quản lí kết nối
5. Chọn chế độ truy cập dữ liệu: Thuộc tính này cung cấp bốn tùy chọn

- Bảng hoặc dạng xem: Nếu bạn chọn tùy chọn này, Nó sẽ hiển thị danh sách
các Bảng có sẵn trong Bảng tính Excel. Và công việc của chúng ta là chọn các
bảng cần thiết từ chúng.

- Tên bảng Hoặc Biến tên dạng xem: Nếu bạn chọn tùy chọn này, Chúng tôi
phải cung cấp tên biến chứa Tên bảng hoặc Tên dạng xem.

- Lệnh SQL: Nếu bạn chọn tùy chọn này, Chúng tôi phải tự viết Lệnh SQL tạo
bảng.

- Lệnh SQL từ biến: Nếu bạn chọn tùy chọn này, Chúng tôi phải cung cấp tên
biến chứa Lệnh SQL.

51
Hình V.54: Lựa chọn hình thức kết nối Data
Nếu bạn chọn tùy chọn Lệnh SQL thì Trình soạn thảo sẽ hiển thị các tùy chọn sau.

Văn bản lệnh SQL: Nếu bạn đã quen với Truy vấn SQL, bạn có thể viết nó vào khoảng
trống do tùy chọn này cung cấp.

Xây dựng truy vấn: Nếu bạn nhấp vào tùy chọn này, nó sẽ mở Trình thiết kế truy vấn
để thiết kế truy vấn được yêu cầu bằng giao diện Người dùng đồ họa.

Duyệt: Điều này sẽ cho phép chúng tôi chọn Truy vấn có trong hệ thống tệp.

Truy vấn phân tích cú pháp: Tùy chọn này sẽ kiểm tra xem truy vấn có được phân tích
cú pháp thành công hay không

52
Hình V.55: Mở hộp thoại thực hiện lệnh SQL
Hiện tại, chúng tôi đang chọn tùy chọn Bảng hoặc Chế độ xem tại đây. Nếu bạn chọn
tùy chọn này, tùy chọn Tên bảng hoặc Chế độ xem sẽ hiển thị tất cả các Bảng và Chế
độ xem có sẵn trong trình quản lý kết nối hiện tại.

Hình V.56: Chọn bảng tính nhập vào


53
Hình V.57: Xem trước dữ liệu
6. Nhấp vào tab cột để xác minh các cột. Chúng ta cũng có thể loại bỏ các cột
không mong muốn bằng cách bỏ chọn chúng.

54
Hình V.58: Lựa chọn các cột và thuộc tính trong bảng tính
7. Nhấp vào OK để hoàn tất việc định cấu hình Nguồn Excel trong SSIS.

8. Để hiển thị dữ liệu bên trong Nguồn Excel, chúng tôi chỉ thêm Union All rồi bật
Trình xem dữ liệu. (Gateway, 2023)

6. Ưu điểm
Dễ dàng thu thập và nhập liệu: Excel có interface quen thuộc, dễ sử dụng để nhập và
lưu trữ dữ liệu

Tổ chức và quản lý dữ liệu hiệu quả: Có thể sắp xếp dữ liệu dễ dàng bằng cách nhóm
cột, lọc và sắp xếp dữ liệu trong Excel

Dễ dàng tính toán và phân tích: Excel có công thức, hàm tính toán và các công cụ phân
tích mạnh mẽ giúp phân tích dữ liệu

Biểu diễn dữ liệu trực quan với các biểu đồ: Biểu đồ trong Excel giúp truyền tải dữ
liệu một cách trực quan

Dễ dàng chia sẻ và cộng tác: Dữ liệu Excel có thể xuất ra nhiều định dạng và dễ dàng
chia sẻ, cộng tác
55
Có thể kết nối, tích hợp với nhiều ứng dụng khác: Excel có thể tích hợp mạnh mẽ với
các ứng dụng Office khác và cả các ứng dụng bên thứ ba

Đồng bộ hóa dữ liệu dễ dàng: Có thể đồng bộ hóa dữ liệu Excel qua OneDrive,
Sharepoint Online

7. Nhược điểm
Giới hạn về số lượng bản ghi: Excel chỉ có thể lưu trữ tối đa khoảng 1 triệu ô, nên
không thích hợp lưu trữ lượng dữ liệu lớn

Không phù hợp với dữ liệu có cấu trúc phức tạp: Excel khó quản lý các mối quan hệ
giữa các bảng như trong cơ sở dữ liệu quan hệ

Dễ xảy ra lỗi dữ liệu: Việc nhập liệu thủ công trong Excel dễ bị sai sót, nhầm lẫn

Khó kiểm soát dữ liệu: Quyền truy cập dữ liệu Excel khó kiểm soát tốt bằng các cơ sở
dữ liệu, dễ xảy ra mất mát hay làm hỏng dữ liệu

Có nguy cơ gặp lỗi khi số lượng người dùng truy cập đồng thời nhiều

Tốc độ xử lý có thể chậm khi lượng dữ liệu lớn

Khó khăn trong việc sao lưu và phục hồi dữ liệu

8. Lưu ý

a. Vấn đề với kiểu dữ liệu


Loại dữ liệu

Trình điều khiển Excel chỉ nhận dạng một nhóm loại dữ liệu giới hạn. Ví dụ: tất cả các
cột số được hiểu là chuỗi kép (DT_R8) và tất cả các cột chuỗi (trừ cột ghi nhớ) được
hiểu là chuỗi Unicode 255 ký tự (DT_WSTR). SSIS ánh xạ các kiểu dữ liệu Excel như
sau:

- Số - float có độ chính xác kép (DT_R8)

- Tiền tệ - tiền tệ (DT_CY)

- Boolean - Boolean (DT_BOOL)

- Ngày/giờ - ngày giờ (DT_DATE)

- Chuỗi - Chuỗi Unicode, độ dài 255 (DT_WSTR)

- Bản ghi nhớ - Luồng văn bản Unicode (DT_NTEXT)

56
(Microsoft, Microsoft, 2023)

Chuyển đổi loại dữ liệu và độ dài

SSIS không ngầm chuyển đổi các loại dữ liệu. Do đó, bạn có thể phải sử dụng các
phép biến đổi Cột có nguồn gốc hoặc Chuyển đổi dữ liệu để chuyển đổi dữ liệu Excel
một cách rõ ràng trước khi tải dữ liệu đó vào đích không phải Excel hoặc để chuyển
đổi dữ liệu từ một nguồn không phải Excel trước khi tải dữ liệu đó vào đích Excel.

Dưới đây là một số ví dụ về chuyển đổi có thể được yêu cầu:

- Chuyển đổi giữa các cột chuỗi Unicode Excel và các cột chuỗi không Unicode với
bảng mã cụ thể.

- Chuyển đổi giữa các cột chuỗi Excel 255 ký tự và các cột chuỗi có độ dài khác nhau.

- Chuyển đổi giữa các cột số Excel có độ chính xác kép và các cột số thuộc loại khác.
(Microsoft, Microsoft, 2023)

b. Các vấn đề về đầu vào


Hàng trống

Khi bạn chỉ định một trang tính hoặc một dải ô được đặt tên làm nguồn, trình điều
khiển sẽ đọc khối ô liền kề bắt đầu bằng ô không trống đầu tiên ở góc trên bên trái của
trang tính hoặc dải ô. Do đó, dữ liệu của bạn không nhất thiết phải bắt đầu ở hàng 1
nhưng bạn không thể có các hàng trống trong dữ liệu nguồn. Ví dụ: bạn không thể có
hàng trống giữa tiêu đề cột và hàng dữ liệu hoặc tiêu đề theo sau là hàng trống ở đầu
trang tính.

Nếu có hàng trống phía trên dữ liệu của bạn thì bạn không thể truy vấn dữ liệu dưới
dạng trang tính. Trong Excel, bạn phải chọn phạm vi dữ liệu của mình và gán tên cho
phạm vi đó, sau đó truy vấn phạm vi đã đặt tên thay vì trang tính. (Microsoft,
Microsoft, 2023)

Giá trị bị mất

Trình điều khiển Excel đọc một số hàng nhất định (theo mặc định là 8 hàng) trong
nguồn được chỉ định để đoán kiểu dữ liệu của từng cột. Khi một cột có vẻ chứa các
kiểu dữ liệu hỗn hợp, đặc biệt là dữ liệu số được trộn lẫn với dữ liệu văn bản, trình
điều khiển sẽ quyết định thiên về kiểu dữ liệu đa số và trả về giá trị null cho các ô chứa
dữ liệu thuộc loại khác. (Hòa, loại số sẽ thắng.) Hầu hết các tùy chọn định dạng ô
trong bảng tính Excel dường như không ảnh hưởng đến việc xác định loại dữ liệu này.
57
Bạn có thể sửa đổi hành vi này của trình điều khiển Excel bằng cách chỉ định Chế độ
nhập để nhập tất cả các giá trị dưới dạng văn bản. Để chỉ định Chế độ nhập, hãy thêm
IMEX=1 vào giá trị của Thuộc tính mở rộng trong chuỗi kết nối của Excel Connection
Manager trong cửa sổ Thuộc tính. (Microsoft, Microsoft, 2023)

Văn bản bị cắt ngắn

Khi trình điều khiển xác định rằng một cột Excel chứa dữ liệu văn bản, trình điều
khiển sẽ chọn loại dữ liệu (chuỗi hoặc bản ghi nhớ) dựa trên giá trị dài nhất mà nó lấy
mẫu. Nếu trình điều khiển không phát hiện bất kỳ giá trị nào dài hơn 255 ký tự trong
các hàng mà nó lấy mẫu, nó sẽ xử lý cột đó dưới dạng cột chuỗi 255 ký tự thay vì cột
ghi nhớ. Do đó, các giá trị dài hơn 255 ký tự có thể bị cắt bớt. (Microsoft, Microsoft,
2023)

c. Các vấn đề về đầu ra


Tạo một tập tin đích mới

Tạo Excel Connection Manager với đường dẫn và tên tệp của tệp Excel mới mà bạn
muốn tạo. Sau đó, trong Trình chỉnh sửa đích Excel , đối với Tên trang tính Excel ,
hãy chọn Mới để tạo trang tính đích. Tại thời điểm này, SSIS tạo tệp Excel mới với
bảng tính được chỉ định. (Microsoft, Microsoft, 2023)

Xuất sang phạm vi đủ lớn

Khi bạn chỉ định một phạm vi làm đích, sẽ xảy ra lỗi nếu phạm vi đó có ít cột hơn dữ
liệu nguồn. Tuy nhiên, nếu phạm vi mà bạn chỉ định có ít hàng hơn dữ liệu nguồn thì
trình hướng dẫn sẽ tiếp tục ghi các hàng mà không gặp lỗi và mở rộng định nghĩa
phạm vi để khớp với số hàng mới. (Microsoft, Microsoft, 2023)

Xuất giá trị văn bản dài

Trước khi bạn có thể lưu thành công các chuỗi dài hơn 255 ký tự vào một cột Excel,
trình điều khiển phải nhận dạng kiểu dữ liệu của cột đích là bản ghi nhớ chứ không
phải chuỗi .

Nếu bảng đích hiện có đã chứa các hàng dữ liệu thì một số hàng đầu tiên được trình
điều khiển lấy mẫu phải chứa ít nhất một phiên bản của giá trị dài hơn 255 ký tự trong
cột bản ghi nhớ (Microsoft, Microsoft, 2023)

58
TÀI LIỆU THAM KHẢO

1.
2.
3.
Microsoft. (2023). Data Conversion Transformation. Được truy lục từ Microsoft:
https://learn.microsoft.com/vi-vn/sql/integration-services/data-flow/transformations/
data-conversion-transformation?view=sql-server-ver16

Execute SQL Task in SSIS:

Execute SQL Task in SSIS: https://www.tutorialgateway.org/execute-sql-task-in-SSIS/

Execute SQL Task: https://learn.microsoft.com/en-us/sql/integration-services/control-


flow/execute-sql-task?view=sql-server-ver16

Data Flow :

Sự khác biệt giữa Control Flow &; Data Flow trong SSIS | Kiến trúc SSIS
(janbasktraining.com)

https://learn.microsoft.com/en-us/sql/integration-services/control-flow/data-flow-task?
view=sql-server-ver16

https://learn.microsoft.com/en-us/sql/integration-services/data-flow/data-flow?
view=sql-server-ver16

https://learn.microsoft.com/en-us/sql/integration-services/data-flow/transformations/
integration-services-transformations?view=sql-server-ver16

https://learn.microsoft.com/en-us/sql/integration-services/lesson-1-4-adding-a-data-
flow-task-to-the-package?view=sql-server-ver16

An Introduction to SQL Server Integration Service (SSIS) (c-sharpcorner.com)

https://www.sqlshack.com/ssis-derived-columns-with-multiple-expressions-vs-
multiple-transformations/

59

You might also like