Featurewerte exportieren

Exportieren Sie Featurewerte für alle Entitäten eines einzelnen Entitätstyps in eine BigQuery-Tabelle oder einen Cloud Storage-Bucket. Sie können einen Snapshot abrufen oder Featurewerte vollständig exportieren. Ein Snapshot gibt einen einzelnen Wert pro Feature zurück, während ein vollständiger Export mehrere Werte pro Feature zurückgeben kann. Sie können beim Exportieren von Featurewerten weder bestimmte Entitäts-IDs auswählen noch mehrere Entitätstypen einbeziehen.

Das Exportieren von Featurewerten ist für die Archivierung oder die Durchführung einer Ad-hoc-Analyse Ihrer Daten nützlich. Sie können beispielsweise regelmäßige Snapshots Ihres Feature Stores speichern, um den Status zu verschiedenen Zeitpunkten zu speichern. Wenn Sie Featurewerte zum Erstellen eines Trainings-Datasets abrufen möchten, verwenden Sie stattdessen die Batchbereitstellung.

Snapshot und vollständiger Export - Vergleich

Sowohl mit dem Snapshot als auch mit dem vollständigen Export können Sie Daten abfragen, indem Sie einen einzelnen Zeitstempel (entweder den Beginn oder das Ende) oder beide Zeitstempel angeben. Für Snapshots gibt der Vertex AI Feature Store (Legacy) den neuesten Featurewert innerhalb eines bestimmten Zeitraums zurück. In der Ausgabe ist der zugehörige Zeitstempel mit jedem Featurewert der Snapshot-Zeitstempel (nicht der Featurewert-Zeitstempel).

Bei vollständigen Exporten gibt der Vertex AI Feature Store (Legacy) alle Featurewerte innerhalb eines bestimmten Zeitraums zurück. In der Ausgabe ist der zugehörige Zeitstempel mit jedem Featurewert der Feature-Zeitstempel (der Zeitstempel, der angibt, wann der Featurewert aufgenommen wurde).

Die folgende Tabelle fasst zusammen, was Vertex AI Feature Store (Legacy) auf der Grundlage der von Ihnen gewählten Option und der von Ihnen angegebenen Zeitstempel zurückgibt.

Wahltaste Nur Beginn (einschließlich) Nur Ende (einschließlich) Beginn und Ende (einschließlich)
Snapshot Ab dem aktuellen Zeitpunkt (dem Zeitpunkt des Eingangs der Anfrage) wird der neueste Wert zurückgegeben, rückblickend bis zum Beginn.
Der Snapshot-Zeitstempel wird auf die aktuelle Zeit gesetzt.
Beginnend mit der Endzeit wird der letzte Wert zurückgegeben, wobei für jedes Feature bis zum allerersten Wert zurückgegangen wird.
Der Snapshot-Zeitstempel wird auf die angegebene Endzeit gesetzt.
Gibt den neuesten Wert innerhalb des angegebenen Zeitraums zurück.
Der Snapshot-Zeitstempel wird auf die angegebene Endzeit gesetzt.
Vollständiger Export Gibt alle Werte zur Startzeit und nach der Startzeit und bis zur aktuellen Zeit (zu dem Zeitpunkt des Sendens der Anfrage) zurück. Gibt alle Werte bis zur Endzeit zurück und reicht bis zum ersten Wert jedes Features zurück. Gibt alle Werte innerhalb des angegebenen Zeitraums zurück.

Nullwerte

Wenn bei Snapshots der neueste Featurewert für einen bestimmten Zeitstempel null ist, gibt der Vertex AI Feature Store (Legacy) den vorherigen Nicht-Null-Featurewert zurück. Wenn keine vorherigen Nicht-Null-Werte vorhanden sind, gibt Vertex AI Feature Store (Legacy) null zurück.

Wenn bei vollständigen Exporten ein Featurewert zu einem bestimmten Zeitstempel null ist, gibt Vertex AI Feature Store (Legacy) für diesen Zeitstempel null zurück.

Beispiele

Angenommen, Sie haben die folgenden Werte in einem Feature Store, in dem die Werte für Feature_A und Feature_B denselben Zeitstempel haben:

Entitäts-ID Zeitstempel des Featurewerts 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

Snapshot

Für Snapshots gibt der Vertex AI Feature Store (Legacy) die folgenden Werte basierend auf den angegebenen Zeitstempelwerten zurück:

  • Wenn nur die Startzeit auf T3 gesetzt ist, gibt der Snapshot die folgenden Werte zurück:
Entitäts-ID Snapshot-Zeitstempel Feature_A Feature_B
123 CURRENT_TIME A_T4 B_T5
  • Wenn nur die Endzeit auf T3 gesetzt ist, gibt der Snapshot die folgenden Werte zurück:
Entitäts-ID Snapshot-Zeitstempel Feature_A Feature_B
123 T3 A_T3 B_T1
  • Wenn die Startzeit und Endzeit auf T2 und T3 festgelegt sind, gibt der Snapshot die folgenden Werte zurück:
Entitäts-ID Snapshot-Zeitstempel Feature_A Feature_B
123 T3 A_T3 NULL

Vollständiger Export

Bei vollständigen Exporten gibt der Vertex AI Feature Store (Legacy) die folgenden Werte basierend auf den angegebenen Zeitstempelwerten zurück:

  • Wenn nur die Startzeit auf T3 gesetzt ist, gibt der vollständige Export die folgenden Werte zurück:
Entitäts-ID Zeitstempel des Featurewerts Feature_A Feature_B
123 T3 A_T3 NULL
123 T4 A_T4 B_T4
123 T5 NULL B_T5
  • Wenn nur die Endzeit auf T3 gesetzt ist, gibt der vollständige Export die folgenden Werte zurück:
Entitäts-ID Zeitstempel des Featurewerts Feature_A Feature_B
123 T1 A_T1 B_T1
123 T2 A_T2 NULL
123 T3 A_T3 NULL
  • Wenn die Start- und Endzeit auf T2 und T4 festgelegt sind, gibt der vollständige Export die folgenden Werte zurück:
Entitäts-ID Zeitstempel des Featurewerts Feature_A Feature_B
123 T2 A_T2 NULL
123 T3 A_T3 NULL
123 T4 A_T4 B_T4

Featurewerte exportieren

Wenn Sie Featurewerte exportieren, wählen Sie aus, welche Features abgefragt werden sollen und ob es sich um einen Snapshot oder einen vollständigen Export handelt. In den folgenden Abschnitten wird für jede Option ein Beispiel angegeben.

Bei beiden Optionen muss sich das Ausgabeziel in derselben Region wie der Quell-Feature Store befinden. Wenn sich Ihr Feature Store beispielsweise in us-central1 befindet, muss sich der Cloud Storage-Ziel-Bucket oder die BigQuery-Tabelle ebenfalls in us-central1 befinden.

Snapshot

Exportieren Sie die neuesten Featurewerte für einen bestimmten Zeitraum.

Web-UI

Verwenden Sie eine andere Methode. Sie können keine Featurewerte aus der Google Cloud Console exportieren.

REST

Senden Sie mit der Methode entityTypes.exportFeatureValues eine POST-Anfrage, um Featurewerte zu exportieren.

Im folgenden Beispiel wird eine BigQuery-Tabelle ausgegeben, aber Sie können auch in einen Cloud Storage-Bucket ausgeben. Für jedes Ausgabeziel gelten möglicherweise einige Voraussetzungen, bevor Sie eine Anfrage senden können. Wenn Sie beispielsweise einen Tabellennamen für das Feld bigqueryDestination angeben, benötigen Sie ein vorhandenes Dataset. Diese Anforderungen sind in der API-Referenz dokumentiert.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der sich der Feature Store befindet. Beispiel: us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.
  • START_TIME und END_TIME: (Optional) Wenn Sie nur die Startzeit angeben, wird der neueste Wert ab der aktuellen Zeit (wann die Anfrage gesendet wurde) zurückgegeben und bis zur Startzeit zurückgeblickt. Wenn Sie nur die Endzeit angeben, wird der neueste Wert zurückgegeben ab der Endzeit beginnend (einschließlich) und bis zum ersten Wert zurückgegangen. Wenn Sie eine Startzeit und ein Endzeit angeben, wird der neueste Wert innerhalb des angegebenen Zeitraums (einschließlich) zurückgegeben. Wenn Sie keines von beiden angeben, werden die neuesten Werte für jedes Feature ab der aktuellen Zeit zurückgegeben und bis zurück zum ersten Wert geschaut.
  • DATASET_NAME: Name des BigQuery-Ziel-Datasets.
  • TABLE_NAME: Name der BigQuery-Zieltabelle.
  • FEATURE_ID: ID eines oder mehrerer Features. Geben Sie ein einzelnes * (Sternchen) an, um alle Features auszuwählen.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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 "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * 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();

Weitere Sprachen

Informationen zum Installieren und Verwenden des Vertex AI SDK für Python finden Sie unter Vertex AI SDK für Python verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI SDK for Python API.

Vollständiger Export

Exportieren Sie alle Featurewerte innerhalb eines bestimmten Zeitraums.

Web-UI

Verwenden Sie eine andere Methode. Sie können keine Featurewerte aus der Google Cloud Console exportieren.

REST

Senden Sie mit der Methode entityTypes.exportFeatureValues eine POST-Anfrage, um Featurewerte zu exportieren.

Im folgenden Beispiel wird eine BigQuery-Tabelle ausgegeben, aber Sie können auch in einen Cloud Storage-Bucket ausgeben. Für jedes Ausgabeziel gelten möglicherweise einige Voraussetzungen, bevor Sie eine Anfrage senden können. Wenn Sie beispielsweise einen Tabellennamen für das Feld bigqueryDestination angeben, benötigen Sie ein vorhandenes Dataset. Diese Anforderungen sind in der API-Referenz dokumentiert.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION_ID: Region, in der sich der Feature Store befindet. Beispiel: us-central1.
  • PROJECT_ID: Ihre Projekt-ID.
  • FEATURESTORE_ID: ID des Featurestores.
  • ENTITY_TYPE_ID: ID des Entitätstyps.
  • START_TIME und END_TIME: (Optional) Wenn Sie nur den Beginn angeben, werden alle Werte zwischen der aktuellen Zeit (wenn die Anfrage gesendet wird) und dem Beginn (einschließlich) zurückgegeben. Wenn Sie nur das Ende angeben, werden alle Werte zwischen dem Ende (einschließlich) und dem Zeitstempel des ersten Werts (für jedes Feature) zurückgegeben. Wenn Sie einen Beginn und ein Ende angeben, werden alle Werte innerhalb des angegebenen Zeitraums (einschließlich) zurückgegeben. Wenn Sie keines von beidem angeben, werden alle Werte zwischen der aktuellen Zeit und dem Zeitstempel des ersten Werts (für jedes Feature) zurückgegeben.
  • DATASET_NAME: Name des BigQuery-Ziel-Datasets.
  • TABLE_NAME: Name der BigQuery-Zieltabelle.
  • FEATURE_ID: ID eines oder mehrerer Features. Geben Sie ein einzelnes * (Sternchen) an, um alle Features auszuwählen.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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 "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:exportFeatureValues" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * 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();

Weitere Sprachen

Informationen zum Installieren und Verwenden des Vertex AI SDK für Python finden Sie unter Vertex AI SDK für Python verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI SDK for Python API.

Nächste Schritte