Tous les produits
Search
Centre de documentation

Tablestore:Analyse parallèle

Dernière mise à jour :Aug 18, 2026

Si l'ordre des résultats de la requête n'a pas d'importance, utilisez la fonctionnalité d'analyse parallèle pour obtenir les résultats efficacement.

Prérequis

Paramètres

Paramètre

Description

tableName

Nom de la table de données.

indexName

Nom de l'index de recherche.

scanQuery

query

Instruction de requête pour l'index de recherche. L'opération prend en charge les requêtes term, fuzzy, range, geo et nested, similaires à celles de l'opération Search.

limit

Nombre maximal de lignes renvoyées par chaque appel ParallelScan.

maxParallel

Nombre maximal de tâches d'analyse parallèle par requête. Ce nombre varie selon le volume de données : plus le volume est important, plus le nombre de tâches requis est élevé. Utilisez l'opération ComputeSplits pour connaître le nombre maximal de tâches d'analyse parallèle par requête.

currentParallelId

ID de la tâche d'analyse parallèle dans la requête. Valeurs possibles : [0, valeur de maxParallel).

token

Jeton utilisé pour paginer les résultats de la requête. Les résultats de la requête ParallelScan contiennent le jeton de la page suivante. Utilisez ce jeton pour récupérer la page suivante.

aliveTime

Durée de validité de la tâche d'analyse parallèle actuelle, qui correspond également à celle du jeton. Unité : secondes. Valeur par défaut : 60. Il est recommandé d'utiliser la valeur par défaut. Si vous n'initiez pas la requête suivante dans le délai de validité, vous ne pourrez plus interroger de données. La durée de validité du jeton est actualisée à chaque envoi de requête.

Remarque

Les sessions expirent prématurément en cas de modification dynamique des index de commutation dans les schémas, de défaillance d'un serveur ou d'exécution d'un équilibrage de charge côté serveur. Dans ce cas, recréez les sessions.

columnsToGet

Nom de la colonne à renvoyer dans le résultat de regroupement. Ajoutez le nom de la colonne à Columns.

Pour renvoyer toutes les colonnes de l'index de recherche, utilisez l'opération plus concise ReturnAllFromIndex.

Important

ReturnAll ne peut pas être utilisé ici.

sessionId

ID de session de la tâche d'analyse parallèle. Appelez l'opération ComputeSplits pour créer une session et connaître le nombre maximal de tâches d'analyse parallèle prises en charge par la requête d'analyse parallèle.

Exemples

L'exemple de code suivant montre comment effectuer une analyse parallèle :

// 1. Obtain the session ID. 
let computeSplits = await new Promise((resolve, reject) => {
    client.computeSplits({
        tableName: tableName,
        searchIndexSplitsOptions: {
            indexName: indexName,
        }
    }, function (err, data) {
        if (err) {
            console.log('computeSplits error:', err.toString());
            reject(err);
        } else {
            console.log('computeSplits success:', data);
            resolve(data)
        }
    })
})

// 2. Specify query conditions. 
const scanQuery = {
    query: {
        queryType: TableStore.QueryType.MATCH_ALL_QUERY,
    },
    limit: 1000,
    aliveTime: 30,
    token: undefined,
    currentParallelId: 0,
    maxParallel: 1,
}

// 3. Create a ParallelScan request. In this example, a synchronous request is created. You can create an asynchronous request based on your business requirement. 
const parallelScanPromise = function () {
    return new Promise(function (resolve, reject) {
        client.parallelScan({
            tableName: tableName,
            indexName: indexName,
            columnToGet: {
                returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX,
            },
            sessionId: computeSplits.sessionId,
            scanQuery: scanQuery,
        }, function (err, data) {
            if (err) {
                console.log('parallelScan error:', err.toString());
                reject(err);
            } else {
                console.log("parallelScan, rows:", data.rows.length)
                resolve(data)
            }
        });
    })
}
let totalCount = 0 // Specify that the total number of rows that meet the query conditions is returned. 
let parallelScanResponse = await parallelScanPromise()
totalCount = totalCount + parallelScanResponse.rows.length
// 4. Pull data by using an iterator until all data is pulled. 
while (parallelScanResponse.nextToken !== null && parallelScanResponse.nextToken.length > 0) {
    scanQuery.token = parallelScanResponse.nextToken
    parallelScanResponse = await parallelScanPromise()
    totalCount += parallelScanResponse.rows.length
}
console.log("total rows:", totalCount)

FAQ

Que faire si l'appel de l'opération Search ne renvoie aucune donnée ?

Références

  • Les index de recherche prennent en charge les types de requête suivants : requête term, requête terms, requête match all, requête match, requête match phrase, requête prefix, requête range, requête wildcard, requête Boolean, requête geo, requête nested, requête vector et requête exists. Sélectionnez un type de requête adapté à vos besoins métier pour interroger les données.

    Pour trier ou paginer les lignes correspondant aux conditions de la requête, utilisez la fonctionnalité de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.

    Pour réduire l'ensemble des résultats en fonction d'une colonne spécifique, utilisez la fonctionnalité de réduction (distinct). Ainsi, les données du type spécifié n'apparaissent qu'une seule fois dans les résultats de la requête. Pour plus d'informations, consultez la rubrique Réduction (distinct).

  • Pour analyser les données d'une table de données, par exemple pour obtenir les valeurs extrêmes, la somme et le nombre total de lignes, effectuez des opérations d'agrégation ou exécutez des instructions SQL. Pour plus d'informations, consultez les rubriques Agrégation et Requête SQL.

  • Pour obtenir rapidement toutes les lignes correspondant aux conditions de la requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits afin d'utiliser la fonctionnalité d'analyse parallèle. Pour plus d'informations, consultez la rubrique Analyse parallèle.