用SUM,ROUND&转换SQL语句COUNT进入GQL

时间:2015-05-30 11:15:05

标签: php google-app-engine

我使用官方PHP API SDK和" tomwalder / php-gds"与Google Datastore进行互动。

Google数据存储区(和GQL)非常适合我使用的99%的数据(少数列,一致的数据结构,数十亿行),除了一些查询。

我遇到的最大问题是将此SQL语句转换为GQL:

SELECT column_a, ROUND(SUM(column_b),0) as total_score, COUNT(column_a) as company_name 
FROM companies 
WHERE column_a <> '' AND column_c = '2015-05-30'
GROUP BY column_a 
ORDER BY total_score desc;

如果GQL中没有ROUND,SUM或COUNT,则将数据缓冲到内存并使用PHP运行计算是唯一的选择吗? 每个查询有20MB的数据,它似乎不是最有效的途径。我真的不想迁移到BigQuery,因为我喜欢数据存储在读取数据时的响应能力。

1 个答案:

答案 0 :(得分:0)

您无法使用数据存储区以便宜或轻松的方式使用聚合函数。

您需要以不同方式处理问题并在应用层中维护计数/总和等。

这是对传统(强大)MySQL灵活性的范式转换。

我个人一起使用。

CloudSQL,用于汇总和报告由我的应用层更新的数据。

P.S。感谢您使用PHP-GDS !!如果您想提出请求,我正在考虑向GitHub添加一些聚合辅助工具。

汤姆