A Ruby gem for grouping temporal data by time periods (day, week, hour, etc.) with time zone and series support.
Groupdate is a Ruby gem that provides a simple, expressive way to group temporal data by time periods like day, week, hour, or month. It solves the problem of aggregating time-series data for analytics, reporting, and visualization by handling time zones, series gaps, and database compatibility automatically.
Ruby on Rails developers and data engineers who need to perform time-based aggregations in their applications, especially for building dashboards, charts, or reports.
Developers choose Groupdate for its dead-simple API, robust time zone handling, and ability to return complete time series without gaps—making it the go-to solution for temporal data grouping in Ruby.
The simplest way to group temporal data
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically manages time zone conversions and daylight saving time, emphasized as 'the best part' in the README for correct temporal grouping.
Returns complete time series with default values to fill missing periods, noted as 'the other best part' for consistent charting and analytics.
Supports a wide range of periods from seconds to years, plus specific parts like hour_of_day, detailed in the 'Getting Started' section for flexible aggregations.
Works with PostgreSQL, MySQL, MariaDB, SQLite, and Redshift, making it adaptable to various backends without vendor lock-in.
Provides a clean, expressive syntax like User.group_by_day(:created_at).count, simplifying complex queries with minimal boilerplate.
Requires manual time zone support installation on MySQL and MariaDB servers, adding deployment overhead as detailed in the 'Additional Instructions' section.
Only supports basic aggregates like count and sum; for median or percentile, integration with ActiveMedian is needed, as noted in the README, increasing dependency management.
Tightly integrated with Ruby and Active Record, limiting effectiveness in polyglot environments or with pure SQL queries without Ruby wrappers.