Я борюсь с правильным синтаксисом для столбца усреднения. Что у меня есть - от редактора RavenDB Studio:

Карта:

from area in docs.Level5_AdministrativeAreas
select new 
{
     area.NAME_4,
     totalPrice = area.pricePerSquareMetre,
     areaCount = 1,
     priceAverage = 0
}

Сокращение :

from result in results
group result by new { result.NAME_4 } into g
select new 
{
   NAME_4 = g.Key.NAME_4,
   totalPrice = g.Sum(x => x.totalPrice),
   areaCount = g.Sum(x => x.areaCount),
   priceAverage = totalPrice / areaCount
}

Подсчет и общая стоимость рассчитываются правильно, но я не знаю, как ссылаться на totalPrice и areaCount.

Требуется ли дополнительный блок выбора? Я попытался "g.totalPrice" & "g.priceAverage", но он не распознается.

Спасибо за помощь !

2
Hiro Protagonist 28 Фев 2020 в 17:57

2 ответа

Лучший ответ

Часть Reduce должна быть такой:

< Сильный > Сокращение :

from result in results
group result by new { result.NAME_4 } into g
let theCount = g.Sum(x => x.areaCount)
let theTotal = g.Sum(x => x.totalPrice)
select new 
{
   NAME_4 = g.Key.NAME_4,
   totalPrice = theTotal,
   areaCount = theCount ,
   priceAverage = theTotal / theCount 
}

=> Прочитать раздел Распространенные проблемы с индексами MapReduce

5
Danielle 1 Мар 2020 в 08:21

Вероятно, не идеал, но это работает (говорить о том, чтобы не видеть лес за деревьями ...)

priceAverage = g.Sum(x => x.totalPrice) / g.Sum(x => x.areaCount)
2
Hiro Protagonist 29 Фев 2020 в 18:09