2012-06-03 3 views
1

Comment puis-je obtenir les 100 derniers enregistrements de la WADLogsTable Commandé par date?Derniers enregistrements de WadLogsTable

J'ai essayé de le faire avec ce morceau de code, mais il ne fonctionne pas

   var query = (from entity in tsc.CreateQuery<LogsObject>("WADLogsTable") 
         where entity.PartitionKey.CompareTo(startTime.ToUniversalTime().Ticks.ToString("D19")) >= 0 
         orderby entity.EventTickCount descending 
         select entity); 

Où est le centre technique TableServiceContext.

Je peux obtenir les dossiers, mais je suis intéressé par les journaux récents.

Merci,

Répondre

0

stockage de table Windows Azure ne prend pas en charge le tri, si les entités reviennent toujours classés par leur PartitionKey + RowKey. Mais je soupçonne que les entrées de journal sont déjà dans l'ordre chronologique inverse. Ne sont-ils pas?

[EDIT] Apparemment, ils ne le sont pas. :-)

+0

Merci pour votre message. les entrées de journal ne sont pas dans l'ordre chronologique inverse. – GoodSpeed

+0

Comme souligné par Steve, le stockage de table actuellement ne supporte pas le tri. Si vos entrées ne sont pas dans l'ordre chronologique inverse, vous devez d'abord télécharger les entrées sur votre machine locale, puis effectuer un tri local. Vous pouvez soumettre une suggestion de fonctionnalité sur http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting. –

0
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ATCommon.DiagnosticConfig); 
    CloudTableClient cloudTableClient = storageAccount.CreateCloudTableClient(); 
    TableServiceContext serviceContext = cloudTableClient.GetDataServiceContext(); 
    IQueryable<WadLogEntity> traceLogsTable = serviceContext.CreateQuery<WadLogEntity>("WADLogsTable"); 
    var selection = from row in traceLogsTable where row.PartitionKey.CompareTo("0" + DateTime.UtcNow.AddHours(hours).Ticks) >= 0 select row; 
    //var selection = from row in traceLogsTable where row.PartitionKey.CompareTo("0" + DateTime.UtcNow.AddMinutes(-5.0).Ticks) >= 0 select row; 
    CloudTableQuery<WadLogEntity> query = selection.AsTableServiceQuery<WadLogEntity>(); 
    IEnumerable<WadLogEntity> output = query.Execute(); 
return output.OrderByDescending(s => s.Timestamp).Take(100).ToList(); 
Questions connexes