2012-02-08 58 views
2

有什麼方法可以在App Engine中使用GROUP BY,通過GQLQuery方法嗎?如何在App Engine中使用GROUP BY

我做了一些研究,我讀過,有GQL沒有GROUP BY,看起來像沒有也Query類。

如果有任何資源或任何方法與Python,請讓我知道。


編輯

我讀過也是它可能使GROUP BYMap Reduce。如果任何人有這方面的經驗,一個幫助將被接受。

謝謝。

回答

3

不,數據存儲不支持任何類型的數據庫端處理或聚合。解決方案是在內存中進行所有後期處理。有兩種方法可以在每個請求中或使用map reduce。任何解決方案將始終返回查詢中的所有行,但您獲取行的方式會有所不同。

2

您不能使用appengine庫執行GROUP BY查詢。這是數據庫體系結構的失敗,在gereral中(其中Google的BigTable是其中一個實現)。

根據您使用GROUP BY所做的工作,另一種方法可能適合您的需求。對於每個「類型」的模型,您正在查詢您的GROUP BY,建立一個db.Model類來表示每個類。然後直接查詢這些類。

或者,如果您已預先知道返回的組的值,則可以爲每個值設置Query#filter(),並將這些查詢作爲您的GROUP BY ed集處理。

1

我想這個解決方案最終取決於你計劃如何處理分組數據。如果分組要求是爲了簡化HTML代碼中的輸出,那麼您可以通過regrouping模板中的數據來解決該問題。

對於計算或其他類型的聚合,您需要在內存中執行此操作。