특성 값 내보내기

단일 항목 유형의 모든 항목에 대한 특성 값을 BigQuery 테이블이나 Cloud Storage 버킷으로 내보냅니다. 스냅샷을 가져오거나 전체 특성 값을 내보낼 수 있습니다. 스냅샷은 특성당 여러 값을 반환할 수 있는 전체 내보내기와 달리 특성당 단일 값을 반환합니다. 특성 값을 내보낼 때는 특정 항목 ID를 선택하거나 여러 항목 유형을 포함할 수 없습니다.

특성 값을 내보내면 데이터를 보관처리하거나 임시 분석을 수행하는 데 유용합니다. 예를 들어 피처스토어의 일반 스냅샷을 저장하여 여러 시점의 상태를 저장할 수 있습니다. 학습 데이터 세트를 만들기 위한 특성 값을 가져와야 하는 경우에는 대신 일괄 제공을 사용합니다.

스냅샷 및 전체 내보내기 비교

스냅샷과 전체 내보내기 옵션을 모두 사용하면 단일 타임스탬프(시작 시간 또는 종료 시간) 또는 타임스탬프 둘 다 지정하여 데이터를 쿼리할 수 있습니다. 스냅샷의 경우 Vertex AI Feature Store(기존)는 지정된 기간 내 최신 특성 값을 반환합니다. 출력에서 각 특성 값이 연결된 타임스탬프는 특성 값 타임스탬프가 아닌 스냅샷 타임스탬프입니다.

전체 내보내기의 경우 Vertex AI Feature Store(기존)는 지정된 기간 내 모든 특성 값을 반환합니다. 출력에서 각 특성 값이 연결된 타임스탬프는 특성 타임스탬프(특성 값이 수집될 때 지정된 타임스탬프)입니다.

다음 표에는 선택한 옵션과 제공된 타임스탬프를 기준으로 Vertex AI Feature Store(기존)에서 반환하는 항목이 요약되어 있습니다.

옵션 시작 시간만(포함) 종료 시간만(포함) 시작 및 종료 시간(포함)
스냅샷 현재 시간(요청이 수신된 시간)부터 시작하여 최신 값을 반환하고 시작 시간까지 다시 확인할 수 있습니다.
스냅샷 타임스탬프는 현재 시간으로 설정됩니다.
종료 시간부터 최신 값을 반환하며 각 특성의 첫 번째 값을 다시 확인할 수 있습니다.
스냅샷 타임스탬프는 지정된 종료 시간으로 설정됩니다.
지정된 기간 내 최신 값을 반환합니다.
스냅샷 타임스탬프는 지정된 종료 시간으로 설정됩니다.
전체 내보내기 시작 시간부터 현재 시간까지(요청이 전송된 시간)의 모든 값을 반환합니다. 종료 시간까지의 모든 값을 반환하여 각 특성의 첫 번째 값으로 돌아갑니다. 지정된 기간 내 모든 값을 반환합니다.

Null 값

스냅샷의 경우 최신 특성 값이 지정된 타임스탬프에서 null이면 Vertex AI Feature Store(기존)는 null이 아닌 이전 특성 값을 반환합니다. null이 아닌 이전 값이 없으면 Vertex AI Feature Store(기존)는 null을 반환합니다.

전체 내보내기의 경우 특성 값이 지정된 타임스탬프에서 null이면 Vertex AI Feature Store(기존)는 해당 타임스탬프의 null을 반환합니다.

예시

예를 들어 피처스토어에 다음 값이 있다고 가정해 보겠습니다. 여기서 Feature_AFeature_B의 값은 동일한 타임스탬프를 공유합니다.

엔티티 ID 특성 값 타임스탬프 Feature_A Feature_B
123 T1 A_T1 B_T1
123 T2 A_T2 NULL
123 T3 A_T3 NULL
123 T4 A_T4 B_T4
123 T5 NULL B_T5

스냅샷

스냅샷의 경우 Vertex AI Feature Store(기존)는 지정된 타임스탬프 값을 기준으로 다음 값을 반환합니다.

  • 시작 시간만 T3으로 설정되면 스냅샷은 다음 값을 반환합니다.
엔티티 ID 스냅샷 타임스탬프 Feature_A Feature_B
123 CURRENT_TIME A_T4 B_T5
  • 종료 시간만 T3으로 설정되면 스냅샷에서 다음 값을 반환합니다.
엔티티 ID 스냅샷 타임스탬프 Feature_A Feature_B
123 T3 A_T3 B_T1
  • 시작종료 시간이 T2T3으로 설정되면 스냅샷은 다음 값을 반환합니다.
엔티티 ID 스냅샷 타임스탬프 Feature_A Feature_B
123 T3 A_T3 NULL

전체 내보내기

전체 내보내기의 경우 Vertex AI Feature Store(기존)는 지정된 타임스탬프 값을 기준으로 다음 값을 반환합니다.

  • 시작 시간만 T3으로 설정되면 전체 내보내기는 다음 값을 반환합니다.
엔티티 ID 특성 값 타임스탬프 Feature_A Feature_B
123 T3 A_T3 NULL
123 T4 A_T4 B_T4
123 T5 NULL B_T5
  • 종료 시간만 T3으로 설정되면 전체 내보내기는 다음 값을 반환합니다.
엔티티 ID 특성 값 타임스탬프 Feature_A Feature_B
123 T1 A_T1 B_T1
123 T2 A_T2 NULL
123 T3 A_T3 NULL
  • 시작종료 시간이 T2T4로 설정되면 전체 내보내기는 다음 값을 반환합니다.
엔티티 ID 특성 값 타임스탬프 Feature_A Feature_B
123 T2 A_T2 NULL
123 T3 A_T3 NULL
123 T4 A_T4 B_T4

특성 값 내보내기

특성 값을 내보낼 때 쿼리할 특성과 스냅샷 또는 전체 내보내기를 선택합니다. 다음 섹션에서는 각 옵션의 샘플을 보여줍니다.

두 옵션 모두 출력 대상은 소스 피처스토어와 동일한 리전에 있어야 합니다. 예를 들어 피처스토어가 us-central1에 있으면 대상 Cloud Storage 버킷이나 BigQuery 테이블도 us-central1에 있어야 합니다.

스냅샷

지정된 기간의 최신 특성 값을 내보냅니다.

웹 UI

다른 메서드를 사용합니다. Google Cloud 콘솔에서 특성 값을 내보낼 수 없습니다.

REST

특성 값을 내보내려면 entityTypes.exportFeatureValues 메서드를 사용하여 POST 요청을 전송합니다.

다음 샘플은 BigQuery 테이블을 출력하지만 Cloud Storage 버킷에 출력할 수도 있습니다. 각 출력 대상에는 요청을 제출하기 전에 몇 가지 기본 요건이 있을 수 있습니다. 예를 들어 bigqueryDestination 필드에 테이블 이름을 지정하려면 기존 데이터 세트가 있어야 합니다. 이러한 요구사항은 API 참조에 설명되어 있습니다.

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

  • LOCATION_ID: 피처스토어가 있는 리전입니다. 예를 들면 us-central1입니다.
  • PROJECT_ID: 프로젝트 ID
  • FEATURESTORE_ID: 피처스토어의 ID
  • ENTITY_TYPE_ID: 항목 유형의 ID입니다.
  • START_TIMEEND_TIME: (선택사항) 시작 시간만 지정하면 현재 시간(요청이 전송된 시간)부터 시작하고 시작 시간 전까지 다시 확인하는 최신 값을 반환합니다. 종료 시간만 지정하면 종료 시간(포함)부터 시작하고 첫 번째 값까지 다시 확인하는 최신 값을 반환합니다. 시작 시간과 종료 시간을 지정하면 지정된 시간 범위(포함) 내 최신 값을 반환합니다. 둘 다 지정하지 않으면 현재 시간부터 시작하고 첫 번째 값을 다시 확인하는 각 특성의 최신 값을 반환합니다.
  • DATASET_NAME: 대상 BigQuery 데이터 세트의 이름입니다.
  • TABLE_NAME: 대상 BigQuery 테이블의 이름입니다.
  • FEATURE_ID: 특성 하나 이상의 ID입니다. 단일 *(별표)를 지정하여 모든 특성을 선택합니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues

JSON 요청 본문:

{
  "snapshotExport": {
    "start_time": "START_TIME",
    "snapshot_time": "END_TIME"
  },
  "destination" : {
    "bigqueryDestination": {
      "outputUri": "bq://PROJECT_ID.DATASET_NAME.TABLE_NAME"
    }
  },
  "featureSelector": {
    "idMatcher": {
      "ids": ["FEATURE_ID", ...]
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportFeatureValuesOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-12-03T22:55:25.974976Z",
      "updateTime": "2021-12-03T22:55:25.974976Z"
    }
  }
}

Java

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.BigQueryDestination;
import com.google.cloud.aiplatform.v1.EntityTypeName;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesOperationMetadata;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesRequest;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesRequest.SnapshotExport;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesResponse;
import com.google.cloud.aiplatform.v1.FeatureSelector;
import com.google.cloud.aiplatform.v1.FeatureValueDestination;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.IdMatcher;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class ExportFeatureValuesSnapshotSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    String entityTypeId = "YOUR_ENTITY_TYPE_ID";
    String destinationTableUri = "YOUR_DESTINATION_TABLE_URI";
    List<String> featureSelectorIds = Arrays.asList("title", "genres", "average_rating");
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 300;
    exportFeatureValuesSnapshotSample(
        project,
        featurestoreId,
        entityTypeId,
        destinationTableUri,
        featureSelectorIds,
        location,
        endpoint,
        timeout);
  }

  static void exportFeatureValuesSnapshotSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      String destinationTableUri,
      List<String> featureSelectorIds,
      String location,
      String endpoint,
      int timeout)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      FeatureSelector featureSelector =
          FeatureSelector.newBuilder()
              .setIdMatcher(IdMatcher.newBuilder().addAllIds(featureSelectorIds).build())
              .build();

      ExportFeatureValuesRequest exportFeatureValuesRequest =
          ExportFeatureValuesRequest.newBuilder()
              .setEntityType(
                  EntityTypeName.of(project, location, featurestoreId, entityTypeId).toString())
              .setDestination(
                  FeatureValueDestination.newBuilder()
                      .setBigqueryDestination(
                          BigQueryDestination.newBuilder().setOutputUri(destinationTableUri)))
              .setFeatureSelector(featureSelector)
              .setSnapshotExport(SnapshotExport.newBuilder())
              .build();

      OperationFuture<ExportFeatureValuesResponse, ExportFeatureValuesOperationMetadata>
          exportFeatureValuesFuture =
              featurestoreServiceClient.exportFeatureValuesAsync(exportFeatureValuesRequest);
      System.out.format(
          "Operation name: %s%n", exportFeatureValuesFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      ExportFeatureValuesResponse exportFeatureValuesResponse =
          exportFeatureValuesFuture.get(timeout, TimeUnit.SECONDS);
      System.out.println("Snapshot Export Feature Values Response");
      System.out.println(exportFeatureValuesResponse);
      featurestoreServiceClient.close();
    }
  }
}

Node.js

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용Node.js 설정 안내를 따르세요. 자세한 내용은 Vertex AI Node.js API 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const destinationTableUri = 'YOUR_BQ_DESTINATION_TABLE_URI';
// const timestamp = <STARTING_TIMESTAMP_OF_SNAPSHOT_IN_SECONDS>;
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} = require('@google-cloud/aiplatform').v1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function exportFeatureValuesSnapshot() {
  // Configure the entityType resource
  const entityType = `projects/${project}/locations/${location}/featurestores/${featurestoreId}/entityTypes/${entityTypeId}`;

  const destination = {
    bigqueryDestination: {
      // # Output to BigQuery table created earlier
      outputUri: destinationTableUri,
    },
  };

  const featureSelector = {
    idMatcher: {
      ids: ['age', 'gender', 'liked_genres'],
    },
  };

  const snapshotExport = {
    startTime: {
      seconds: Number(timestamp),
    },
  };

  const request = {
    entityType: entityType,
    destination: destination,
    featureSelector: featureSelector,
    snapshotExport: snapshotExport,
  };

  // Export Feature Values Request
  const [operation] = await featurestoreServiceClient.exportFeatureValues(
    request,
    {timeout: Number(timeout)}
  );
  const [response] = await operation.promise();

  console.log('Export feature values snapshot response');
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
exportFeatureValuesSnapshot();

추가 언어

Vertex AI SDK for Python을 설치하고 사용하는 방법은 Vertex AI SDK for Python 사용을 참조하세요. 자세한 내용은 Python용 Vertex AI SDK API 참고 문서를 확인하세요.

전체 내보내기

지정된 기간 내 모든 특성 값을 내보냅니다.

웹 UI

다른 메서드를 사용합니다. Google Cloud 콘솔에서 특성 값을 내보낼 수 없습니다.

REST

특성 값을 내보내려면 entityTypes.exportFeatureValues 메서드를 사용하여 POST 요청을 전송합니다.

다음 샘플은 BigQuery 테이블을 출력하지만 Cloud Storage 버킷에 출력할 수도 있습니다. 각 출력 대상에는 요청을 제출하기 전에 몇 가지 기본 요건이 있을 수 있습니다. 예를 들어 bigqueryDestination 필드에 테이블 이름을 지정하려면 기존 데이터 세트가 있어야 합니다. 이러한 요구사항은 API 참조에 설명되어 있습니다.

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

  • LOCATION_ID: 피처스토어가 있는 리전입니다. 예를 들면 us-central1입니다.
  • PROJECT_ID: 프로젝트 ID
  • FEATURESTORE_ID: 피처스토어의 ID
  • ENTITY_TYPE_ID: 항목 유형의 ID입니다.
  • START_TIMEEND_TIME: (선택사항) 시작 시간만 지정하면 현재 시간(요청이 전송된 시간)과 시작 시간(포함) 사이의 모든 값을 반환합니다. 종료 시간만 지정하면 종료 시간(포함)과 각 특성의 첫 번째 값 타임스탬프 사이의 모든 값을 반환합니다. 시작 시간과 종료 시간을 지정하면 지정된 시간 범위(포함) 내 모든 값을 반환합니다. 둘 다 지정하지 않으면 현재 시간과 각 특성의 첫 번째 값 타임스탬프 사이의 모든 값을 반환합니다.
  • DATASET_NAME: 대상 BigQuery 데이터 세트의 이름입니다.
  • TABLE_NAME: 대상 BigQuery 테이블의 이름입니다.
  • FEATURE_ID: 특성 하나 이상의 ID입니다. 단일 *(별표)를 지정하여 모든 특성을 선택합니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues

JSON 요청 본문:

{
  "fullExport": {
    "start_time": "START_TIME",
    "end_time": "END_TIME"
  },
  "destination" : {
    "bigqueryDestination": {
      "outputUri": "bq://PROJECT.DATASET_NAME.TABLE_NAME"
    }
  },
  "featureSelector": {
    "idMatcher": {
      "ids": ["FEATURE_ID", ...]
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportFeatureValuesOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-12-03T22:55:25.974976Z",
      "updateTime": "2021-12-03T22:55:25.974976Z"
    }
  }
}

Java

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.BigQueryDestination;
import com.google.cloud.aiplatform.v1.EntityTypeName;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesOperationMetadata;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesRequest;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesRequest.FullExport;
import com.google.cloud.aiplatform.v1.ExportFeatureValuesResponse;
import com.google.cloud.aiplatform.v1.FeatureSelector;
import com.google.cloud.aiplatform.v1.FeatureValueDestination;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient;
import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings;
import com.google.cloud.aiplatform.v1.IdMatcher;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class ExportFeatureValuesSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String featurestoreId = "YOUR_FEATURESTORE_ID";
    String entityTypeId = "YOUR_ENTITY_TYPE_ID";
    String destinationTableUri = "YOUR_DESTINATION_TABLE_URI";
    List<String> featureSelectorIds = Arrays.asList("title", "genres", "average_rating");
    String location = "us-central1";
    String endpoint = "us-central1-aiplatform.googleapis.com:443";
    int timeout = 300;
    exportFeatureValuesSample(
        project,
        featurestoreId,
        entityTypeId,
        destinationTableUri,
        featureSelectorIds,
        location,
        endpoint,
        timeout);
  }

  static void exportFeatureValuesSample(
      String project,
      String featurestoreId,
      String entityTypeId,
      String destinationTableUri,
      List<String> featureSelectorIds,
      String location,
      String endpoint,
      int timeout)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    FeaturestoreServiceSettings featurestoreServiceSettings =
        FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (FeaturestoreServiceClient featurestoreServiceClient =
        FeaturestoreServiceClient.create(featurestoreServiceSettings)) {

      FeatureSelector featureSelector =
          FeatureSelector.newBuilder()
              .setIdMatcher(IdMatcher.newBuilder().addAllIds(featureSelectorIds).build())
              .build();

      ExportFeatureValuesRequest exportFeatureValuesRequest =
          ExportFeatureValuesRequest.newBuilder()
              .setEntityType(
                  EntityTypeName.of(project, location, featurestoreId, entityTypeId).toString())
              .setDestination(
                  FeatureValueDestination.newBuilder()
                      .setBigqueryDestination(
                          BigQueryDestination.newBuilder().setOutputUri(destinationTableUri)))
              .setFeatureSelector(featureSelector)
              .setFullExport(FullExport.newBuilder())
              .build();

      OperationFuture<ExportFeatureValuesResponse, ExportFeatureValuesOperationMetadata>
          exportFeatureValuesFuture =
              featurestoreServiceClient.exportFeatureValuesAsync(exportFeatureValuesRequest);
      System.out.format(
          "Operation name: %s%n", exportFeatureValuesFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      ExportFeatureValuesResponse exportFeatureValuesResponse =
          exportFeatureValuesFuture.get(timeout, TimeUnit.SECONDS);
      System.out.println("Export Feature Values Response");
      System.out.println(exportFeatureValuesResponse);
      featurestoreServiceClient.close();
    }
  }
}

Node.js

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용Node.js 설정 안내를 따르세요. 자세한 내용은 Vertex AI Node.js API 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const project = 'YOUR_PROJECT_ID';
// const featurestoreId = 'YOUR_FEATURESTORE_ID';
// const entityTypeId = 'YOUR_ENTITY_TYPE_ID';
// const destinationTableUri = 'YOUR_BQ_DESTINATION_TABLE_URI';
// const location = 'YOUR_PROJECT_LOCATION';
// const apiEndpoint = 'YOUR_API_ENDPOINT';
// const timeout = <TIMEOUT_IN_MILLI_SECONDS>;

// Imports the Google Cloud Featurestore Service Client library
const {FeaturestoreServiceClient} = require('@google-cloud/aiplatform').v1;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: apiEndpoint,
};

// Instantiates a client
const featurestoreServiceClient = new FeaturestoreServiceClient(
  clientOptions
);

async function exportFeatureValues() {
  // Configure the entityType resource
  const entityType = `projects/${project}/locations/${location}/featurestores/${featurestoreId}/entityTypes/${entityTypeId}`;

  const destination = {
    bigqueryDestination: {
      // # Output to BigQuery table created earlier
      outputUri: destinationTableUri,
    },
  };

  const featureSelector = {
    idMatcher: {
      ids: ['age', 'gender', 'liked_genres'],
    },
  };

  const request = {
    entityType: entityType,
    destination: destination,
    featureSelector: featureSelector,
    fullExport: {},
  };

  // Export Feature Values Request
  const [operation] = await featurestoreServiceClient.exportFeatureValues(
    request,
    {timeout: Number(timeout)}
  );
  const [response] = await operation.promise();

  console.log('Export feature values response');
  console.log('Raw response:');
  console.log(JSON.stringify(response, null, 2));
}
exportFeatureValues();

추가 언어

Vertex AI SDK for Python을 설치하고 사용하는 방법은 Vertex AI SDK for Python 사용을 참조하세요. 자세한 내용은 Python용 Vertex AI SDK API 참고 문서를 확인하세요.

다음 단계