Keen.io中的嵌套JSON对象

时间:2014-07-07 21:39:13

标签: javascript json data-visualization keen-io

在Keen.io的一个集合中,我有一个名为pours的{​​{1}}类型的属性。 list是包含属性pourspourstart_time_of_pour的单个end_time_of_pour对象的列表。但是,我不能直接在工作台中查询存储在此列表中的数据。工作台只允许我将目标属性设置为pour_amount列表,而不是单个浇筑对象或属性。

有没有办法在工作台中访问这些嵌套对象和属性?谢谢!

2 个答案:

答案 0 :(得分:10)

来自Keen IO的

Josh

目前没有办法通过工作台或API查询列表中包含的对象的属性。但是,有几种方法可以解决这个问题。

索引属性

您可以在发送事件之前将对象列表中的属性复制到一组索引属性。这会导致pour_1_amountpour_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_amountmaximum_pour_end_time等。这需要您事先知道您想要做什么分析,但是您可以使用Keen进行所有查询。

提取w /客户端处理

您可以执行extraction,并在您身边进行手动处理。为了提高提取速度,您可以将其限制为certain properties。此选项使数据模型保持最干净,但在查询时确实需要更多工作,因为Keen不会进行聚合。像Miso Dataset这样的项目可以让一些工作变得更容易。

答案 1 :(得分:0)

使用ruby gem看起来你现在可以运行这样的东西来查询嵌套属性:

Keen.select_unique(
    'sessions',
    target_property: 'user.id',
    :timeframe => 'this_8_weeks'
)