데이터 계보

Snowflake는 데이터가 소스에서 대상 오브젝트(예: 테이블에서 뷰로)로 이동하는 방식을 추적하고, 오브젝트의 데이터가 어디에서 왔는지 또는 어디로 가는지 확인할 수 있게 해줍니다. 이 정보는 데이터 계보 라고 하며, Snowflake 오브젝트 간의 관계를 이해하는 데 도움이 됩니다.

데이터 계보는 두 가지 유형의 관계를 포착합니다.

  • 데이터가 한 오브젝트에서 다른 오브젝트로 복사본이 복사되거나 구체화되는 경우와 같은 데이터 이동. 예를 들어, CREATE TABLE AS SELECT (CTAS), INSERT 또는 MERGE 테이블에 대한 작업은 데이터 이동을 초래합니다.

  • 오브젝트가 기본 오브젝트를 참조하지만 뷰가 테이블을 참조하는 경우와 같이 데이터를 구체화하거나 복사본으로 만들지 않는 경우의 오브젝트 종속성입니다.

Snowflake 데이터 계보는 이러한 이점을 제공합니다.

  • 서로 다른 오브젝트 간의 관계를 이해하여 영향 분석을 제공합니다.

  • 데이터 이동 계보 및 오브젝트 종속성을 뷰로 확인하여 모니터링 및 문제 해결을 개선합니다.

  • 민감한 데이터의 흐름을 추적하여 규정 준수를 용이하게 합니다.

  • 열에 태그 및 마스킹 정책을 적용하여 민감한 데이터를 보호할 수 있도록 도와줍니다.

  • 소스 및 대상 오브젝트와 열을 이해하여 데이터에 대한 신뢰도를 개선합니다.

  • 계보 보기 관리자를 위임할 수 있습니다. 자세한 내용은 계보 정보에 대한 액세스 제어 섹션을 참조하십시오.

업스트림 및 다운스트림 관계 정보

데이터 계보는 소스 오브젝트와 대상 오브젝트 측면에서 오브젝트의 관계를 이해하는 데 도움이 됩니다. 계보 용어로 소스 오브젝트는 대상 오브젝트의 “업스트림”이고 대상 오브젝트는 소스 오브젝트의 “다운스트림”입니다. Snowsight 는 선택 항목의 업스트림 또는 다운스트림에서 한 번에 한 단계씩 오브젝트를 점진적으로 표시합니다.

예를 들어 SQL 문을 예로 들 수 있습니다.

CREATE TABLE table2 AS SELECT col1 FROM table1;
Copy

table2 는 대상 테이블이며 소스 테이블인 table1 의 다운스트림입니다. 테이블 table1 에서 시작된 열 col1 은 테이블 table2 에 포함되며, 이 역시 다운스트림 계보 관계입니다.

Snowsight 에서 table1 테이블의 세부 정보를 뷰하는 경우 Lineage 탭에 table1 에서 table2 를 가리키는 화살표가 표시되어 다운스트림 계보 관계를 나타냅니다. 대신 테이블 table2 에서 시작하면 화살표가 table2 에서 table1 로 향합니다.

시작하기

Snowsight 에서 데이터 계보 사용을 시작하려면 다음을 수행합니다.

  1. 필수 권한 으로 Snowsight 에 로그인합니다.

  2. Data » Databases 메뉴를 사용하여 테이블 또는 뷰와 같은 지원되는 오브젝트 를 선택합니다.

  3. Lineage 탭을 선택합니다.

Lineage 탭의 기본 작업은 다음과 같습니다.

Snowsight의 데이터 계보 스크린샷 예시
  • A. 오브젝트를 선택하여 해당 열의 열 및 태그를 포함하여 해당 오브젝트에 대한 추가 세부 정보를 표시합니다.

  • B. +/- 을 선택하여 업스트림 또는 다운스트림에 있는 오브젝트를 표시하거나 숨깁니다.

  • C. 2개의 오브젝트를 연결하는 화살표를 선택하여 다운스트림 오브젝트가 생성된 방법에 대한 정보(예: 오브젝트를 생성한 SQL 문)를 표시합니다. 액세스 제어 권한에 따라 표시되는 정보가 결정됩니다.

  • D. 선택한 오브젝트의 계보에 초점을 맞춘 새 계보 다이어그램을 엽니다.

Lineage 탭을 사용하여 다른 작업을 수행하는 방법에 대해 알아보려면 다음을 참조하십시오.

열 계보

Snowsight 를 사용하여 소스 오브젝트의 열과 대상 오브젝트의 열 간의 관계를 추적할 수 있습니다. 지정된 열에 대해 열과 계보를 공유하는 모든 업스트림 및 다운스트림 열을 확인할 수 있습니다.

열의 계보를 확인합니다.

  1. 계보 탭 을 열고 추적할 열이 포함된 오브젝트를 선택합니다. 측면 패널이 열립니다.

  2. 사이드 패널에서 열 이름 위로 마우스를 가져간 다음 View Lineage 를 선택합니다.

  3. Upstream Lineage 또는 Downstream Lineage 를 선택하여 업스트림 또는 다운스트림 오브젝트의 열을 목록으로 생성합니다.

    Distance 열을 사용하여 계보에서 열이 얼마나 멀리 떨어져 있는지 확인할 수 있습니다. 예를 들어, 다운스트림 거리가 1이면 열이 현재 오브젝트에서 직접 생성된 오브젝트에 있는 것입니다. 다운스트림 거리가 2인 경우 열은 현재 오브젝트에서 생성된 오브젝트에서 생성된 오브젝트에 존재합니다.

태그 작업

Lineage 탭은 열의 계보를 보고, 태그가 있어야 하는 열을 식별하고, 새 태그를 모두 동일한 워크플로에서 적용할 수 있는 통합 거버넌스 환경을 제공합니다.

태그를 보고 적용할 수 있는지 여부는 Lineage 탭을 보기 위해 사용하는 역할의 액세스 제어 권한에 따라 다릅니다. 태그 작업의 필수 권한에 대한 자세한 내용은 DDL 명령, 작업 및 권한 요약 섹션을 참조하십시오.

오브젝트 및 해당 열에서 태그 찾기

  1. 계보 탭 을 열고 관심 있는 오브젝트를 선택합니다. 측면 패널이 열립니다.

  2. 오브젝트 자체의 태그를 보려면 사이드 패널의 Details 섹션을 확인하십시오.

  3. 오브젝트의 열에 있는 태그를 보려면 Columns 섹션에서 해당 열을 찾습니다. 태그가 있는 경우 열 이름 옆에 태그 기호가 표시됩니다. 기호 위로 마우스를 가져가면 태그 이름과 값을 확인할 수 있습니다.

누락된 태그 또는 잘못된 태그 값 식별 및 수정

한 열에 태그가 있는 경우 해당 열과 계보를 공유하는 업스트림 열과 다운스트림 열에 동일한 태그를 적용해야 할 가능성이 높습니다. 마찬가지로 업스트림 열과 다운스트림 열의 태그 값은 종종 동일해야 합니다.

데이터 계보 워크플로는 업스트림 및 다운스트림 열에서 누락된 태그와 다른 값을 가진 태그를 식별합니다. 그런 다음 누락된 태그를 적용하거나 해당 열의 태그 값을 변경하는 데 도움이 됩니다.

  1. 계보 탭 을 열고 추적할 열이 포함된 오브젝트를 선택합니다. 측면 패널이 열립니다.

  2. 사이드 패널에서 열 이름 위로 마우스를 가져간 다음 View Lineage 를 선택합니다.

  3. View Column Lineage 대화 상자에서 Downstream Lineage 또는 Upstream Lineage 를 선택합니다.

    다운스트림 또는 업스트림 열에 태그가 누락되었거나 태그 값이 일치하지 않는 경우 배너가 표시됩니다. Tags 열의 색상 코딩을 사용하여 태그의 문제점을 식별할 수 있습니다.

    • 태그에 점선 테두리가 있는 경우 해당 열에는 태그가 적용되지 않은 것입니다.

    • 태그에 노란색 테두리가 있는 경우 태그의 값이 일치하지 않는 것입니다.

  4. 이렇게 누락되거나 일치하지 않는 태그를 수정하려면 다음과 같이 하십시오.

    1. Review and Apply 을 선택합니다.

    2. 제안된 변경 사항을 수락할 것인지 확인한 후 Apply 을 선택합니다.

마스킹 정책 식별하기

  1. 계보 탭 을 열고 관심 있는 오브젝트를 선택합니다. 측면 패널이 열립니다.

  2. 오브젝트의 열에 대한 마스킹 정책을 보려면 Columns 섹션에서 해당 열을 찾습니다. 열이 마스킹 정책에 의해 보호되는 경우 열 이름 옆에 기호가 표시됩니다. 기호 위로 마우스를 가져가면 마스킹 정책 이름과 세부 정보를 확인할 수 있습니다.

    마스킹 정책에 문제가 있는 경우(예: 동일한 열에 여러 마스킹 정책이 할당되어 있는 경우) 마스크 기호 대신 Policy Error 가 표시됩니다. Policy Error 위로 마우스를 가져가면 오류에 대한 설명이 표시됩니다. 오류 발생 원인을 식별하는 데 도움이 되는 추가 도움말은 태그 및 정책 검색태그 기반 마스킹 정책 문제 해결하기 섹션을 참조하십시오.

프로그래밍 방식으로 계보 검색하기

GET_LINEAGE (SNOWFLAKE.CORE) 함수를 사용하여 프로그래밍 방식으로 계보 정보를 검색할 수 있습니다. 이 함수는 Snowsight 의 Lineage 탭에서 제공하는 정보의 하위 집합을 반환합니다.

데이터 계보에 대해 지원되는 작업

다음 작업은 소스 오브젝트와 대상 오브젝트 간에 업스트림 및 다운스트림 관계를 생성합니다.

지원되는 오브젝트

데이터 계보 지원 테이블형 오브젝트 간 데이터 이동 및 종속성 . “테이블과 유사한” 오브젝트란 테이블을 포함하여 테이블처럼 쿼리할 수 있는 모든 오브젝트를 말합니다(테이블보다 더 테이블과 유사한 것은 없습니다). 테이블형 오브젝트에는 다음이 포함됩니다.

  • 테이블

  • 동적 테이블

  • 외부 테이블

  • Iceberg 테이블

  • 구체화된 뷰

스테이지도 다음과 같은 머신 러닝 오브젝트와 마찬가지로 데이터 계보 관계에 참여할 수 있습니다.

열 계보는 두 개의 테이블형 오브젝트에서 열 간에 지원됩니다. 예를 들어, 테이블에서 열을 선택하면 해당 열이 표시되는 다른 테이블형 오브젝트를 보여주는 다운스트림 열 계보를 볼 수 있습니다.

또한 태그 및 마스킹 정책을 관리할 수 있는 권한이 있는 역할을 사용하는 경우 태그 및 마스킹 정책 연결을 볼 수 있습니다.

ML 계보

ML 계보 는 특히 단순한 이동이나 종속성 관계보다는 머신 러닝 워크플로에서 데이터가 어떻게 사용되고 변환되는지에 초점을 맞춘 머신 러닝 관계를 지원합니다. 다음 유형의 오브젝트 간의 관계가 지원됩니다.

계보 정보에 대한 액세스 제어

다음 권한이 있는 역할은 Lineage 탭에 액세스하여 오브젝트의 업스트림 및 다운스트림 계보 오브젝트 및 종속성을 볼 수 있습니다.

  • 계정에 대한 VIEW LINEAGE 권한.

  • 계보를 평가하려는 오브젝트에 대한 모든 권한(예: 테이블의 SELECT).

  • USAGE 를 오브젝트가 포함된 데이터베이스 및 스키마에 추가합니다.

VIEW LINEAGE 권한은 사용자가 오브젝트에 대한 데이터 계보를 볼 수 있는지 여부를 제어합니다. 기본적으로 PUBLIC 역할에는 이 권한이 있으므로 모든 사람이 계보를 볼 수 있습니다. 계보를 볼 수 있는 사람을 좁히려면 PUBLIC 역할에서 VIEW LINEAGE 권한을 취소하고 대신 사용자 지정 역할에 권한을 부여할 수 있습니다.

사용자에게 계보 그래프에서 업스트림 또는 다운스트림 오브젝트에 대한 권한이 없는 경우, 해당 오브젝트는 회색으로 표시되며 해당 오브젝트를 볼 수 있는 권한이 부족하다는 메시지가 표시됩니다. 회색 오브젝트는 계보 그래프에서 터미널 노드를 의미하는 것이 아니라, 사용자가 해당 오브젝트의 계보를 검색할 권한이 없기 때문에 해당 지점에서 더 이상 업스트림 또는 다운스트림의 계보를 볼 수 없음을 나타낼 뿐입니다. 이 동작은 다른 액세스 정책으로 보호되는 오브젝트 및 열에도 적용됩니다.

사용자는 대상 오브젝트를 생성한 SQL 문을 보려면 QUERY_HISTORY 뷰 에 액세스할 수 있는 권한이 있어야 합니다.

사용자가 모든 오브젝트에 대한 계보 보기 허용

오브젝트, 데이터베이스 또는 스키마에 대한 권한이 없더라도 계보의 모든 오브젝트를 볼 수 있도록 역할을 구성할 수 있습니다. 예를 들어, GRANT RESOLVE ALL ON ACCOUNT TO ROLE lineage_role; 같이 계정에 RESOLVE ALL 권한을 역할에 부여하기만 하면 됩니다. 이 역할에는 여전히 VIEW LINEAGE 권한이 필요합니다.

이름 변경 및 삭제된 테이블 노드

이름이 변경된 테이블은 그래프에 표시되지만 삭제된 테이블은 표시되지 않습니다.

계보 기록 및 보존

계보는 2024년 11월 Snowflake에 도입되었습니다. 계보 정보는 다음과 같이 가용성이 제공됩니다.

  • 이 날짜 이전에 발생한 오브젝트 종속성(예: 테이블 기반 뷰)에 대한 계보가 사용 가능합니다.

  • 이 날짜 이전에 발생한 데이터 이동(예: CTAS 문을 사용하여 다른 테이블에서 테이블을 생성하는 경우)에 대한 계보는 사용할 수 없습니다.

기록 정보는 다음과 같이 보관됩니다.

  • 칼럼 계보는 1년간 유지됩니다.

  • 오브젝트 계보는 1년간 유지됩니다.

제한 사항 및 고려 사항

  • 다음 종류의 오브젝트에는 계보를 사용할 수 없습니다.

    • 공유 데이터베이스의 오브젝트.

    • 공유 SNOWFLAKE 데이터베이스의 오브젝트.

    • 데이터베이스의 INFORMATION_SCHEMA 에 있는 오브젝트입니다.

  • 동적 테이블은 다른 오브젝트의 계보 그래프에 표시되지만 동적 테이블 자체에는 Lineage 탭이 표시되지 않습니다.

  • 데이터가 테이블에서 다운스트림 오브젝트로 이동하지 않을 때 필터링 또는 조인에 사용된 테이블은 포함되지 않습니다. 다음 예제에서 t2 테이블은 target_table 테이블의 계보의 일부로 간주되지 않습니다.

    CREATE TABLE target_table AS
      SELECT t1.c1, t1.c2
        FROM t1, t2
        WHERE t1.c3 = t2.c3;
    
    Copy
  • 계보는 분리된 개별 쿼리 결과의 데이터 이동을 추적할 수 없습니다. 예를 들어, 다음 쿼리 세트는 테이블 sourceTable1 에서 테이블 target_table 로의 계보를 생성하지 않습니다.

    SET read_output1 = (SELECT c1 FROM sourceTable1);
    
    INSERT INTO target_table(c1) VALUES ($read_output1);
    
    Copy