2017-08-11 4 views
0

Ich bin auf der Suche nach einer Dynamodb-Tabelle, aber ich kann nicht herausfinden, wie man eine GROUP BY und eine ORDER BY mit dem Python 2.7 SDK Boto3.aws DynamoDB boto3 Abfrage GROUP BY und ORDER BY

Ich habe gelesen und lesen Sie wieder die AWS-Dokumentation und die meisten der Stapel Themen, aber ich habe nicht klar zu finden Antwort, weil meine Anfrage ziemlich komplex ist.

Ich würde alle Elemente aus meinen Tabellen bekommen, die eine 'permaname' GROUP BY 'Quelle' haben und ich hätte das Ergebnis ORDER BY created_on DESC. Diese

ist, wie ich meine Anfrage meine einfache Anfrage im Moment tun:

response = self.table.query(KeyConditionExpression = key('permaname').eq(self.permaname)) 

Ich hoffe, jemand hat die Antwort

Antwort

1

DynamoDB keine Aggregatfunktion haben wie GROUP BY in RDBMS. Die Sortierung kann nur mit dem Attribut SORT KEY durchgeführt werden. Bei allen anderen Attributen müssen Sie dies möglicherweise auf der Client-Seite tun.

Der alternative Ansatz wäre, Global Secondary Index (GSI) mit SORT Key zu erstellen. Allerdings würde GSI zusätzliche Kosten für Lese- und Schreibkapazitätseinheiten verursachen.

Abfrageergebnisse werden immer nach dem Sortierschlüsselwert sortiert. Wenn der Typ des Sortierschlüssels Nummer ist, werden die Ergebnisse in numerischer Reihenfolge zurückgegeben. Andernfalls werden die Ergebnisse in der Reihenfolge der UTF-8-Bytes zurückgegeben. Nach Standard ist die Sortierreihenfolge aufsteigend. Um die Reihenfolge umzukehren, setzen Sie den Parameter ScanIndexForward auf false.

+0

Vielen Dank @notionquest für Ihre Antwort, ich habe meine Frage bearbeitet. Hop du weißt, wie es geht –

0

Sie können nur auf dem SORT KEY attribute.If Ihre SORT KEY ORDER BY Operation durchführen wird created_on werden, können Sie ScanIndexForward verwenden Sie die ORDER BY-Operation auszuführen.

response = self.table.query(KeyConditionExpression = key('permaname').eq(self.permaname), ScanIndexForward=False)