2016-08-08 29 views
1

Ich habe gesehen, dass Azure Table Storage die Abfrage von Datensätzen durch eine partielle RowKey (zusätzlich zu PartitionKey) unterstützt (C# -Beispiel here).Filter Azure-Tabellenspeicher von RowKey und StartsWith mit dem Python-SDK

Allerdings kann ich nichts in Bezug auf diese in den aktuellen Dokumenten auf Filtern Abfrageergebnisse finden (here).

Ich versuche, den Python Azure-Speicher SDK zur Verwendung eine Teilmenge von PartitionKey und RowKey Kombinationen, in denen die RowKey beginnt mit einer bestimmten Zeichenfolge abzufragen. Ich habe den Code (das funktioniert, aber nicht tut korrekte Filterung beliebige Zeile Tasten):

from azure.storage.table import TableService 
table_service = TableService(account_name=ACCOUNT_NAME, account_key=ACCOUNT_KEY) 
entities = table_service.query_entities('mystoragetable', filter='PartitionKey eq mypartitionkey"', num_results=10) 

Jedoch kann ich nicht die Syntax für herauszufinden auch ein partielles (startswith) constraint zu dem Filter hinzugefügt wird.

Hat jemand Erfahrung mit dem Filtern von Azure Table Storage-Abfragen durch teilweise RowKey Strings? Ich bin hier ratlos; Im obigen Beispiel scheint dies jedoch über den Code C# möglich zu sein.

Wenn es zusätzliche Dokumente darüber gibt, wie man dies über einen REST-Aufruf macht, kann ich das wahrscheinlich in die Python-Verwendung übersetzen.

Antwort

2

Ihre RowKey Werte enthält Wörter Unter der Annahme, und Sie wollen nur die Wörter mit a und b filtern, ist es das, was Sie zu Ihrer Anfrage hinzufügen würde:

(RowKey ge 'a' and RowKey lt 'c') ==> (RowKey >= 'a' && RowKey < 'c') 

So Ihr Code wie wäre etwas:

entities = table_service.query_entities('mystoragetable', filter="PartitionKey eq 'mypartitionkey' and RowKey ge '<starts with substring>'", num_results=10) 
+0

Dies ist sehr hilfreich. Ich habe nicht begriffen, dass "ge" und "le" auch auf Charaktere zutreffen könnten, aber ich denke, das macht durchaus Sinn. Vielen Dank! – Brett