SQL 기반으로 데이터를 처리하는 경우, 복잡한 쿼리문에서 선후행 관계를 파악하고자 할 때 등에 유용하게 쓸 수 있는 sqllineage 라이브러리에 대해 알아보고자 합니다.
'lineage' 가 무슨 뜻일까요.. 흔히 알던 그 리니지? 라고 읽는건가? 이런 뜻이 있었군요..
SQL 내부의 소스/타겟 테이블들을 리턴해서 선후행 관계를 파악하는데 도움을 주는데 이 단어 뜻이 이런 것이였군요
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) 테이블 단위
- merge 구문의 경우 파싱이 잘 안되는 케이스 있었음
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
(추가적으로 업데이트 예정입니다. ㅠ)
'학습장 > Data Engineering' 카테고리의 다른 글
pandas - stack() (2) | 2022.10.03 |
---|---|
Vertica 특징 (4) | 2022.09.29 |
ERROR s2v.S2V: ERROR: S2V.save(): did not pass the Vertica requirements pre-check. (0) | 2021.07.14 |
spark dataframe to vertica (0) | 2021.06.29 |
spark 에서 jdbc 활용하여 RDB로 데이터 적재 (0) | 2021.04.27 |
댓글