본문 바로가기
IT & 데이터 사이언스/환경설정 및 기타사항들

[Cloud] Azure Data Factory 사용방법(2)

by 바른 호랑이 2022. 7. 1.
728x90
반응형

※ Microsoft docs

 

Azure Data Factory 설명서 - Azure Data Factory

클라우드 데이터 통합 서비스인 Data Factory를 사용하여 자동화된 데이터 파이프라인에 데이터 스토리지, 이동 및 처리 서비스를 구성하는 방법에 대해 알아봅니다. 자습서 및 기타 설명서에서는

docs.microsoft.com

※ Azure Data Factory 사용방법(1)

 

[클라우드 서비스 / Azure] Azure Data Factory 사용방법(1)

※ Microsoft docs Azure Data Factory 설명서 - Azure Data Factory 클라우드 데이터 통합 서비스인 Data Factory를 사용하여 자동화된 데이터 파이프라인에 데이터 스토리지, 이동 및 처리 서비스를 구성하는 방..

data-is-power.tistory.com

※ RPA로 크롤링 후 데이터 적재

 

[클라우드 서비스 / Azure] RPA로 크롤링 후 데이터 적재

※ Azure Data Factory 사용방법(1) - Azure SQL Server / DB 생성방법 [클라우드 서비스 / Azure] Azure Data Factory 사용방법(1) ※ Microsoft docs Azure Data Factory 설명서 - Azure Data Factory 클라우드..

data-is-power.tistory.com

 

안녕하세요. 바른 호랑이입니다.
이번 게시글에서는 Azure Data Factroy를 활용하여 ETL 및 시각화를 하는 방법에 대해 알아볼 예정입니다.
해당 과정을 진행하기전에 ADF를 사용하기위한 환경설정은 진행한 것을 전제로 진행할 예정이며, 이번 게시글에서 나오는 데이터 및 환경과 관련된 내용들이 만들어진 과정이 궁금하신 분들의 위의 게시글들을 참조해주시기 바랍니다. 이번에는 Oracle과 같은 다른 RDBMS와의 연결 또는 온-프레미스 환경의 DB를 Azure와 연동하는 것이 아닌 Azure 자체에서 생성한 SQL Server 및 DB를 사용했기에 통합런타임(Integration Runtime)은 생성 및 사용하지 않고 기본으로 생성되는 다른 Azure 서비스들과 연동을 도와주는 AutoResolveIntegrationRuntime만 사용하여 진행할 예정입니다.


0. ADF 접속 후 사용할 DB등록하기

: ADF에서 DB를 사용하기 위해서는 등록을 해주는 과정이 필요합니다. 이를 위해 SSIS(SQL Server Integration Services), 
통합런타임(Integration Runtime)을 사용하기도 하지만 같은 Azure 서비스라면 이와 같은 프로그램들의 추가 설치 없이 연결하는 것이 가능합니다. DB를 등록하는 과정은 아래와 같습니다. 



1. Transform할 테이블과 이 때 사용할 Query문 작성 후 ADF에서 파이프라인 구성하기
: ADF에서 Transform과정을 자동화하기 위해서는 사전에 SQL DB상에서 테이블을 만들고, 이를 ADF에 연결하는 과정이 필요합니다. 이번에는 RPA과정에서 적재한 환율정보를 바탕으로 작성하였고, 전일대비 변화값이 기존 크롤링데이터에는 원/외화 단가 밖에 없던 것을 살때, 팔때, 송금할때, 받을 때 기준의 전일대비 변화량 또한 볼 수 있게 쿼리를 작성하였습니다. 테이블 생성과 쿼리문 작성이 되었다면 파이프라인의 트리거를 통해 해당 과정이 일일단위로 자동적으로 실행되도록 하는 것이 가능합니다. 이번에는 코드문의 단순화를 위해 트리거 실행시마다 해당 테이블의 데이터를 모두 지운 후 다시 넣는 형태로 작성하였습니다. 테이블 생성 및 쿼리문, 파이프라인 구성 절차는 아래와 같습니다.

SELECT B.Date, B.Currency, B.Exchange_rate, B.Day_to_day, 
       B.Exchange_rate - A.Exchange_rate AS Rise_and_fall,
       B.Buy, B.Buy - A.Buy AS Buy_Rise_and_fall, B.Sell, 
       B.Sell - A.Sell AS Sell_Rise_and_fall, B.To_Transfer, 
       B.To_Transfer - A.To_Transfer AS To_Transfer_Rise_and_fall,
       B.Receive, B.Receive - A.Receive AS Receive_Rise_and_fall
FROM 
	(
	SELECT CONVERT(nvarchar(20), DATEADD(Day, 1, [date]), 23) AS NextDate, * 
    FROM dbo.Exchange_rate_test
	) AS A
FULL OUTER JOIN 
	(SELECT * FROM dbo.Exchange_rate_test) AS B
ON A.NextDate = B.Date AND A.Currency = B.Currency
WHERE A.DATE IS NOT NULL AND B.Date IS NOT NULL

 


Data Delete부분은 새로 작성한 테이블인 dbo.Exchange_rate_test_plus의 데이터를 모두 삭제하는 부분이며, Copy data1은 dbo.Exchange_rate_test의 데이터를 변형하여 dbo.Exchange_rate_test_plus테이블에 삽입하는 
부분입니다. 소스에 쿼리문을 쓰면 사실 원본 데이터세트는dbo.Exchange_rate_test가 아니어도 상관은 없으나 직관성 향상을 위해 dbo.Exchange_rate_test로 원본 데이터 세트를 지정해주었습니다. 싱크에는 해당 쿼리문 또는 원본 데이터세트를 복사할 dbo.Exchange_rate_test_plus를 원본 데이터 세트로 지정하였고, 매핑 메뉴에서 스키마의 일치여부를 확인 및 수정가능합니다.


트리거를 사용하고 및 변경사항을 ADF에 적용하기 위해서는 게시를 해주는 과정이 반드시 필요합니다.

※ Visual Studio 설치

 

[환경설정 / Visual Studio] Visual Studio 설치

※Visual Studio란? [프로그램 설명 / Visual Studio] Visual Studio란? 안녕하세요. 바른호랑이입니다. 이번 게시글에서는 Microsoft사에서 개발한 통합개발환경(IDE : Integrated Development)인 Visual Studio..

data-is-power.tistory.com


2. PowerBI를 통해 해당 테이블들 로드하여 시각화
: 위와 같이 데이터를 변형하는 과정을 구성하였다면 PowerBI와 SQL DB를 직접연결하여 데이터를 시각화하거나 Analysis Service를 생성하여 PowerBI와 연결하여 시각화할 수 있습니다. 데이터가 많고 분석해야할 내용이 많다면 PowerBI의 자체기능만으로 작성하게 되면 속도와 성능문제가 존재하기에 분석을 따로 해준 후  결과값만을 로드해서 사용해서 쓸 수 있게 해주는 서비스를 Analysis Service라고 생각하시면 됩니다. Analysis Service 사용을 위해서는 Visual Studio의 사용이 필수적이며, 환경설정도 그에따라 맞추는 과정이 필요합니다. 이번 게시글에서 사용한 환경설정이 궁금하신 분들은 위의 게시물을 참조하시기 바랍니다. SQL DB와 직접 연결하는 방법은 매우 간단하며, 자세한 방법은 아래와 같습니다.

SQL Server와 PowerBi 직접연결


Analysis Service를 사용하기 위해서는 당연하게도 Azure상에서 해당 서비스를 생성해줘야 하며, 생성한 후 Visual Studio를 통해 프로젝트를 작성하여 분석을 진행하고 PowerBI로 연결하여 사용하는 것이 가능합니다. Visual Studio를 통한 분석을
한 후에는 배포를 해주어야 작성사항 반영이 가능합니다. 자세한 사용방법은 아래와 같습니다.



이상으로 ADF를 활용한 ETL과정 자동화 및 시각화하는 방법에 대해 알아보았습니다.

데이터 분석 및 시각화에 관심이 있으신 분들은 해당 내용에 알아두시고 사용을 고려해보셔도 좋을 것 같습니다.

P.S 더 나은 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.

728x90
반응형

댓글