在Keen.io的一个集合中,我有一个名为pours
的{{1}}类型的属性。 list
是包含属性pours
,pour
和start_time_of_pour
的单个end_time_of_pour
对象的列表。但是,我不能直接在工作台中查询存储在此列表中的数据。工作台只允许我将目标属性设置为pour_amount
列表,而不是单个浇筑对象或属性。
有没有办法在工作台中访问这些嵌套对象和属性?谢谢!
答案 0 :(得分:10)
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
将包含每个事件的每个列表项的所有倾倒量的总和。
您可以将属性的所有实例(a.k.a. reduce)聚合为一个:例如total_pour_amount
,maximum_pour_end_time
等。这需要您事先知道您想要做什么分析,但是您可以使用Keen进行所有查询。
您可以执行extraction,并在您身边进行手动处理。为了提高提取速度,您可以将其限制为certain properties。此选项使数据模型保持最干净,但在查询时确实需要更多工作,因为Keen不会进行聚合。像Miso Dataset这样的项目可以让一些工作变得更容易。
答案 1 :(得分:0)
使用ruby gem看起来你现在可以运行这样的东西来查询嵌套属性:
Keen.select_unique(
'sessions',
target_property: 'user.id',
:timeframe => 'this_8_weeks'
)