본문 바로가기
AI 및 데이터 분석

Dataiku - SQL 레시피

by riML 2023. 6. 20.
아래의 튜토리얼 내용은 dataiku academy 자료를 참고하여 제작되었습니다.

안녕하세요.

SQL 레시피 활용편 입니다 : )


SQL 레시피

 

SQL 코드를 사용하여 데이터 변환 작업을 수행할 수 있도록 도와줍니다!

데이터 변환: SQL 레시피는 SQL 쿼리 또는 스크립트를 실행하여 데이터를 변환하는 역할을 합니다. 데이터베이스의 기능을 활용하여 데이터를 필터링, 조인, 그룹화, 집계 등 다양한 방식으로 가공할 수 있습니다.

레거시 코드 유지: 기존에 작성된 SQL 코드나 레거시 코드를 Dataiku 플랫폼에서 유지하고 실행할 수 있습니다. SQL 레시피를 사용하면 데이터 처리 로직을 시각화된 흐름으로 유지하면서 기존 코드를 재활용할 수 있습니다.

복잡한 변환 작업: 시각적 레시피로 수행하기 어려운 복잡한 데이터 변환 작업을 SQL 레시피로 처리할 수 있습니다. SQL의 강력한 기능을 활용하여 복잡한 데이터 조작이 필요한 경우에 유용합니다.

SQL 레시피의 기능


입력 및 출력 데이터셋 정의: SQL 레시피는 입력 데이터셋과 출력 데이터셋을 지정하여 데이터의 흐름을 관리합니다. 입력 데이터셋으로부터 데이터를 가져와 SQL 쿼리 또는 스크립트를 실행한 결과를 출력 데이터셋에 저장합니다.

SQL 코드 편집기: SQL 쿼리를 작성하기 위한 편집기를 제공합니다. 사용자는 SQL 문법을 사용하여 데이터 조작 작업을 정의할 수 있습니다. 편집기는 구문 강조, 자동 완성 등의 기능을 제공하여 코드 작성을 지원합니다.

코드 유효성 검사: SQL 레시피는 코드의 구문 오류를 검사할 수 있는 기능을 제공합니다. 코드를 유효성 검사하여 문법적인 오류를 확인하고 수정할 수 있습니다.

자동 테이블 생성 및 삽입: SQL 쿼리를 실행할 때 Dataiku는 필요한 테이블을 자동으로 생성하고 결과를 출력 데이터셋에 삽입합니다. 테이블의 스키마를 자동으로 감지하여 데이터 저장을 용이하게 합니다.

데이터 유형 지원: Dataiku 플랫폼에서 지원하지 않는 특정 데이터 유형을 처리하기 위해 SQL 레시피를 사용할 수 있습니다. SQL 코드를 사용하여 데이터 타입 변환 작업 등을 수행할 수 있습니다.


SQL 쿼리 레시피를 사용하여 데이터베이스 내에서 SQL 쿼리를 실행해보겠습니다!

SQL in Dataiku DSS (Tutorial) 에서 이어서 진행합니다 : )

 

 

orders_copy 데이터셋을 선택한 후, 작업 메뉴에서 SQL 코드 레시피를 선택합니다.
선택 팝업창이 뜨면, SQL Query 유형을 선택하고 출력 데이터셋을 정의하기 위해 Set을 클릭합니다.

 


orders_by_customer라고 이름을 지정하고, 기본적으로 데이터를 동일한 위치에 저장하도록 선택합니다.
CREATE DATASET 및 CREATE RECIPE을 클릭합니다.

SELECT customer_id,
       AVG(pages_visited) AS pages_visited_avg,
       SUM(tshirt_price*tshirt_quantity) AS total
    FROM "DKU_TUTORIAL_SQL_orders_copy"
    GROUP BY customer_id;

 

SQL 쿼리 레시피를 수정해보겠습니다! 
과거 주문에 대하여 고객별로 그룹화하고 집계하는 것입니다. 물론 시각적인 Group 레시피로도 이 작업을 수행할 수 있지만, SQL 코드로도 쉽게 수행할 수 있습니다.

 

Validate를 클릭합니다.

(Validate 는 SQL 코드를 구문 분석하여 문법 오류가 있는지 확인하고, 실행 가능한지 여부를 판단하는 역할을 합니다. 즉, Validate 버튼을 클릭하면 Dataiku는 작성한 SQL 코드를 분석하고 쿼리의 구문이 올바른지를 확인합니다.)

마지막으로, Run을 클릭합니다.

Dataiku는 작업을 시작하여 PostgreSQL 데이터베이스에 출력 테이블을 생성하고 쿼리 결과로 채웁니다. Flow로 이동하여 새로 추가된 레시피와 데이터셋을 확인해보세요!



SQL 레시피를 사용하여 쿼리를 사용자 정의할 수 있지만, 많은 시각적 레시피(Group, Join, Stack 등)도 데이터베이스 내 작업을 수행할 수 있습니다!

 

 

customers_stacked_prepared를 클릭한 후, 작업 메뉴에서 시각적 레시피 목록에서 Join with...을 선택합니다.

 

 

두 번째 입력 데이터셋으로 orders_by_customer를 선택하고, 출력 데이터셋의 이름을 customers_enriched로 변경합니다.
출력 데이터셋은 동일한 데이터베이스에 저장될 것입니다.
CREATE RECIPE을 클릭합니다.

 

 

Join 단계에서 조인 유형을 Inner join 으로 변경하여 주문을 한 고객만 반환하도록 합니다.

ADD A CONDITION 버튼을 누르면 두 데이터셋에서 이름이 다른 customerID와 customer_id가 자동으로 조인 키로 결정됩니다.

 

 

Selected columns 단계에서 orders_by_customer 데이터셋에서 중복된 customer_id를 제외할 수 있습니다. 왜냐하면 customers_stacked_prepared 데이터셋의 customerID와 중복되기 때문입니다.

Run을 클릭하고 스키마를 업데이트합니다.

(레시피를 실행하기 전에 실행 엔진으로 데이터베이스 내에서 실행될 것임을 확인하기 위해 Run 버튼 아래의 기어 아이콘을 클릭하여 확인합니다!)

 

실행 후 Flow는 위의 이미지와 같습니다!


SQL 레시피와 시각레시피를 이용하여 데이터베이스 내의 작업을 수행해보았습니다!

궁금한 내용 있으시면, 댓글로 질문 남겨주세요 : )