2015-09-18 4 views
0

Примера: У меня есть следующий набор данных:Ядра и группировка данных

date   eur usd aud 
------------------------------ 
2015-01-01 0.5 1.0 1.5 
2015-01-02 0.6 1.1 1.6 
2015-01-03 0.4 1.0 1.3 
      .... 
2015-02-01 0.5 1.0 1.5 
2015-02-02 0.6 1.1 1.6 
2015-02-03 0.4 1.0 1.3 

Моя цель состоит, чтобы вычислить среднее соотношение евро/доллар EUD/ауд каждую неделю года. Я ожидаю, что следующий результат:

avg eur/usd: 
------------------ 
Week 1 0.5 
Week 2 0.54 
Week 3 0.4 

Для расчета EUR/USD рацион я добавил NSExpression. Вот код:

let usdExpression = NSExpression(forKeyPath: "usd") 
    let eurExpression = NSExpression(forKeyPath: "eur") 
    let ratioExpression = NSExpression(forFunction: "divide:by:", arguments: [usdExpression, eurExpression]) 
    let avgRatioExpression = NSExpression(forFunction: "average:", arguments: [ratioExpression]) 

Я добавляю выражение для запроса выборки. Теперь я собираюсь сгруппировать по неделям. Я не храню неделю в базе данных (у меня там только дата). Я добавил transient property к моей модели и реализована логика есть:

var weekOfYear { 
    var numberOfWeek: Int? 
    ... 
    return "Week \(numberOfWeek)" 
} 

Но я не в группе этим свойством. Так можно ли получить групповые значения? Если нет, похоже, мои выражения бесполезны.

ответ

0

Вы не можете группировать переходным процессом, потому что он фактически не хранится в SQL. Вы можете сделать свой переходный период постоянным значением и обновить все записи в магазине, а затем вы можете использовать его для извлечения. Вероятно, это лучший подход, так как число недель не изменяется и представляет собой небольшую часть данных, а также, поскольку данные растут в памяти или запускаются несколько наборов, будет занимать все больше времени.

Смежные вопросы