在Keen.io中嵌套JSON对象
Nested JSON Objects in Keen.io
在Keen的集合中。io中,我有一个类型为list
的属性pours
。pours
是单个pour
对象的列表,包含属性start_time_of_pour
、end_time_of_pour
和pour_amount
。但是,我不能直接查询工作台中存储在此列表中的数据。工作台只允许我将Target属性设置为pour
列表,而不允许设置单个的pour对象或属性。
是否有一种方法可以访问这些嵌套的对象和工作台中的属性?谢谢!
我是Keen IO的Josh。
目前没有一种方法可以通过工作台或API查询列表中包含的对象的属性。然而,有一些方法可以解决这个问题。
索引属性您可以在发送事件之前将对象列表中的属性复制到一组索引属性中。这就产生了像pour_1_amount
、pour_2_amount
到pour_n_amount
这样的属性。
如果你这样做,你应该添加一个number_of_pours
属性来表示pours
列表的大小。当您准备好进行分析时,首先查询以获得事件范围内的最大number_of_pours
。这将是一个循环的输入,您将运行它来分析每个索引属性。
假设你想找出所有倒出来的水的总量。下面是如何使用Ruby和keen-gem实现这一点,尽管这个概念适用于一般情况。
# within an irb session
require 'keen'
# get the maximum number of pours to check
maximum_pours_length =
Keen.maximum('collection', target_property: 'number_of_pours')
# total pour amount
total_pour_amount = 0
for n in maximum_pours_length
total_pour_amount = total_pour_amount +
Keen.sum('collection', target_property: "pour_#{n}_amount")
end
# print the total
puts total_pour_amount
total_pour_amount
将包含每个事件的每个列表项的所有倾注金额的总和。
你可以聚合(也就是减少)属性的所有实例到一个:例如total_pour_amount
, maximum_pour_end_time
,等等。这需要你事先知道你想做什么分析,但是你可以使用Keen进行所有的查询。
提取/客户端处理
您可以执行提取,并在您这边进行手动处理。为了使提取更快,您可以将其限制为某些属性。这个选项使数据模型保持最干净,但是在查询时需要做更多的工作,因为Keen不会进行聚合。像Miso Dataset这样的项目可以使这些工作变得更容易。
使用ruby gem,您现在似乎可以运行如下命令来查询嵌套属性:
Keen.select_unique(
'sessions',
target_property: 'user.id',
:timeframe => 'this_8_weeks'
)
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象