Skip to content

Instantly share code, notes, and snippets.

@ChasManRors
Last active October 29, 2018 18:55
Show Gist options
  • Save ChasManRors/6fb1d3044e67681e394a9107359a66f1 to your computer and use it in GitHub Desktop.
Save ChasManRors/6fb1d3044e67681e394a9107359a66f1 to your computer and use it in GitHub Desktop.
campaign_ids = []
planogram_counts = []
photo_compliance_counts = []
compliance_div_planograms = []
ActiveRecord::Base.logger.level = 5
campaigns = Campaign.where(:launched_at => 12.month.ago..Time.now)
# campaigns = campaigns[2..255]
puts "campaigns.count = #{campaigns.count}"
require "benchmark"
puts(Benchmark.measure {
campaigns.each_with_index{ |camp, index|
campaign_ids[index] = camp.id
planos = Planogram.query(campaign: camp, start_campaign: camp)
planogram_counts[index] = planos.count
photo_compliance_count = planos.map{ |plano| plano.requires_photo_compliance? }.select{ |a| a }.count
photo_compliance_counts[index] = photo_compliance_count
compliance_div_planograms[index] = ((photo_compliance_count/planogram_counts[index].to_f) * 100).round(2)
puts "c(#{camp.id}), r(#{photo_compliance_count}), p(#{planos.count})"
}
})
total_campaigns_count = campaigns.count
total_planograms_count = planogram_counts.sum
total_photo_compliances_count = photo_compliance_counts.sum
require 'csv'
CSV.open("#{SITE}_photo_compliance_by_campaign.csv", 'w') do |out_csv|
out_csv << ["Campaign id", "Planogram count", "number of planograms requiring photo compliance", "Percent"]
campaign_ids.each_with_index{ |_c,index|
out_csv << [campaign_ids[index], planogram_counts[index], photo_compliance_counts[index], compliance_div_planograms[index] ]
}
out_csv << ["========", "========","========", "========" ]
out_csv << [
total_campaigns_count.to_s,
total_planograms_count.to_s,
total_photo_compliances_count.to_s,
((total_photo_compliances_count/total_planograms_count.to_f) * 100).round(2)
]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment