2017-08-11 164 views
0

我正在尋求請求一個dynamodb表,但我無法弄清楚如何做一個GROUP BY和ORDER BY與Python 2.7 sdk boto3。aws DynamoDB boto3查詢GROUP BY和ORDER BY

我已經閱讀並再次閱讀aws文檔和大部分堆棧主題,但是我沒有找到明確的答案,因爲我的請求相當複雜。

我會從我的表中有'permaname'GROUP BY'源'的所有項目,我會得到結果ORDER BY created_on DESC。

這是我做我的請求,我的那一刻簡單的要求:

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

我希望有人能回答

回答

1

DynamoDB沒有聚合函數一樣GROUP BY在RDBMS。排序只能在SORT KEY屬性上執行。對於所有其他屬性,您可能需要在客戶端執行此操作。

另一種方法是使用SORT鍵創建全局二級索引(GSI)。但是,GSI會爲讀取和寫入容量單位帶來額外成本。

查詢結果總是被排序關鍵字值排序。如果排序鍵的數據類型爲 ,則結果以數字 順序返回;否則,結果將按照UTF-8字節的順序返回。默認情況下,排序順序爲 。要顛倒順序,請將 ScanIndexForward參數設置爲false。

+0

非常感謝你的回答@notionquest,我編輯了我的問題。跳你知道該怎麼做 –

0

只能在排序鍵attribute.If您的排序鍵BY操作執行順序設置爲created_on,您可以使用ScanIndexForward通過操作執行的順序。

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