Snowflake Horizon에서 메타데이터 가져오기

Knowledge Catalog (이전 명칭: Dataplex Universal Catalog) 커넥터를 사용하여 Snowflake Horizon에서 Google Cloud로 메타데이터를 직접 가져오면 데이터 사일로를 해소하고 도구 간 전환을 방지할 수 있습니다.

이 커넥터는Google Cloud, Microsoft Azure 또는 Amazon Web Services (AWS)에서 호스팅되는 Snowflake Horizon 인스턴스를 지원합니다.

다음 표에는 Snowflake Horizon 커넥터가 캡처하는 메타데이터가 나와 있습니다.

카테고리 메타데이터 캡처됨
기술
  • Metastore (Snowflake 계정)
  • 카탈로그 (데이터베이스)
  • 스키마
  • 테이블 (임시, 외부, 동적, 대화형, 하이브리드, Apache Iceberg 테이블 포함) 및 열
  • 뷰 (표준, 구체화, 보안)
  • 스테이지 (내부 및 외부), 파일 세트로 가져옴
  • 사용자 정의 함수 (UDF) 및 저장 프로시저
운영
  • 사용 측정항목 (30일 및 90일 동안의 조회, 읽기, 쓰기, 30일 동안의 자주 사용하는 사용자 및 자주 조인되는 테이블)
  • 기본 키 및 외래 키
비즈니스
  • 태그 (객체, 열, 시맨틱 뷰 구성원 태그)
  • 데이터 품질 (데이터 측정항목 함수 예상, 이상 감지, 자동 데이터 품질 모니터링 결과)
  • 데이터 프로파일링 (데이터 측정항목 함수 측정 및 데이터 분류 결과)
  • 조인 및 관계 (쿼리 기록에서 추론, 시맨틱 뷰에서 선언, 뷰-테이블 종속 항목)
  • 소유자 (소유 역할), 생성 시간, 최종 변경 시간
시맨틱
  • 시맨틱 뷰 (논리적 테이블, 측정기준, 사실, 측정항목, 관계, 동의어, 샘플 값, 커스텀 안내)
  • 시맨틱 뷰 소유자
  • 시맨틱 뷰 사용량 (30일 및 90일 동안의 조회 및 읽기, 30일 동안의 빈번한 사용자와 자주 조인된 테이블)

제한사항

Snowflake Horizon 커넥터에는 다음과 같은 제한사항이 있습니다.

  • 계보는 지원되지 않습니다.
  • 커넥터는 Iceberg 테이블의 메타데이터를 가져오지만 이 메타데이터를 Iceberg REST 카탈로그 (IRC)의 기본 물리적 테이블에 자동으로 연결하지는 않습니다.
  • 태그, 데이터 품질 및 프로파일링 결과, 분류 결과, 쿼리 기록 조인, ACCESS_HISTORY (자주 사용하는 사용자 및 자주 조인되는 테이블)을 읽는 사용량 통계에는 Snowflake Enterprise 버전 이상이 필요합니다.

시작하기 전에

Snowflake Horizon에서 메타데이터를 가져오려면 먼저 다음 태스크를 완료하세요.

  1. 필요한 역할 및 권한을 부여합니다.
  2. Dataplex API 및 BigQuery Data Transfer Service API를 사용 설정합니다.
  3. Snowflake Horizon 기본 요건 충족
  4. 네트워킹 기본 요건을 충족합니다.

IAM 역할 및 권한

Knowledge Catalog 커넥터 작업을 만들고 관리하려면 Knowledge Catalog 및 BigQuery Data Transfer Service에 대한 권한을 부여하는 Identity and Access Management (IAM) 역할이 필요합니다.

Snowflake Horizon 커넥터를 구성하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

또한 BigQuery Data Transfer Service 서비스 에이전트(service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com)에 다음 두 역할을 모두 부여해야 합니다.

  • 대상 항목 그룹 또는 이를 포함하는 프로젝트에 대한 Dataplex 항목 그룹 가져오기 도구(roles/dataplex.entryGroupImporter) 이 역할을 통해 서비스 에이전트는 메타데이터를 항목 그룹 (dataplex.entryGroups.import)으로 가져올 수 있습니다.
  • 대상 항목 그룹이 포함된 프로젝트에 대한 Dataplex 항목 및 EntryLink 소유자(roles/dataplex.entryOwner) 이 역할을 통해 서비스 에이전트는 사용량, 비즈니스, 데이터 품질 메타데이터, 항목 링크를 가져올 수 있습니다. 여기에는 다음 권한이 포함됩니다.

    • dataplex.entryGroups.useDataProfileAspect
    • dataplex.entryGroups.useDataQualityScorecardAspect
    • dataplex.entryGroups.useManagedConnectorTypes
    • dataplex.entryGroups.useReferenceEntryLink
    • dataplex.entryGroups.useSchemaAspect
    • dataplex.entryGroups.useSchemaJoinAspect
    • dataplex.entryGroups.useSchemaJoinEntryLink
    • dataplex.entryGroups.useUsageAspect
    • dataplex.entryLinks.reference

    가져오기에서 프로젝트에 대한 dataplex.entryLinks.reference 권한을 확인하므로 항목 그룹뿐만 아니라 프로젝트에도 이 역할을 부여합니다. 서비스 에이전트에 프로젝트에 대한 이 권한이 없으면 전송 실행이 Permission 'dataplex.entryLinks.reference' denied과 같은 오류와 함께 실패하고 메타데이터를 가져오지 않습니다.

이러한 두 역할을 모두 부여하는 대신 대상 항목 그룹이 포함된 프로젝트에 대한 Dataplex 항목 그룹 소유자(roles/dataplex.entryGroupOwner) 역할을 부여할 수 있습니다. 이 역할에는 두 역할의 권한이 모두 포함되며 서비스 에이전트가 프로젝트의 모든 항목 그룹에 대한 액세스 권한을 만들고, 삭제하고, 관리할 수 있습니다.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

API 사용 설정

Dataplex API 및 BigQuery Data Transfer Service API를 사용 설정합니다.

API 사용 설정

Snowflake Horizon 기본 요건

원격 Snowflake 카탈로그에 대해 SQL 쿼리 또는 Spark 작업을 실행하려면 Snowflake Horizon 카탈로그에 대한 크로스 클라우드 연결 설정을 참조하세요.

커넥터는 키 쌍 인증을 사용하여 Snowflake 사용자로 Snowflake에 로그인하고 SNOWFLAKE.ACCOUNT_USAGE 스키마에서 메타데이터를 읽습니다. 비밀번호 인증은 지원되지 않습니다. ACCOUNTADMIN 역할이 있는 사용자와 같은 Snowflake 관리자는 다음 단계를 완료해야 합니다.

  1. 커넥터의 역할을 만들고 ACCOUNT_USAGE 및 메타데이터 쿼리를 실행하는 웨어하우스에 대한 액세스 권한을 부여합니다.

    CREATE ROLE IF NOT EXISTS DATAPLEX_CATALOG_READER;
    GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
      TO ROLE DATAPLEX_CATALOG_READER;
    GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME
      TO ROLE DATAPLEX_CATALOG_READER;
    

    WAREHOUSE_NAME을 메타데이터 쿼리를 실행하는 Snowflake 웨어하우스의 이름으로 바꿉니다.

  2. 커넥터의 서비스 사용자를 만들거나 기존 사용자를 사용하고 역할을 부여합니다.

    CREATE USER IF NOT EXISTS USERNAME
      TYPE = SERVICE
      DEFAULT_ROLE = DATAPLEX_CATALOG_READER
      DEFAULT_WAREHOUSE = WAREHOUSE_NAME;
    GRANT ROLE DATAPLEX_CATALOG_READER TO USER USERNAME;
    

    USERNAME을 커넥터의 Snowflake 사용자 이름으로 바꿉니다.

  3. PKCS#8 형식의 비공개 키로 RSA 키 쌍을 생성합니다.

    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
    

    비공개 키를 암호화하려면 -nocrypt을 -v2 aes-256-cbc로 바꾸고 커넥터를 구성할 때 암호를 제공합니다. 커넥터를 구성할 때 비공개 키 파일 (rsa_key.p8)을 제공하므로 안전하게 보관하세요.

  4. Snowflake 사용자에게 공개 키를 할당합니다.

    ALTER USER USERNAME SET RSA_PUBLIC_KEY='PUBLIC_KEY';
    

    PUBLIC_KEY를 rsa_key.pub의 콘텐츠로 바꿉니다. 이때 -----BEGIN PUBLIC KEY----- 및 -----END PUBLIC KEY----- 줄은 제외합니다.

  5. 선택사항: 추가 메타데이터를 가져오려면 커넥터 역할에 다음 권한을 부여합니다.

    • 데이터 프로필 및 데이터 품질 결과: SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER 애플리케이션 역할을 부여합니다.

      GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER
        TO ROLE DATAPLEX_CATALOG_READER;
      

      데이터 품질 결과는 역할이 볼 수 있는 검사에 대해서만 가져옵니다. 이를 위해서는 데이터베이스 및 스키마에 대한 USAGE, 테이블에 대한 SELECT, 커스텀 데이터 측정항목 함수에 대한 USAGE가 필요합니다.

    • 기본 키 및 외래 키: 데이터베이스 및 스키마에 대한 USAGE, 테이블에 대한 SELECT 또는 REFERENCES를 부여합니다.

    • 시맨틱 뷰의 샘플 값 및 커스텀 안내: 시맨틱 뷰에 대한 REFERENCES를 부여합니다.

커넥터를 구성할 때 입력하는 계정 식별자를 찾으려면 Snowflake에서 다음 쿼리를 실행합니다.

SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();

네트워킹 기본 요건

BigQuery Data Transfer Service가 비공개 네트워크 내의 비공개 IP 주소를 사용하여 외부 데이터베이스 또는 서드 파티 클라우드 데이터 소스에 안전하게 연결할 수 있도록 하려면 Private Service Connect를 통해 네트워크 연결을 구성합니다.

공개 IP 주소를 사용하여 온프레미스 환경 또는 클라우드 호스팅 인스턴스에 연결하는 경우 네트워크 연결이 필요하지 않습니다.

Snowflake Horizon 커넥터 구성

Google Cloud 콘솔 또는 REST API를 사용하여 Snowflake Horizon 커넥터를 구성합니다.

콘솔

  1. Google Cloud 콘솔에서 Knowledge Catalog 페이지로 이동합니다.

    Knowledge Catalog로 이동

  2. 탐색 메뉴의 관리 섹션에서 커넥터를 클릭한 후 연결 추가를 클릭합니다.

  3. 커넥터 목록에서 Snowflake Horizon 카드를 선택합니다.

  4. 데이터 소스 세부정보 섹션에서 Snowflake 계정의 연결 세부정보를 제공합니다.

    • 네트워크 연결의 경우 필요한 경우 기존 네트워크 연결을 선택하거나 새로 만듭니다.
    • 계정 식별자에 .snowflakecomputing.com 없이 Snowflake 계정 식별자를 입력합니다(예: myorg-myaccount). xy12345.us-east-2.aws와 같은 계정 위치를 입력할 수도 있습니다.
    • 사용자 이름에 키 쌍 인증을 위해 구성한 Snowflake 사용자를 입력합니다.
    • 비공개 키에 사용자의 PKCS#8 비공개 키(예: rsa_key.p8 파일의 콘텐츠)를 입력합니다.
    • 선택사항: 비공개 키 암호의 경우 비공개 키가 암호화되어 있으면 암호를 입력합니다.
    • 선택사항: 웨어하우스에 메타데이터 쿼리를 실행하는 웨어하우스를 입력합니다. 웨어하우스를 지정하지 않으면 커넥터가 사용자의 기본 웨어하우스를 사용합니다.
    • 선택사항: 역할에 커넥터가 사용하는 역할(예: DATAPLEX_CATALOG_READER)을 입력합니다. 역할을 지정하지 않으면 커넥터가 사용자의 기본 역할을 사용합니다.
    • 전송할 Snowflake 객체에서 찾아보기를 클릭하여 가져올 데이터베이스, 스키마 또는 개별 객체 (테이블, 뷰, 시맨틱 뷰, 스테이지, 함수, 프로시져)를 선택합니다. 데이터베이스 또는 스키마를 선택하면 그 안에 있는 모든 객체가 가져와집니다. 함수 및 프로시저는 CALC(NUMBER, VARCHAR)과 같은 인수 유형과 함께 나열됩니다.

      TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]] 형식으로 객체를 수동으로 입력할 수도 있습니다. 여기서 TYPE는 CATALOG (또는 DATABASE), SCHEMA, TABLE, VIEW, SEMANTIC-MODEL, FILESET, FUNCTION 또는 PROCEDURE입니다(예: SCHEMA:myorg-myaccount/SALES/PUBLIC). 찾아보기에 표시된 소문자 ORG_NAME-ACCOUNT_NAME 형식으로 ACCOUNT를 입력합니다. 데이터베이스, 스키마, 객체 이름은 대소문자를 구분합니다. 이름 패턴은 지원되지 않습니다.

  5. 대상 설정 섹션에서 다음을 수행합니다.

    • 찾아보기를 클릭하고 가져온 메타데이터를 저장할 기존 Knowledge Catalog 항목 그룹을 선택하거나 새 항목 그룹 만들기를 클릭합니다.
    • 항목 그룹에 대한 권한을 지금 설정할지 아니면 나중에 설정할지 선택합니다. 사용자가 가져온 메타데이터를 볼 수 있도록 하려면 항목 그룹에 권한을 설정합니다. 프로젝트 수준에서 BigQuery Data Transfer Service 서비스 에이전트에 Dataplex 항목 그룹 가져오기 도구(roles/dataplex.entryGroupImporter) 역할 또는 dataplex.entryGroups.import 권한을 부여하지 않은 경우 이 항목 그룹에 부여합니다. dataplex.entryLinks.reference 권한은 프로젝트 수준에서 확인되므로 프로젝트에 대한 Dataplex 항목 및 EntryLink 소유자(roles/dataplex.entryOwner) 역할을 부여해야 합니다. 자세한 내용은 IAM 역할 및 권한을 참조하세요.
  6. 전송 구성 이름 섹션의 표시 이름에 메타데이터 가져오기 작업 이름을 입력합니다.

  7. 일정 옵션 섹션에서 메타데이터 가져오기 작업의 빈도를 구성합니다. 주문형을 선택하면 수동으로 트리거할 때만 작업이 실행됩니다.

  8. 선택사항: 알림 옵션 섹션에서 작업 실패에 대한 이메일 또는 Pub/Sub 알림을 구성합니다.

  9. (선택사항) 고급 옵션 섹션에서 암호화 설정을 구성합니다. 고객 관리 암호화 키(CMEK)를 선택하면 키가 Knowledge Catalog 메타데이터 가져오기 작업을 시작하기 전에 스테이징된 모든 임시 데이터를 암호화합니다. 키는 대상 Knowledge Catalog 항목 그룹의 메타데이터를 암호화하지 않습니다.

  10. 저장을 클릭합니다.

REST

projects.locations.transferConfigs.create 메서드를 사용합니다. TransferConfig 리소스에서 다음 필드를 구성합니다.

  • dataSourceId 필드를 "snowflake_horizon"로 설정합니다.
  • metadataDestination 필드에서 dataplexConfiguration.entryGroup 필드에 대상 Knowledge Catalog 항목 그룹의 리소스 경로인 projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID를 입력합니다.
  • params 필드에서 다음 파라미터를 설정합니다.
    • connector.accountIdentifier (필수): .snowflakecomputing.com가 없는 Snowflake 계정 식별자(예: myorg-myaccount) 또는 계정 위치 지정자 (예: xy12345.us-east-2.aws)입니다.
    • connector.authentication.username (필수): Snowflake 사용자입니다.
    • connector.authentication.privateKey (필수): PKCS#8 PEM 형식의 사용자 비공개 키입니다.
    • connector.authentication.privateKeyPassphrase (선택사항): 키가 암호화된 경우 비공개 키의 암호입니다.
    • connector.warehouse (선택사항): 메타데이터 쿼리를 실행하는 웨어하우스입니다. 이 매개변수를 생략하면 커넥터가 사용자의 기본 웨어하우스를 사용합니다.
    • connector.role (선택사항): 커넥터가 사용하는 역할입니다. 이 매개변수를 생략하면 커넥터가 사용자의 기본 역할을 사용합니다.
    • connector.networkAttachment (선택사항): projects/PROJECT_ID/regions/REGION/networkAttachments/NETWORK_ATTACHMENT_ID 형식의 네트워크 연결입니다.
    • assets(필수): 가져올 Snowflake 객체 목록(TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]] 형식, 예: ["SCHEMA:myorg-myaccount/SALES/PUBLIC"])
  • 선택사항: 비공개 키를 전송 구성에서 제외하려면 Secret Manager에 저장합니다.
    1. connector.authentication.privateKey (및 connector.authentication.privateKeyPassphrase, 사용하는 경우)을 projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID 형식의 보안 비밀 버전 리소스 이름으로 설정하고 해당 매개변수 이름을 paramConfig.secretManagerManagedParams 필드에 추가합니다.
    2. 전송 구성(service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com)이 포함된 프로젝트의 BigQuery Data Transfer Service 서비스 에이전트에 각 보안 비밀에 대한 Secret Manager 보안 비밀 접근자(roles/secretmanager.secretAccessor) 역할을 부여합니다. 보안 비밀은 다른 프로젝트에 있을 수 있습니다. 서비스 에이전트가 보안 비밀을 읽을 수 없으면 실행이 시작되기 전에 Failed to retrieve secret ... Permission 'secretmanager.versions.access' denied와 같은 오류가 발생하여 실패합니다. BigQuery Data Transfer Service는 각 실행이 시작될 때 보안 비밀을 읽으므로 VERSION_ID를 latest로 설정하면 다음 실행부터 순환된 키가 사용됩니다.

다음 예시에서는 TransferConfig 요청 본문을 보여줍니다.

{
  "displayName": "snowflake-metadata-import",
  "dataSourceId": "snowflake_horizon",
  "schedule": "every 24 hours",
  "params": {
    "connector.accountIdentifier": "myorg-myaccount",
    "connector.authentication.username": "USERNAME",
    "connector.authentication.privateKey": "PRIVATE_KEY",
    "connector.warehouse": "WAREHOUSE_NAME",
    "connector.role": "DATAPLEX_CATALOG_READER",
    "assets": [
      "SCHEMA:myorg-myaccount/SALES/PUBLIC"
    ]
  },
  "metadataDestination": {
    "dataplexConfiguration": {
      "entryGroup": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID"
    }
  }
}

작업은 일정에 따라 자동으로 실행되거나 수동으로 트리거할 수 있습니다.

Snowflake Horizon 커넥터 작업 모니터링

Google Cloud 콘솔 또는 REST API를 사용하여 Snowflake Horizon 커넥터 작업을 모니터링합니다.

콘솔

  1. Google Cloud 콘솔의 커넥터 페이지에서 Snowflake Horizon 전송 작업의 표시 이름을 클릭합니다.
  2. 실행 기록 탭에서 세부정보 보기를 클릭하여 로그를 확인합니다.
  3. 생성된 항목을 보려면 세부정보 탭을 클릭한 후 메타데이터 대상 항목 그룹 링크를 클릭합니다.

REST

  • 전송 구성의 실행을 나열하고 상태를 보려면 projects.locations.transferConfigs.runs.list 메서드를 사용합니다.
  • 각 실행은 ID가 dts-run-RUN_ID인 메타데이터 가져오기 작업을 사용하여 수집된 메타데이터를 Knowledge Catalog로 가져옵니다. 생성된 항목 수와 같은 가져오기 결과를 보려면 다음 쿼리를 사용하여 Logging에서 작업 로그를 필터링합니다.

    logName="projects/PROJECT_ID/logs/dataplex.googleapis.com%2Fmetadata_job"
    AND resource.labels.metadata_job_id="dts-run-RUN_ID"
    
  • Logging을 사용하지 않고 가져오기 결과를 보려면 projects/PROJECT_ID/locations/LOCATION/metadataJobs/dts-run-RUN_ID에서 projects.locations.metadataJobs.get 메서드를 호출합니다. importResult 필드에는 생성, 업데이트, 변경되지 않음, 삭제된 항목 및 항목 링크 수가 표시됩니다.

Snowflake Horizon 메타데이터 검색 및 보기

  1. Google Cloud 콘솔에서 Knowledge Catalog 검색 페이지로 이동합니다.

    검색 페이지로 이동

  2. 필터 패널에서 프로젝트, 시스템, 유형 별칭 섹션을 사용하여 Snowflake Horizon 애셋을 필터링합니다. 모든 Snowflake Horizon 메타데이터를 필터링하려면 시스템 섹션에서 가져온 컨텍스트를 선택한 다음 관리형 커넥터 하위 섹션에서 Snowflake Horizon을 선택합니다.

  3. 검색창에 키워드 또는 자연어 검색어를 입력합니다. 예를 들어 키워드 검색을 통해 모든 Snowflake Horizon 애셋을 보려면 system=SNOWFLAKE를 입력합니다.

    리소스 검색에 대한 자세한 내용은 Knowledge Catalog에서 리소스 검색을 참조하세요. 검색창에서 사용할 수 있는 표현식에 대한 자세한 내용은 Knowledge Catalog 검색 문법을 참조하세요.

LookupContext API를 사용하여 특정 Snowflake Horizon 리소스의 LLM 컨텍스트를 검색할 수도 있습니다. 자세한 내용은 데이터 애셋의 컨텍스트 검색을 참조하세요.

다음 단계