메타데이터 내보내기

메타데이터 내보내기 작업을 실행하여 외부 시스템에서 사용할 수 있도록 Dataplex 범용 카탈로그에서 메타데이터를 내보낼 수 있습니다.

다음과 같은 경우 메타데이터를 내보내는 것이 좋습니다.

  • BigQuery 또는 기타 데이터 분석 도구를 사용하여 메타데이터 쿼리 및 분석
  • 나중에 Dataplex 범용 카탈로그로 다시 가져올 수 있는 대량의 메타데이터를 프로그래매틱 방식으로 처리
  • 맞춤 애플리케이션 또는 서드 파티 도구에 메타데이터 통합

메타데이터 내보내기 작업은 Dataplex 범용 카탈로그 메타데이터의 스냅샷을 내보냅니다. Dataplex 범용 카탈로그 메타데이터는 항목과 해당 항목의 관점으로 구성됩니다. 이 페이지의 단계에서는 사용자가 항목 그룹, 항목 유형, 관점 유형을 포함하여 Dataplex 범용 카탈로그 메타데이터 개념에 익숙하다고 가정합니다.

작업 범위

작업 범위는 내보낼 메타데이터를 정의합니다. 각 메타데이터 내보내기 작업에 다음 작업 범위 중 하나를 제공해야 합니다.

  • 조직: 조직에 속한 메타데이터를 내보냅니다.
  • 프로젝트: 지정된 프로젝트에 속하는 메타데이터를 내보냅니다.
  • 항목 그룹: 지정된 항목 그룹에 속하는 메타데이터를 내보냅니다.

작업에 포함할 항목 유형 또는 관점 유형을 지정하여 범위를 추가로 제한할 수 있습니다. 작업은 이러한 항목 유형 및 관점 유형에 속하는 항목과 관점만 내보냅니다.

VPC 서비스 제어

Dataplex 범용 카탈로그는 VPC 서비스 제어를 사용하여 메타데이터 내보내기 작업에 추가 보안을 제공합니다. 작업이 속한 프로젝트에 따라 다음과 같이 VPC 서비스 제어 경계가 결정됩니다.

  • 작업 범위를 조직 수준으로 설정하면 다음과 같은 결과가 발생합니다.
    • 내보내기 범위는 작업이 속한 조직입니다.
    • VPC 서비스 제어 경계 내에 있는 항목만 내보내집니다.
    • 작업의 조직 내에 있지만 VPC 서비스 제어 경계 외부에 있는 프로젝트는 제외됩니다.
  • 작업 범위를 프로젝트 또는 항목 그룹으로 설정하는 경우 프로젝트 또는 항목 그룹이 작업과 동일한 VPC 서비스 제어 경계에 있어야 합니다. 프로젝트 또는 항목 그룹이 VPC 서비스 제어 규칙을 위반하면 작업이 실패합니다.

시작하기 전에

메타데이터를 내보내기 전에 이 섹션의 작업을 완료합니다.

최종 사용자에게 필요한 역할

메타데이터 내보내기 작업을 관리하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 메타데이터 내보내기 작업을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

메타데이터 내보내기 작업을 관리하려면 다음 권한이 필요합니다.

  • 메타데이터 내보내기:
    • dataplex.metadataJobs.create
    • dataplex.entryGroups.export
    • dataplex.entryGroups.get
    • resourcemanager.projects.get
    • resourcemanager.projects.list
  • 내보낸 결과에 액세스합니다. storage.objects.get

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

Dataplex 범용 카탈로그 서비스 계정에 필요한 역할

Dataplex 범용 카탈로그 서비스 계정에 Cloud Storage 버킷 액세스에 필요한 권한이 포함되도록 하려면 관리자에게 Dataplex 범용 카탈로그 서비스 계정에 버킷에 대한 storage.buckets.get, storage.objects.get, storage.objects.create 권한을 부여해 달라고 요청하세요.

Google Cloud 리소스 구성

  1. After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  2. 내보낸 결과를 저장할 Cloud Storage 버킷을 만듭니다.

    버킷은 메타데이터 작업과 동일한 위치 및 동일한 VPC 서비스 제어 경계에 있어야 합니다.

메타데이터 내보내기 작업 실행

다음 섹션에서는 다양한 작업 범위로 메타데이터를 내보내는 방법을 보여줍니다.

조직의 메타데이터 내보내기

조직의 메타데이터를 내보내려면 metadataJobs.create 메서드를 사용하고 organizationLevel 불리언을 true로 설정합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • JOB_PROJECT: 메타데이터 작업을 실행하는 Google Cloud프로젝트입니다. 프로젝트 번호 또는 프로젝트 ID를 입력합니다.
  • LOCATION_ID: Google Cloud 위치입니다(예: us-central1).
  • METADATA_JOB_ID: 선택사항입니다. 메타데이터 작업 ID입니다.
  • BUCKET: 메타데이터를 내보낼 Cloud Storage 버킷입니다.

    원하는 경우 버킷 이름 뒤에 gs://BUCKET/PREFIX/ 형식으로 맞춤 접두사를 포함할 수 있습니다. 맞춤 접두사의 최대 길이는 128자입니다.

HTTP 메서드 및 URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

JSON 요청 본문:

{
  "type": EXPORT,
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "organizationLevel": true,
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답은 장기 실행 작업을 식별합니다. 내보낸 메타데이터는 Cloud Storage 버킷에 저장됩니다.

특정 프로젝트에서 메타데이터 내보내기

하나 이상의 프로젝트에서 메타데이터를 내보내려면 metadataJobs.create 메서드를 사용하고 프로젝트 목록을 제공합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • JOB_PROJECT: 메타데이터 작업을 실행하는 Google Cloud프로젝트입니다. 프로젝트 번호 또는 프로젝트 ID를 입력합니다.
  • LOCATION_ID: Google Cloud 위치입니다(예: us-central1).
  • METADATA_JOB_ID: 선택사항입니다. 메타데이터 작업 ID입니다.
  • BUCKET: 메타데이터를 내보낼 Cloud Storage 버킷입니다.

    원하는 경우 버킷 이름 뒤에 gs://BUCKET/PREFIX/ 형식으로 맞춤 접두사를 포함할 수 있습니다. 맞춤 접두사의 최대 길이는 128자입니다.

  • METADATA_SOURCE_PROJECT: 메타데이터를 내보내려는 프로젝트입니다. 프로젝트 번호 또는 프로젝트 ID를 입력합니다. 프로젝트는 메타데이터 작업과 동일한 조직 및 VPC 서비스 제어 경계에 있어야 합니다.

HTTP 메서드 및 URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

JSON 요청 본문:

{
  "type": EXPORT,
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "projects": [
        "projects/METADATA_SOURCE_PROJECT",
        # Additional projects
      ],
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답은 장기 실행 작업을 식별합니다. 내보낸 메타데이터는 Cloud Storage 버킷에 저장됩니다.

특정 항목 그룹에서 메타데이터 내보내기

특정 항목 그룹에서 메타데이터를 내보내려면 metadataJobs.create 메서드를 사용하고 항목 그룹 목록을 제공합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • JOB_PROJECT: 메타데이터 작업을 실행하는 Google Cloud프로젝트입니다. 프로젝트 번호 또는 프로젝트 ID를 입력합니다.
  • LOCATION_ID: Google Cloud 위치입니다(예: us-central1).
  • METADATA_JOB_ID: 선택사항입니다. 메타데이터 작업 ID입니다.
  • BUCKET: 메타데이터를 내보낼 Cloud Storage 버킷입니다.

    원하는 경우 버킷 이름 뒤에 gs://BUCKET/PREFIX/ 형식으로 맞춤 접두사를 포함할 수 있습니다. 맞춤 접두사의 최대 길이는 128자입니다.

  • ENTRY_GROUP: 작업 범위 내에 있는 항목 그룹의 상대적 리소스 이름입니다. projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID 형식입니다. 항목 그룹은 메타데이터 작업과 동일한 프로젝트에 있어야 합니다.

HTTP 메서드 및 URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

JSON 요청 본문:

{
  "type": EXPORT,
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "entryGroups": [
        "ENTRY_GROUP",
        # Additional entry groups
      ],
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답은 장기 실행 작업을 식별합니다. 내보낸 메타데이터는 Cloud Storage 버킷에 저장됩니다.

특정 항목 유형 또는 관점 유형에서 메타데이터 내보내기

특정 항목 유형 또는 측면 유형에서 메타데이터를 내보내려면 다음 예와 같이 조직 수준에서 기본 작업 범위를 설정합니다. 그런 다음 항목 유형, 관점 유형 또는 둘 다의 목록을 제공합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • ENTRY_TYPE: 선택사항입니다. 작업 범위 내에 있는 항목 유형의 상대적 리소스 이름입니다. projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID 형식입니다.

  • ASPECT_TYPE: 선택사항입니다. 작업 범위 내에 있는 관점 유형의 상대적 리소스 이름입니다. projects/PROJECT_ID_OR_NUMBER/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID 형식입니다.

HTTP 메서드 및 URL:

POST https://dataplex.googleapis.com/v1/projects/JOB_PROJECT/locations/LOCATION_ID/metadataJobs?metadataJobId=METADATA_JOB_ID

JSON 요청 본문:

{
  "type": EXPORT,
  "export_spec": {
    "output_path": "gs://BUCKET/",
    "scope": {
      "organizationLevel": true,
      "entry_types": [
        "ENTRY_TYPE",
        # Additional entry types
      ],
      "aspect_types": [
        "ASPECT_TYPE",
        # Additional aspect types
      ]
    },
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

응답은 장기 실행 작업을 식별합니다. 내보낸 메타데이터는 Cloud Storage 버킷에 저장됩니다.

메타데이터 작업의 세부정보 확인

작업 상태 및 내보낸 항목 수와 같은 메타데이터 작업의 정보를 확인하려면 metadataJobs.get 메서드를 사용합니다.

메타데이터 내보내기 결과

메타데이터 내보내기 작업은 메타데이터 작업이 생성된 시점의 Dataplex 범용 카탈로그 메타데이터 스냅샷을 내보냅니다.

파일 콘텐츠 내보내기

출력 파일의 콘텐츠는 메타데이터 가져오기 작업에 사용되는 메타데이터 가져오기 파일과 동일한 형식을 따릅니다. 출력 파일을 메타데이터 가져오기 작업의 입력으로 직접 사용할 수 있습니다.

파일 내보내기 위치

Dataplex 범용 카탈로그는 내보내기 결과 파일을 Cloud Storage 버킷에 객체로 저장합니다.

각 출력 파일의 객체 경로는 내보내기 작업에 지정한 버킷 이름과 맞춤 접두사를 사용한 후 시스템 생성 경로를 추가하여 구성됩니다. 시스템 생성 경로는 BigQuery와의 통합을 위해 설계되었습니다. 객체 경로는 다음 형식을 사용합니다.

gs://BUCKET/PREFIX/year=YYYY/month=MM/day=DD/consumer_project=JOB_PROJECT/job=METADATA_JOB_ID/project=METADATA_SOURCE_PROJECT/entry_group=ENTRY_GROUP/FILE_NUMBER.jsonl

다음에 유의하세요.

  • 시스템에서 생성된 경로는 내보내기 작업 생성 날짜의 표준 Hive 파티션 형식으로 시작됩니다. 이 형식은 BigQuery에서 지원됩니다. 자세한 내용은 외부에서 파티션을 나눈 데이터 로드를 참조하세요.
  • consumer_project 매개변수는 메타데이터 내보내기 작업을 실행하는 프로젝트입니다. project 매개변수는 내보내는 메타데이터가 포함된 프로젝트입니다.
  • 이전 작업이 삭제된 경우 메타데이터 작업 ID를 재사용할 수 있습니다. 하지만 작업을 삭제해도 해당 작업에서 내보낸 파일은 삭제되지 않습니다. 즉, 삭제된 작업 ID를 재사용하면 출력 파일 경로에 중복된 작업 ID가 표시될 수 있습니다.
  • 각 출력 파일의 이름은 파일 번호로 지정되며, 파일 번호는 1부터 시작하는 정수입니다.

    메타데이터 내보내기 작업에 항목이 많이 포함된 경우 각 출력 파일의 크기를 제한하기 위해 작업에서 결과를 여러 파일로 분할합니다. 각 출력 파일의 최대 항목 수는 1,000,000개입니다.

출력 파일 예시

다음은 여러 프로젝트가 포함된 메타데이터 내보내기 작업의 출력 파일 예시입니다.

gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=example-job/project=metadata-project-1/entrygroup=entry-group-1/1.jsonl
gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=example-job/project=metadata-project-2/entrygroup=entry-group-1/1.jsonl
gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=example-job/project=metadata-project-3/entrygroup=entry-group-2/1.jsonl

다음은 항목 그룹이 큰 메타데이터 내보내기 작업의 출력 파일의 예입니다. 항목 그룹의 결과가 여러 파일로 분할되었습니다.

gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=another-example-job/project=example-metadata-project/entrygroup=big-entry-group/1.jsonl
gs://export-bucket/example-folder/year=2025/month=04/day=13/consumer_project=admin-project/job=another-example-job/project=example-metadata-project/entrygroup=big-entry-group/2.jsonl

BigQuery에서 내보낸 메타데이터 분석

내보낸 메타데이터를 BigQuery에서 분석하려면 내보낸 메타데이터의 외부 테이블을 만들면 됩니다. 외부 테이블을 만들면 추가 데이터 로드나 변환 없이 내보낸 데이터를 쿼리할 수 있습니다. 예를 들어 항목 그룹별로 항목 수를 세거나, 특정 측면이 있는 항목을 찾거나, BigQuery에서 추가 분석을 실행할 수 있습니다.

다음 단계를 따르세요.

  • 파티션을 나눈 Hive 데이터용 외부 테이블을 만듭니다. 다음 정보를 제공합니다.

    • Cloud Storage 버킷에서 파일 선택: 내보낸 메타데이터 파일이 포함된 Cloud Storage 폴더의 경로를 제공합니다. 버킷의 모든 파일을 포함하려면 별표 (*) 와일드 카드를 사용합니다. 예를 들면 gs://export-bucket/example-folder/*입니다.
    • 파일 형식: JSONL (줄바꿈으로 구분된 JSON)을 선택합니다.
    • 소스 데이터 파티션 나누기 체크박스를 선택한 후 소스 URI 프리픽스 선택에 대해 BigQuery 테이블의 Cloud Storage URI 프리픽스를 입력하여 파티션을 정의합니다. 예를 들면 gs://export-bucket/example-folder/입니다.
    • 파티션 추론 모드: 유형을 자동으로 추론 옵션을 선택합니다.
    • 테이블 유형: 외부 테이블 옵션을 선택합니다.
    • 스키마: 텍스트로 수정 전환 버튼을 클릭한 후 내보내기 파일의 다음 스키마 정의를 입력합니다.

      [
        {
          "name": "entry",
          "type": "RECORD",
          "mode": "NULLABLE",
          "fields": [
            {
              "mode": "NULLABLE",
              "name": "name",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "entryType",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "createTime",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "updateTime",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "aspects",
              "type": "JSON"
            },
            {
              "mode": "NULLABLE",
              "name": "parentEntry",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "fullyQualifiedName",
              "type": "STRING"
            },
            {
              "mode": "NULLABLE",
              "name": "entrySource",
              "type": "RECORD",
              "fields": [
                {
                  "mode": "NULLABLE",
                  "name": "resource",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "system",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "platform",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "displayName",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "description",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "labels",
                  "type": "JSON"
                },
                {
                  "mode": "REPEATED",
                  "name": "ancestors",
                  "type": "RECORD",
                  "fields": [
                    {
                      "mode": "NULLABLE",
                      "name": "name",
                      "type": "STRING"
                    },
                    {
                      "mode": "NULLABLE",
                      "name": "type",
                      "type": "STRING"
                    }
                  ]
                },
                {
                  "mode": "NULLABLE",
                  "name": "createTime",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "updateTime",
                  "type": "STRING"
                },
                {
                  "mode": "NULLABLE",
                  "name": "location",
                  "type": "STRING"
                }
              ]
            }
          ]
        }
      ]
      

BigQuery는 내보낸 메타데이터가 포함된 외부 테이블을 만듭니다. 표의 스키마에는 각 행이 하나의 항목을 나타내는 entry 스키마 열이 포함됩니다. 항목의 필드에 대한 자세한 내용은 ImportItem을 참고하세요. 표의 스키마에는 이 문서의 내보내기 파일 위치 섹션에 설명된 대로 내보내기 파일 파티션도 포함됩니다.

외부 테이블을 만든 후 GoogleSQL 구문을 사용하여 테이블을 쿼리할 수 있습니다. 예를 들어 내보낸 항목 유형을 쿼리하려면 다음 문을 사용합니다.

SELECT entry.entryType FROM `example-project.example-dataset.example-table` LIMIT 1000

다음 단계