Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Méthode Table.Scan dans l'AWS SDK for .NET
La méthode Scan
effectue une analyse complète de la table. Elle fournit deux surcharges. Le seul paramètre requis par la méthode Scan
est le filtre d'analyse que vous pouvez fournir à l'aide de la surcharge suivante.
Exemple
Scan(ScanFilter filter);
Par exemple, supposons que vous gériez une table de threads de forum suivant des informations telles que l'objet (principal) du thread, le message associé, l'Id
de forum auquel le thread appartient, les Tags
et autres informations. Supposons que l'objet soit la clé primaire.
Exemple
Thread(Subject, Message, ForumId, Tags, LastPostedDateTime, .... )
Il s'agit d'une version simplifiée des forums et unités d'exécution que vous voyez sur les forums AWS (consultez Forums de discussionForumId
n'est pas une clé primaire, l'exemple analyse la table. Le ScanFilter
inclut deux conditions. La requête retourne tous les threads qui satisfont aux deux conditions.
Exemple
string tableName = "Thread"; Table ThreadTable = Table.LoadTable(client, tableName); ScanFilter scanFilter = new ScanFilter(); scanFilter.AddCondition("ForumId", ScanOperator.Equal, 101); scanFilter.AddCondition("Tags", ScanOperator.Contains, "sortkey"); Search search = ThreadTable.Scan(scanFilter);
Spécification de paramètres facultatifs
Vous pouvez également spécifier des paramètres facultatifs pour Scan
, tels qu'une liste spécifique d'attributs à extraire ou l'exécution ou non d'une lecture à cohérence forte. Pour spécifier des paramètres facultatifs, vous devez créer un objet ScanOperationConfig
qui inclut les paramètres obligatoires et facultatifs, et utiliser la surcharge suivante.
Exemple
Scan(ScanOperationConfig config);
L'exemple de code C# suivant exécute la même requête précédente (rechercher les unités d’exécution de forum dans lesquelles ForumId
a la valeur 101
et l'attribut Tag
contient le mot clé « sortkey »). Supposons que vous souhaitiez ajouter un paramètre facultatif pour récupérer uniquement une liste d'attributs spécifiques. Dans ce cas, vous devez créer un objet ScanOperationConfig
en fournissant tous les paramètres, requis et facultatifs, comme illustré dans l'exemple de code suivant.
Exemple
string tableName = "Thread"; Table ThreadTable = Table.LoadTable(client, tableName); ScanFilter scanFilter = new ScanFilter(); scanFilter.AddCondition("ForumId", ScanOperator.Equal, forumId); scanFilter.AddCondition("Tags", ScanOperator.Contains, "sortkey"); ScanOperationConfig config = new ScanOperationConfig() { AttributesToGet = new List<string> { "Subject", "Message" } , Filter = scanFilter }; Search search = ThreadTable.Scan(config);
Exemple : analyse à l'aide de la méthode Table.Scan
L'opération Scan
effectue une analyse de table complète, ce qui en fait une opération potentiellement coûteuse. Vous devez utiliser les requêtes à la place. Cependant, il se peut que vous deviez parfois exécuter une analyse par rapport à une table. Par exemple, vous pouvez avoir une erreur d'entrée de données dans la tarification du produit et vous devez analyser la table comme illustré dans l'exemple de code C# suivant. L'exemple analyse la table ProductCatalog
pour rechercher les produits pour lesquels la valeur de prix est inférieure à 0. L'exemple illustre l'utilisation de deux surcharges Table.Scan
.
-
Table.Scan
qui prend l'objetScanFilter
comme paramètre.Vous pouvez passer le paramètre
ScanFilter
lors du passage des seuls paramètres requis. -
Table.Scan
qui prend l'objetScanOperationConfig
comme paramètre.Vous devez utiliser le paramètre
ScanOperationConfig
si vous souhaitez passer des paramètres facultatifs à la méthodeScan
.
Exemple
using System; using System.Collections.Generic; using System.Linq; using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.DocumentModel; namespace com.amazonaws.codesamples { class MidLevelScanOnly { private static AmazonDynamoDBClient client = new AmazonDynamoDBClient(); static void Main(string[] args) { Table productCatalogTable = Table.LoadTable(client, "ProductCatalog"); // Scan example. FindProductsWithNegativePrice(productCatalogTable); FindProductsWithNegativePriceWithConfig(productCatalogTable); Console.WriteLine("To continue, press Enter"); Console.ReadLine(); } private static void FindProductsWithNegativePrice(Table productCatalogTable) { // Assume there is a price error. So we scan to find items priced < 0. ScanFilter scanFilter = new ScanFilter(); scanFilter.AddCondition("Price", ScanOperator.LessThan, 0); Search search = productCatalogTable.Scan(scanFilter); List<Document> documentList = new List<Document>(); do { documentList = search.GetNextSet(); Console.WriteLine("\nFindProductsWithNegativePrice: printing ............"); foreach (var document in documentList) PrintDocument(document); } while (!search.IsDone); } private static void FindProductsWithNegativePriceWithConfig(Table productCatalogTable) { // Assume there is a price error. So we scan to find items priced < 0. ScanFilter scanFilter = new ScanFilter(); scanFilter.AddCondition("Price", ScanOperator.LessThan, 0); ScanOperationConfig config = new ScanOperationConfig() { Filter = scanFilter, Select = SelectValues.SpecificAttributes, AttributesToGet = new List<string> { "Title", "Id" } }; Search search = productCatalogTable.Scan(config); List<Document> documentList = new List<Document>(); do { documentList = search.GetNextSet(); Console.WriteLine("\nFindProductsWithNegativePriceWithConfig: printing ............"); foreach (var document in documentList) PrintDocument(document); } while (!search.IsDone); } private static void PrintDocument(Document document) { // count++; Console.WriteLine(); foreach (var attribute in document.GetAttributeNames()) { string stringValue = null; var value = document[attribute]; if (value is Primitive) stringValue = value.AsPrimitive().Value.ToString(); else if (value is PrimitiveList) stringValue = string.Join(",", (from primitive in value.AsPrimitiveList().Entries select primitive.Value).ToArray()); Console.WriteLine("{0} - {1}", attribute, stringValue); } } } }