Exporter les valeurs des caractéristiques

Vous pouvez exporter les valeurs des caractéristiques pour toutes les entités d'un même type vers une table BigQuery ou un bucket Cloud Storage. Vous pouvez choisir d'obtenir un instantané ou d'exporter la totalité des valeurs des caractéristiques. Un instantané renvoie une seule valeur par caractéristique, à la différence d'une exportation complète qui peut renvoyer plusieurs valeurs par caractéristique. Vous ne pouvez pas sélectionner des ID d'entité spécifiques ou inclure plusieurs types d'entités lors de l'exportation des valeurs de caractéristiques.

L'exportation des valeurs de caractéristiques est utile pour l'archivage ou l'analyse ad hoc de vos données. Par exemple, vous pouvez stocker des instantanés réguliers de votre magasin de caractéristiques pour enregistrer son état à différents moments. Si vous devez obtenir des valeurs de caractéristiques pour créer un ensemble de données d'entraînement, utilisez plutôt la récupération de lots.

Comparaison des instantanés et des exportations complètes

Les options d'instantané et d'exportation complète vous permettent toutes deux d'interroger les données en spécifiant un seul horodatage (heure de début ou heure de fin) ou les deux. Pour les instantanés, Vertex AI Feature Store (ancien) renvoie la dernière valeur des caractéristiques dans la période donnée. Dans le résultat, l'horodatage associé à chaque valeur de caractéristique est l'horodatage de l'instantané (et non l'horodatage de la valeur de caractéristique).

Pour les exportations complètes, Vertex AI Feature Store (ancien) renvoie toutes les valeurs des caractéristiques au cours d'une période donnée. Dans le résultat, l'horodatage associé à chaque valeur de caractéristique est l'horodatage de la caractéristique (l'horodatage spécifié lors de l'ingestion de la valeur de la caractéristique).

Le tableau suivant récapitule ce que renvoie Vertex AI Feature Store (ancien) en fonction de l'option que vous choisissez et des horodatages que vous fournissez.

Option Heure de début uniquement (incluse) Heure de fin uniquement (incluse) Heure de début et de fin (incluses)
Instantané À partir de l'heure actuelle (heure de réception de la requête), renvoie la dernière valeur identifiée en remontant jusqu'à l'heure de début.
L'horodatage de l'instantané est défini sur l'heure actuelle.
En partant de l'heure de fin, renvoie la dernière valeur, en remontant jusqu'à la toute première valeur de chaque caractéristique.
L'horodatage de l'instantané est défini sur l'heure de fin spécifiée.
Renvoie la dernière valeur dans la période spécifiée.
L'horodatage de l'instantané est défini sur l'heure de fin spécifiée.
Exportation complète Renvoie toutes les valeurs pendant et après l'heure de début, jusqu'à l'heure actuelle (heure d'envoi de la requête). Renvoie toutes les valeurs jusqu'à l'heure de fin, à partir de la toute première valeur pour chaque caractéristique. Renvoie toutes les valeurs comprises dans la période spécifiée.

Valeurs Null

Pour les instantanés, si la dernière valeur de caractéristique vaut "null" à un horodatage donné, Vertex AI Feature Store (ancien) renvoie la valeur de caractéristique non nulle précédente. S'il n'y a aucune valeur non nulle précédente, Vertex AI Feature Store (ancien) renvoie la valeur "null".

Pour les exportations complètes, si une valeur de caractéristique est "null" à un horodatage donné, Vertex AI Feature Store (ancien) renvoie la valeur "null" pour cet horodatage.

Examples

Par exemple, supposons que vous disposiez des valeurs suivantes dans un magasin de caractéristiques, où les valeurs de Feature_A et de Feature_B partagent le même horodatage :

ID d'entité Horodatage de la valeur de la caractéristique Caractéristique_A Caractéristique_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

Instantané

Pour les instantanés, Vertex AI Feature Store (ancien) renvoie les valeurs suivantes en fonction des valeurs d'horodatage données :

  • Si seule l'heure de début est définie sur T3, l'instantané renvoie les valeurs suivantes :
ID d'entité Horodatage de l'instantané Caractéristique_A Caractéristique_B
123 CURRENT_TIME A_T4 B_T5
  • Si seule l'heure de fin est définie sur T3, l'instantané renvoie les valeurs suivantes :
ID d'entité Horodatage de l'instantané Caractéristique_A Caractéristique_B
123 T3 A_T3 B_T1
  • Si les heures de début et de fin sont définies sur T2 et T3, l'instantané renvoie les valeurs suivantes :
ID d'entité Horodatage de l'instantané Caractéristique_A Caractéristique_B
123 T3 A_T3 NULL

Exportation complète

Pour les exportations complètes, Vertex AI Feature Store (ancien) renvoie les valeurs suivantes en fonction des valeurs d'horodatage données :

  • Si seule l'heure de début est définie sur T3, l'exportation complète renvoie les valeurs suivantes :
ID d'entité Horodatage de la valeur de la caractéristique Caractéristique_A Caractéristique_B
123 T3 A_T3 NULL
123 T4 A_T4 B_T4
123 T5 NULL B_T5
  • Si seule l'heure de fin est définie sur T3, l'exportation complète renvoie les valeurs suivantes :
ID d'entité Horodatage de la valeur de la caractéristique Caractéristique_A Caractéristique_B
123 T1 A_T1 B_T1
123 T2 A_T2 NULL
123 T3 A_T3 NULL
  • Si les heures de début et de fin sont définies sur T2 et T4, l'exportation complète renvoie les valeurs suivantes :
ID d'entité Horodatage de la valeur de la caractéristique Caractéristique_A Caractéristique_B
123 T2 A_T2 NULL
123 T3 A_T3 NULL
123 T4 A_T4 B_T4

Exporter les valeurs des caractéristiques

Lorsque vous exportez des valeurs de caractéristiques, vous choisissez les caractéristiques à interroger et s'il s'agit d'un instantané ou d'une exportation complète. Les sections suivantes présentent un exemple pour chaque option.

Pour les deux options, la destination de sortie doit se trouver dans la même région que le magasin de caractéristiques source. Par exemple, si votre magasin de caractéristiques se trouve dans us-central1, le bucket Cloud Storage ou la table BigQuery de destination doivent également se trouver dans us-central1.

Instantané

Exporter les dernières valeurs de caractéristiques pour une période donnée.

UI Web

Utilisez une autre méthode. Vous ne pouvez pas exporter de valeurs de caractéristiques à partir de la console Google Cloud.

REST

Pour exporter des valeurs de caractéristiques, envoyez une requête POST à l'aide de la méthode entityTypes.exportFeatureValues.

L'exemple suivant génère une table BigQuery, mais vous pouvez également générer le résultat dans un bucket Cloud Storage. Chaque destination de sortie peut présenter des conditions préalables avant de pouvoir envoyer une requête. Par exemple, si vous spécifiez un nom de table pour le champ bigqueryDestination, vous devez disposer d'un ensemble de données existant. Ces exigences sont décrites dans la documentation de référence de l'API.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région dans laquelle se trouve le magasin de caractéristiques. Exemple :us-central1
  • PROJECT_ID : l'ID de votre projet.
  • FEATURESTORE_ID : ID du featurestore.
  • ENTITY_TYPE_ID : ID du type d'entité.
  • START_TIME et END_TIME (facultatif) : si vous spécifiez uniquement l'heure de début, renvoie la dernière valeur à partir de l'heure actuelle (heure d'envoi de la requête) en remontant jusqu'à l'heure de début. Si vous spécifiez uniquement l'heure de fin, renvoie la dernière valeur à partir de l'heure de fin (incluse) en remontant jusqu'à la toute première valeur. Si vous spécifiez une heure de début et une heure de fin, renvoie la dernière valeur dans la période spécifiée (heures de début et de fin incluses). Si vous ne spécifiez aucune heure, renvoie la dernière valeur de chaque caractéristique, en partant de l'heure actuelle et en remontant jusqu'à la toute première valeur.
  • DATASET_NAME : nom de l'ensemble de données BigQuery de destination.
  • TABLE_NAME : nom de la table BigQuery de destination.
  • FEATURE_ID : ID d'une ou plusieurs caractéristiques. Spécifiez un unique caractère * (astérisque) pour sélectionner toutes les caractéristiques.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Langages supplémentaires

Pour savoir comment installer et utiliser le SDK Vertex AI pour Python, consultez la page Utiliser le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.

Exportation complète

Exporte toutes les valeurs de caractéristiques dans une période donnée.

UI Web

Utilisez une autre méthode. Vous ne pouvez pas exporter de valeurs de caractéristiques à partir de la console Google Cloud.

REST

Pour exporter des valeurs de caractéristiques, envoyez une requête POST à l'aide de la méthode entityTypes.exportFeatureValues.

L'exemple suivant génère une table BigQuery, mais vous pouvez également générer le résultat dans un bucket Cloud Storage. Chaque destination de sortie peut présenter des conditions préalables avant de pouvoir envoyer une requête. Par exemple, si vous spécifiez un nom de table pour le champ bigqueryDestination, vous devez disposer d'un ensemble de données existant. Ces exigences sont décrites dans la documentation de référence de l'API.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION_ID : région dans laquelle se trouve le magasin de caractéristiques. Exemple :us-central1
  • PROJECT_ID : l'ID de votre projet.
  • FEATURESTORE_ID : ID du featurestore.
  • ENTITY_TYPE_ID : ID du type d'entité.
  • START_TIME et END_TIME (facultatif) : si vous spécifiez uniquement l'heure de début, renvoie toutes les valeurs comprises entre l'heure actuelle (heure d'envoi de la requête) et l'heure de début (incluse). Si vous spécifiez uniquement l'heure de fin, renvoie toutes les valeurs comprises entre l'heure de fin (incluse) et l'horodatage de la toute première valeur (pour chaque caractéristique). Si vous spécifiez une heure de début et une heure de fin, renvoie toutes les valeurs comprises dans la période spécifiée (heures de début et de fin incluses). Si vous ne spécifiez aucune heure, renvoie toutes les valeurs comprises entre l'heure actuelle et l'horodatage de la toute première valeur (pour chaque caractéristique).
  • DATASET_NAME : nom de l'ensemble de données BigQuery de destination.
  • TABLE_NAME : nom de la table BigQuery de destination.
  • FEATURE_ID : ID d'une ou plusieurs caractéristiques. Spécifiez un unique caractère * (astérisque) pour sélectionner toutes les caractéristiques.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Node.js.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

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

Langages supplémentaires

Pour savoir comment installer et utiliser le SDK Vertex AI pour Python, consultez la page Utiliser le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.

Étapes suivantes