이전 행의 값 저장하기 (스크립트 변환 이용)
한대성
MS SQL Server MVP
에이디컨설팅 책임 컨설턴트 | SQLLeader.com 운영자
![]() |
데이터를 가공할때 바로 전데이터의 정보를 이용해 값을 만들려고 합니다. 1 A 50 2 B 100 위와 같은 데이터가 있다면 1 A 50 0 2 B 100 50 과 같이 바로 전 데이터의 정보를 입력하고자 합니다.(B에서 A의 50을 기록하는 방식) script에서 변수를 이용해 전 정보를 기록하고 다음 정보를 변수에 넣는 방법으로 했으나 실행하면 run time error로 변수에 input/write가 막혀있다는 메시지가 나옵니다. 데이터를 위와 같이 가공할 방법이 있나요? |
다음과 같이 데이터 흐름 내에서 간단한 쿼리로 원본을 설정합니다.
SELECT 1 as Seq, 'A' as Col, 50 as Val
UNION ALL SELECT 2, 'B', 65
UNION ALL SELECT 3, 'B', 70
UNION ALL SELECT 4, 'B', 75
UNION ALL SELECT 5, 'B', 80
UNION ALL SELECT 6, 'B', 85
UNION ALL SELECT 7, 'B', 90
UNION ALL SELECT 8, 'B', 95
UNION ALL SELECT 9, 'B', 100
UNION ALL SELECT 10, 'B', 105
그런 다음, 스크립트 변환을 이 원본과 연결합니다.
스크립트 구성 요소를 열어서 아래와 같이 입력 열 중 스크립트 변환에서 이용할 열을 선택합니다.
입/출력 탭에서 아래와 같이 출력 부분에 새로운 열을 추가합니다. 본 예제에서는 prevVal이라 하겠습니다.
이제 스크립트 편집기(VSA)를 연 후, 아래와 같은 스크립트를 입력합니다.
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Public Class ScriptMain
Inherits UserComponent
Dim prevVal As Integer
Public Overrides Sub 입력0_ProcessInputRow(ByVal Row As 입력0Buffer)
Row.prevVal = prevVal
prevVal = Row.Val
'너무 썰렁한가요?? 쩝. ㅡ,.ㅡ
End Sub
Public Sub New()
prevVal = 0
End Sub
End Class
스크립트 편집기를 닫고선 임의의 변환을 붙여서 데이터를 확인해 봅시다.
(데이터 뷰어를 통해서 가능합니다.)

'연구개발 > DTS & SSIS' 카테고리의 다른 글
구성 기능을 이용하여 패키지 연결 정보 관리하기 (0) | 2011.08.27 |
---|---|
서버 간 데이터 동기화 구현 (0) | 2011.08.27 |
텍스트 데이터를 이용한 값 업데이트 하기 (0) | 2011.08.27 |
SQL 쿼리와 SSIS 누가 더 빠른가 (0) | 2011.08.27 |
주기적 데이터 이관 작업 구현 (0) | 2011.08.27 |