본문 바로가기
Computer Science/RPA & Automation

[UiPath] 데이터 테이블

by Hwan,. 2021. 7. 11.
728x90
반응형

1. 데이터 테이블 (이하 DT)

https://docs.microsoft.com/ko-kr/dotnet/api/system.data.datatable?view=net-5.0 

 

DataTable 클래스 (System.Data)

메모리 내 데이터의 한 테이블을 나타냅니다.Represents one table of in-memory data.

docs.microsoft.com

- 윈도우의 DataTable 클래스와 동일 (C#, .Net VBA)

- C# 형태의 DataTable 사용법은 위 링크의 MS 공식문서 참조

 


2. UiPath 기본 지원 엑티비티 (Studio 설치 시 바로 사용가능)

UiPath에서 기본적으로 지원해주는 기능

- 이미지의 기능을 다 사용하지는 않지만 다른 엑티비티와 조합해서 사용하면 빠르고 간편함.

 


3. 사용 예제

Q1) Table 1을 Table 2로 만들기

- Table 1

Column1  Column2  Column3
a b c
1 2 3

- Table 2

Column1 Check Column2  Column3 Sum
a Y b c abc
1 N 2 3 123

 

A1) 

전체 Sequance
Table 1
Table 2
is_flag
str_sum
Add Data Row 내부 조건
Table 2 결과 Write line

 

Q2) 엑셀에서 데이터테이블 받아오기

A2) 생략

 

Q3) Filter Data Table, Clear DataTable, Merge DataTable, Join Data Table

A3) 생략

 

 


4. 실전 예제

Q1) Row 수가 10만건(임의의 충분히 많은 수) 정도인 DT 중 특정 데이터를 필터링하여 가져오기

이름 나이 신장 몸무게 연락처 차량 소유 여부 취미
A 10 150 50 010-0000-0000 False 게임, 영화
...            
Z 100 160 60 011-9999-9999 True 음악, 영화

- 위 DT에 데이터가 랜덤하게 8만건이 엑셀 파일로 있다고 가정했을 때,

- 나이가 30세에서 70세 사이의 키 150이상인 자차를 소유한 사람들만 가져오기

- 취미가 영화이고 나이가 50세 미만인 사람들의 이름과 연락처만 가져오기

- 연락처가 010 으로 시작하지 않는 사람들만 가져오기

A1) Linq, filter 등 사용

 

Q2) 데이터 컬럼수가 100개 이상인 DT를 가져와 수정하기

1 ... 124
a1 ... a124
b1 ... b124

- 위 DT의 값 중 컬럼명이 소수인 데이터만 가져오기

- 컬럼 명이 짝수인 값을 가져와서 중간에 Flag(값은 상관없음) 넣기

A2) Linq, filter 등 사용

 

Q3) Row 수가 변할 수 있는 DT 가져오기

 - 1회차 실행 : Row Count = 102

 - 2회차 실행 : Row Count = 95

 - 3회차 실행 : Row Count = 135

 - ... 

 - n회차 실행 : Row Count = 73

A3)

 

Q4) 입력 받은 DT의 컬럼 순서 바꾸기

- input

1 2 3 4
a b c d

-output

1 3 4 2
a c d b

A4) VBA, filter 활용

 

 


5. 응용

Q1) 원하는 컬럼 개수를 가진 임시 헤더용 DT 생성 

A1) 

// VBA 스크립트지만 하이라이팅이 없으므로 C# 주석 사용
// input : in_int_헤더개수 (input, Integer)
// output : out_dt_임시DT (output, DataTable)
Dim dt_tmp As New DataTable()

For int_i as Integer To in_int_헤더개수
	dt_tmp.Columns.Add("Columns " + int_i.ToString(), typeof(Object));
Next int_i

// Return
out_dt_임시DT = dt_tmp

 

Q2) 데이터가 있는 데이터 테이블의 헤더만 추출하기

A2) 

// 아래 내용은 VBA 코드임

 

728x90
반응형

댓글