Skip to content

5 데이터 카탈로그 description 개선방향 #29

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 13 commits into
base: master
Choose a base branch
from

Conversation

seyoung4503
Copy link
Contributor

@seyoung4503 seyoung4503 commented Mar 21, 2025

#️⃣ Issue Number

📝 요약(Summary)

  • datahub_source.py에 DataHub lineage 정보를 추출하는 함수들을 추가했습니다.
    • get_table_lineage : URN의 DOWNSTREAM/UPSTREAM lineage를 가져오는 함수
    • get_column_lineage : URN의 UPSTREAM table의 column별 lineage를 가져오는 함수
    • min_degree_lineage : 수많은 lineage 중 최소 degree만 가져오는 함수
    • build_table_metadata : table name, desc, columns, lineage를 활용해 table metadata를 만드는 함수
  • tools.py에 전체 테이블 메타데이터를 생성하는 get_metadata_from_db() 함수 추가했습니다.
  • 테이블 이름, 설명, 컬럼 정보, 테이블/컬럼 단위 lineage 정보까지 포함해 반환하도록 구현했습니다.

💬 To Reviewers

  • URN 파싱 및 lineage 추출 과정에서 추가적인 예외 처리나 개선할 부분이 있다면 리뷰 부탁드립니다.
  • 메타데이터 구조나 반환 형태가 이후 사용 및 확장에 적절한지 확인해주시면 좋겠습니다.

📂 Metadata Structure

get_metadata_from_db()의 반환 구조는 아래와 같습니다:

[
  {
    "table_name": str,
    "description": str,
    "columns": [
      {
        "column_name": str,
        "column_description": str
      },
      ...
    ],
    "lineage": {
      "downstream": [{"table": str, "degree": int}, ...],
      "upstream": [{"table": str, "degree": int}, ...],
      "upstream_columns": [
        {
          "upstream_dataset": str,
          "columns": [
            {"upstream_column": str, "downstream_column": str, "confidence": float}
          ]
        },
        ...
      ]
    }
  },
  ...
]

📖 Metadata Terminology

아래는 메타데이터 구조에서 사용된 주요 키 값과 의미입니다:

용어 설명
lineage 해당 테이블의 데이터 계보(lineage) 정보입니다
downstream 이 테이블을 사용하는 하위 테이블 정보 (예: 이 테이블을 읽고 가공하는 테이블)
upstream 이 테이블이 의존하는 상위 테이블 정보 (예: 이 테이블을 만들기 위해 사용된 테이블)
degree lineage 상에서의 거리 (1이면 직접 연결, 2면 중간 테이블 한 번 거침)
upstream_columns 컬럼 단위로 어떤 상위 테이블의 어떤 컬럼이 연결되어 있는지 정보
upstream_dataset 컬럼 lineage에서 상위 데이터셋(테이블) 이름
upstream_column 상위 테이블의 컬럼 이름
downstream_column 현재 테이블에서 상위 컬럼으로부터 파생된 컬럼 이름
confidence 컬럼 lineage 매핑의 신뢰도 점수 (0~1 float 값, 1 일수록 신뢰도가 높음)

PR Checklist

  • DataHub lineage 정보 추출 함수 추가 (datahub_source.py)
  • 전체 테이블 메타데이터 생성 함수 추가 (tools.py)
  • 반환 타입 명시 및 예외 처리 추가
  • 비즈니스 용어 사전 논의 필요

reference) How to Code Review

  • 따봉(👍): 리뷰어가 리뷰이의 코드에서 칭찬의 의견을 남기고 싶을 때 사용합니다.
  • 느낌표(❗): 리뷰어가 리뷰이에게 필수적으로 코드 수정을 요청할 때 사용합니다.
  • 물음표 (❓): 리뷰어가 리뷰이에게 의견을 물어보고 싶을 때 사용합니다.
  • 알약 (💊): 리뷰어가 리뷰이의 코드에서 개선된 방법을 제안하지만 그것의 반영이 필수까지는 아닐 때 사용합니다.

@seyoung4503 seyoung4503 linked an issue Mar 21, 2025 that may be closed by this pull request
9 tasks
@ehddnr301
Copy link
Collaborator

💬 와! 막연히 "이 데이터 잘 활용하면 좋겠다"라고 생각만 했었는데, 정말 발전 가능성이 무궁무진하겠네요. 잘 정리해주셔서 감사합니다! 오후에 테스트해보고 추가로 리뷰 드리겠습니다!

Copy link
Collaborator

@ehddnr301 ehddnr301 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

💊 ga_cube_churned_revenue 라는 테이블 예시입니다. (모두 동일한 현상)
Downstream에 조회하는 urn도 포함되는거 같은데 별도로 추가하는 로직이 없는걸로 봐선 datahub에서 그렇게 반환해주는것 같습니다만 조회하는 테이블에 대해서는 downstream에서 제외하도록 하는건 어떨까요?

💬 해당 데이터들을 조회해보니 양이 상당하네요! 모든 데이터를 한번에 활용하는건 어려울것 같고 agent에게 필요테이블을 조회하게 한다던지 하는 방향으로 진행해봐도 의미 있는 데이터가 될것 같기도 합니다.

고생하셨습니다!

@seyoung4503
Copy link
Contributor Author

👍 말씀해주신 부분 저도 조금 신경 쓰였었는데, downstream과 upstream의 degree 기준이 다르게 적용되는 게 의아하더라구요. Downstream은 자기자신부터 degree를 세는 반면, upstream은 곧바로 연결된 테이블부터 degree를 세는 것 같아요.
말씀해주신 부분 반영하겠습니다 😊

💬 좋은 의견 주셔서 감사합니다!! 말씀해주신 대로 lineage 정보를 agent가 적재적소에 활용할 수 있다면 더욱 좋을 것 같아요!

Copy link
Contributor

@ParkGyeongTae ParkGyeongTae left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 오오.. 좀 더 풍요로워지는 것 같아요! 계보를 사용할 수 있는 환경이라면 사용성이 좋을 것 같습니다!!

@seyoung4503
Copy link
Contributor Author

  • Downstream에 조회하는 urn 제외
  • get_column_names_and_descriptions 함수 컬럼 타입 추가
  • get_metadata_from_db 진행도 추가

작업 진행하였습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

데이터 카탈로그 description 개선방향
3 participants