본문 바로가기
학습장/Data Engineering

python sqllineage 라이브러리

by daedoo_ 2022. 8. 29.

SQL 기반으로 데이터를 처리하는 경우, 복잡한 쿼리문에서 선후행 관계를 파악하고자 할 때 등에 유용하게 쓸 수 있는 sqllineage 라이브러리에 대해 알아보고자 합니다. 

'lineage' 가 무슨 뜻일까요.. 흔히 알던 그 리니지? 라고 읽는건가? 이런 뜻이 있었군요..

SQL 내부의 소스/타겟 테이블들을 리턴해서 선후행 관계를 파악하는데 도움을 주는데 이 단어 뜻이 이런 것이였군요

Daum 영어사전

pip로 sqllineage 설치

 

pip install sqllineage

 

  • 예시
    • SQL문을 파라미터로 전달하면 아래와 같이 리턴됨. (2개 이상의 쿼리문은 세미콜론으로 구분됨)
    • 테이블 스키마명 없을 경우 <default>.테이블명 과 같이 출력됨
    • 기본적으로 테이블명은 소문자로 리턴되는 것으로 보임 
"insert into db1.table1 select * from db2.table2; insert into db3.table3 select * from db1.table1;"
Statements(#): 2
Source Tables:
    db2.table2
Target Tables:
    db3.table3
Intermediate Tables:
    db1.table1

 

  • draw() 함수를 사용하면 시각화한 자료도 제공됨
    • 로컬에서 띄워진 방식으로 웹페이지 URL이 리턴되는데, 테이블 단위 뿐만 아니라 컬럼 레벨로도 소스/타겟 관계가 그려짐
    • ex) 테이블 단위

출처 -&nbsp;https://pypi.org/project/sqllineage/
컬럼단위 lineage (출처 - https://pypi.org/project/sqllineage/)

 

 

 

Snowflake - Error parsing MERGE statement · Issue #166 · reata/sqllineage

Hello, I am obtaining an error parsing a specific merge statement. Here is my code and error: Code: bad_text = """ merge into target using source on target.id = source.id when matche...

github.com

 

 

(추가적으로 업데이트 예정입니다. ㅠ)

댓글