Вложенные объекты JSON в Keen.io

В коллекции в Keen.io у меня есть свойство с именем pours типа list. pours — это список отдельных объектов pour, которые содержат свойства start_time_of_pour, end_time_of_pour и pour_amount. Однако я не могу напрямую запрашивать данные, хранящиеся в этом списке, в рабочей среде. Верстак позволяет мне установить целевое свойство только для списка pour, а не для отдельных объектов заливки или свойств.

Есть ли способ получить доступ к этим вложенным объектам и свойствам в рабочей среде? Спасибо!


person JAL    schedule 07.07.2014    source источник
comment
Привет, ты удалил свой вопрос о таблице ios. я не знаю как с вами связаться поэтому пишу сюда, так как у меня есть ответ. В UITextView существует состояние гонки при подчеркивании URL-адресов: это делается рабочим потоком, который пытается изменить свой собственный AttributedText из рабочего. Но когда это происходит, его текст изменился, потому что повторно используется ячейка, в которой находится UITextView. Подчеркиваемый диапазон больше недействителен, и происходит сбой.   -  person Softlion    schedule 12.10.2014
comment
@Softlion спасибо за ответ. Я больше не участвую в проекте, для которого задал вопрос, но рассмотрю ваш ответ и попытаюсь снова открыть вопрос.   -  person JAL    schedule 31.10.2014
comment
@Softlion Я работаю над повторным открытием вопроса. Если бы вы могли добавить свой комментарий и проголосовать за повторное открытие вопроса здесь, это было бы здорово: stackoverflow.com/questions/25748671/   -  person JAL    schedule 04.11.2014


Ответы (2)


Джош из Keen IO здесь.

В настоящее время нет способа запрашивать свойства объектов, содержащихся в списках, через инструментальные средства или 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, могут облегчить эту работу.

person Josh Dzielak    schedule 07.07.2014
comment
В настоящее время нет способа запрашивать свойства объектов, содержащихся в списках, через инструментальные средства или API. Это все еще верно на сегодняшний день? - person pgorsira; 28.02.2016

С ruby ​​gem кажется, что теперь вы можете запустить что-то вроде этого для запроса вложенного атрибута:

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