Tous les produits
Search
Centre de documentation

Tablestore:Virtual columns

Dernière mise à jour :Aug 18, 2026

La fonctionnalité de colonne virtuelle vous permet d'interroger de nouveaux champs et types de données en créant un index de recherche ou en modifiant son schéma, sans modifier la structure de stockage ni les données dans Tablestore.

Présentation

Lors de la création d'un index de recherche, mappez une colonne de votre table de données vers une colonne virtuelle dans l'index. Cette colonne virtuelle peut avoir un type de données différent de celui de la colonne source, ce qui permet d'ajouter un nouveau champ indexable pour accélérer les requêtes ou d'utiliser différents analyseurs lexicaux sans modifier la table de données d'origine.

  • Utilisation d'analyseurs lexicaux différents pour un champ Text

    Mappez une seule colonne de chaîne vers plusieurs champs Text dans un index de recherche. Chaque champ Text peut utiliser un analyseur lexical différent pour répondre à diverses exigences métier.

  • Accélération des requêtes

    Sans nettoyer ni reconstruire vos données, mappez des colonnes vers différents types afin d'améliorer les performances des requêtes dans certains scénarios. Par exemple, la conversion d'un type numérique vers le type Keyword améliore les performances des requêtes par terme, tandis que la conversion d'un type chaîne vers un type numérique optimise les performances des requêtes par plage.

Notes d'utilisation

  • Les colonnes virtuelles prennent en charge diverses conversions de types de données. Le tableau suivant décrit les règles de conversion prises en charge.

    Type de champ source

    Type de colonne virtuelle

    String

    Keyword (y compris tableau)

    FuzzyKeyword (y compris tableau)

    Text (y compris tableau)

    Long (y compris tableau)

    Double (y compris tableau)

    Date (y compris tableau)

    IP (y compris tableau)

    Geo-point (y compris tableau)

    Long

    Keyword

    FuzzyKeyword

    Text

    Date

    Double

    Keyword

    FuzzyKeyword

    Text

  • Une colonne virtuelle ne peut être utilisée que dans les instructions de requête. Elle ne peut pas être renvoyée dans une requête ColumnsToGet. Pour obtenir la valeur, vous devez demander la colonne source d'origine.

Utilisation

Gérez les colonnes virtuelles à l'aide de la console ou d'un SDK. Avant de commencer, assurez-vous de remplir les conditions préalables suivantes.

Console

Après avoir défini un champ comme colonne virtuelle lors de la création d'un index de recherche dans la console, utilisez cette colonne virtuelle pour interroger les données.

  1. Accédez à l'onglet Indexes.

    1. Connectez-vous à la console Tablestore.

    2. Dans la barre de navigation supérieure, sélectionnez une région et un groupe de ressources.

    3. Sur la page Overview, cliquez sur le nom d'une instance ou sur Manage Instance dans la colonne Actions.

    4. Sous l'onglet Instance Details, dans la section Tables, cliquez sur le nom d'une table de données ou sur Indexes dans la colonne Actions.

  2. Sous l'onglet Indexes, cliquez sur Create Search Index.

  3. Dans la boîte de dialogue Create Index, définissez une colonne virtuelle lors de la création de l'index de recherche.

    1. Le système génère automatiquement un nom d'index. Vous pouvez saisir un Index Name personnalisé si nécessaire.

    2. Sélectionnez un Schema Generation Type.

      • Lorsque le paramètre Schema Generation Type est défini sur Manual, saisissez un nom de champ, sélectionnez un type de champ et indiquez si le champ est un tableau.

      • Lorsque le paramètre Schema Generation Type est défini sur Auto Generate, le système utilise automatiquement les colonnes de clé primaire et les colonnes d'attribut de la table de données comme champs d'index. Vous pouvez sélectionner le type de champ et activer la fonctionnalité de tableau selon vos besoins.

      Remarque

      Les paramètres Field Name et Field Type doivent être compatibles avec la table de données. Pour plus d'informations sur les correspondances entre les types de champs de la table de données et les types de champs de l'index de recherche, consultez Types de données.

    3. Créez une colonne virtuelle.

      Important

      Lors de la création d'une colonne virtuelle, le champ source doit exister dans la table de données et son type de données doit être compatible avec le type de champ de la colonne virtuelle.

      1. Cliquez sur l'icône image.

      2. Saisissez un Field Name et sélectionnez un Field Type.

      3. Activez le commutateur Virtual Column pour le champ, puis saisissez le Index Field Name.

    4. Pour configurer une clé de routage, une durée de vie (TTL) ou un pré-tri pour l'index de recherche, activez le commutateur Advanced Settings et configurez les paramètres. Pour plus d'informations, consultez Créer un index de recherche.

    5. Cliquez sur OK.

      Une fois l'index de recherche créé, cliquez sur Index Details dans la colonne Actions pour afficher ses informations de base, ses métriques, sa clé de routage, ses champs d'index et ses paramètres de pré-tri.

  4. Utilisez la colonne virtuelle pour interroger les données.

    1. Dans la colonne Actions de l'index de recherche, cliquez sur Manage Data.

    2. Dans la boîte de dialogue Search, interrogez les données.

      Par exemple, sélectionnez le champ d'index virtuel Col_Long_Virtual_Keyword, définissez le type de requête sur term query et saisissez 1000 comme valeur de requête.

      1. Par défaut, toutes les colonnes sont renvoyées. Pour renvoyer des colonnes d'attribut spécifiques, désactivez le commutateur Get All Columns et saisissez les noms des colonnes d'attribut, séparés par des virgules (,).

      2. Sélectionnez un champ d'index, cliquez sur Add, puis définissez le type de requête et la valeur pour le champ.

      3. Par défaut, le tri est désactivé. Pour trier les résultats selon un champ d'index, activez le commutateur Sort, ajoutez les champs d'index souhaités et configurez l'ordre de tri.

      4. Par défaut, l'agrégation est désactivée. Pour effectuer une agrégation statistique sur un champ spécifique, activez l'option Enable Aggregation, ajoutez le champ pour l'agrégation et configurez les paramètres d'agrégation.

      5. Cliquez sur OK.

        Les données correspondant aux conditions de requête s'affichent sous l'onglet Indexes.

SDK

Après avoir créé un index de recherche avec une colonne virtuelle à l'aide d'un SDK, utilisez cette colonne virtuelle pour interroger les données.

  1. Créez un index de recherche avec une colonne virtuelle.

    Remarque

    Pour plus d'informations sur les paramètres, consultez Créer un index de recherche.

    L'exemple suivant crée un index de recherche avec deux champs, Col_Keyword et Col_Long. Il crée également deux colonnes virtuelles : Col_Keyword_Virtual_Long mappe la colonne Col_Keyword de la table de données, et Col_Long_Virtual_Keyword mappe la colonne Col_Long.

    private static void createSearchIndex(SyncClient client) {
        CreateSearchIndexRequest request = new CreateSearchIndexRequest();
        // Set the data table name.
        request.setTableName("<TABLE_NAME>"); 
        // Set the search index name.
        request.setIndexName("<SEARCH_INDEX_NAME>"); 
        IndexSchema indexSchema = new IndexSchema();
        indexSchema.setFieldSchemas(Arrays.asList(
            // Set the field name and type.
            new FieldSchema("Col_Keyword", FieldType.KEYWORD), 
            // Set the virtual column name and type.
            new FieldSchema("Col_Keyword_Virtual_Long", FieldType.LONG) 
                 // Specify that the field is a virtual column.
                .setVirtualField(true) 
                 // The source field in the data table that the virtual column maps to.
                .setSourceFieldName("Col_Keyword"), 
            new FieldSchema("Col_Long", FieldType.LONG),
            new FieldSchema("Col_Long_Virtual_Keyword", FieldType.KEYWORD)
                .setVirtualField(true)
                .setSourceFieldName("Col_Long")));
        request.setIndexSchema(indexSchema);
        // Call the client to create the search index.
        client.createSearchIndex(request); 
    }
  2. Utilisez la colonne virtuelle pour interroger les données.

    L'exemple suivant interroge les lignes dont la valeur de la colonne Col_Long_Virtual_Keyword est « 1000 ». La requête renvoie le nombre total de lignes correspondantes ainsi qu'un échantillon de celles-ci.

    private static void query(SyncClient client) {
        SearchQuery searchQuery = new SearchQuery();
        TermsQuery termsQuery = new TermsQuery(); // Set the query type to TermsQuery.
        termsQuery.setFieldName("Col_Long_Virtual_Keyword"); // Set the field to match.
        termsQuery.addTerm(ColumnValue.fromString("1000")); // Set the value to match.
        searchQuery.setQuery(termsQuery);
        searchQuery.setGetTotalCount(true); // Set to return the total number of matched rows.
        SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        columnsToGet.setReturnAll(true); // Set to return all columns. Virtual columns are not returned.
        searchRequest.setColumnsToGet(columnsToGet);
        SearchResponse resp = client.search(searchRequest);
        // The total number of matched rows, not the number of returned rows.
        System.out.println("TotalCount: " + resp.getTotalCount()); 
        System.out.println("Row: " + resp.getRows());
    }