【发布时间】:2015-03-19 13:03:54
【问题描述】:
我将 AdWords 报告数据存储在 Postgres 中。每个报告都存储在一个名为 Reports 的表中,该表有一个名为“data”的 jsonb 列。每个报告都有 json 存储在其“数据”字段中,如下所示:
[
{
match_type: "exact",
search_query: "gm hubcaps",
conversions: 2,
cost: 1.24
},
{
match_type: "broad",
search_query: "gm auto parts",
conversions: 34,
cost: 21.33
},
{
match_type: "phrase",
search_query: "silverdo headlights",
conversions: 63,
cost: 244.05
}
]
我想要做的是查询这些数据哈希并总结给定报告的总转化次数。我查看了 Postgresql 文档,看起来你只能对哈希进行计算,而不是像这样的哈希数组。我正在尝试在 postgres 中做些什么?我是否需要从这个数组中创建一个临时表并对其进行计算?或者我可以使用存储过程吗?
我使用的是 Postgresql 9.4
编辑 我不只是使用常规的规范化表格的原因是,这只是报告数据结构的一个示例。在我的项目中,报告必须允许任意键,因为它们是由用户上传 CSV 和他们喜欢的任何列来填充的。它基本上只是一种解决任意数量的用户创建表的方法。
【问题讨论】:
-
也许您应该将其设为永久表,因为这种结构完全适合关系模型,并且将其保存在 JSON 中意味着每个查询都将变得更加复杂且效率更低。
-
表定义(psql 中的
\d tbl)和您的 Postgres 版本对于这个问题是必不可少的。另外:每个报告或整体的总和约定?
标签: sql json postgresql jsonb