У меня есть приложение, в котором я получаю & ежедневные отчеты о продажах из разных источников. Все структурированы по-разному, поэтому я храню данные в своих Postgres db в отдельных таблицах.Является ли это эффективным способом создания отчетов/аналитики продаж?
В настоящее время я делаю что-то подобное, чтобы перебирать за последние 30 дней продажи одного источника, и, похоже, он работает очень хорошо. Моя забота заключается в том, насколько эффективна масштабируемость &, когда я добавлю дополнительные источники отчетов так, как это было у меня в настоящее время, это означает, что мне придется добавлять и повторять большие объемы кода для каждого нового источника.
<% from = Date.today - 30 %> #30 days ago
<% to = Date.today %> #Today
<% step_date = from %>
<% source_one_chart_data = [] %> #Initialise empty array to later pass to JS Chart library
<% begin %>
<% count = @product.sales_source_one.total.where(:report_date => step_date).count %> #check if there are any sales for this product on the current step date
<% if count != 0 %>
<% sale = @product.sum_total_net_by_day(step_date) %>
<% source_one_chart_data.push(sale.to_s) %> #Push sales total to array if sales exist on that date
<% else %>
<% source_one_chart_data.push("0") %> #Otherwise push a zero into array so all 30 days map to a value
<% end %>
<% step_date += 1.day %> #Increase step_date by 1 on each iteration of the loop
<% end while step_date <= to %> #Stop loop when we reach to date
Может ли кто-нибудь предложить какие-либо рекомендации по эффективному привлечению дополнительных источников сбыта без повторения кода? Кроме того, было бы хорошо, если бы я мог изменить шаг от дня к неделе/месяцу/году и вычислить его соответственно; поэтому, если источник продаж сообщается ежедневно, а шаг - неделя, он будет суммировать все значения, которые происходят на шаговой неделе.
Ах, я склоняюсь к тому, чтобы начать с того, чтобы начать с него, а затем снова вернуться к модели/контроллеру, как только у меня получится поток. Ваш ответ велик, но это определенно поможет много! благодаря – Raoot