Overview
A measure is what is being counted (or aggregated in another way). For example, if you want to count Post
s created over time, then the measure would be post
:
measure: post
dimensions:
- created_at
You can use any model as the measure. If you want to use multiple models in one report, see Series.
To create the chart above, simply add the following YAML file and call render_report
in any view:
YAML
config/reports_kit/reports/measures_overview.yml
measure: post dimensions: - created_at
View
app/views/my_controller/my_view.html.haml
= render_report 'measures_overview'
Model
app/models/post.rb
class Post < ApplicationRecord belongs_to :author has_many :post_views, dependent: :destroy has_many :posts_tags, dependent: :destroy has_many :tags, through: :posts_tags include ReportsKit::Model reports_kit do aggregation :average_time_to_publish, [:average, 'posts.published_at - posts.created_at'] contextual_filter :for_author, ->(relation, context_params) { relation.where(author_id: context_params[:author_id]) } dimension :approximate_views_count, group: 'ROUND(posts.views_count, -1)' filter :is_published, :boolean, conditions: ->(relation) { relation.where(status: 'published') } end STATUSES = %w(draft private published).freeze def to_s title end end
Model's Columns
id integer author_id integer title string status string published_at datetime is_featured boolean views_count integer created_at datetime updated_at datetime