Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/robrwo/dbix-class-helper-resultset-windowfunctions
Add support for window functions to DBIx::Class
https://github.com/robrwo/dbix-class-helper-resultset-windowfunctions
dbix perl-module
Last synced: about 1 month ago
JSON representation
Add support for window functions to DBIx::Class
- Host: GitHub
- URL: https://github.com/robrwo/dbix-class-helper-resultset-windowfunctions
- Owner: robrwo
- Created: 2018-05-22T12:27:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-24T15:32:54.000Z (about 2 months ago)
- Last Synced: 2024-09-25T06:27:30.677Z (about 2 months ago)
- Topics: dbix, perl-module
- Language: Perl
- Homepage: https://metacpan.org/pod/DBIx::Class::Helper::ResultSet::WindowFunctions
- Size: 63.5 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
Awesome Lists containing this project
README
# NAME
DBIx::Class::Helper::WindowFunctions - Add support for window functions and aggregate filters to DBIx::Class
# VERSION
version v0.7.0
# SYNOPSIS
In a resultset:
```perl
package MyApp::Schema::ResultSet::Wobbles;use base qw/DBIx::Class::ResultSet/;
__PACKAGE__->load_components( qw/
Helper::WindowFunctions
/);
```Using the resultset:
```perl
my $rs = $schema->resultset('Wobbles')->search_rs(
undef,
{
'+select' => {
avg => 'fingers',
-filter => { hats => { '>', 1 } },
-over => {
partition_by => 'hats',
order_by => 'age',
},
},
'+as' => 'avg',
}
);
```# DESCRIPTION
This helper adds rudimentary support for window functions and aggregate filters to
[DBIx::Class](https://metacpan.org/pod/DBIx%3A%3AClass) resultsets.It adds the following keys to the resultset attributes:
## -over
This is used for window functions, e.g. the following adds a row number columns
```perl
'+select' => {
row_number => [],
-over => {
partition_by => 'class',
order_by => 'score',
},
},
```which is equivalent to the SQL
```
ROW_NUMBER() OVER ( PARTITION BY class ORDER BY score )
```You can omit either the `partition_by` or `order_by` clauses.
## -filter
This is used for filtering aggregate functions or window functions, e.g. the following clause
```perl
'+select' => {
count => \ 1,
-filter => { kittens => { '<', 10 } },
},
```is equivalent to the SQL
```
COUNT(1) FILTER ( WHERE kittens < 10 )
```You can apply filters to window functions, e.g.
```perl
'+select' => {
row_number => [],
-filter => { class => { -like => 'A%' } },
-over => {
partition_by => 'class',
order_by => 'score',
},
},
```which is equivalent to the SQL
```
ROW_NUMBER() FILTER ( WHERE class like 'A%' ) OVER ( PARTITION BY class ORDER BY score )
```The `-filter` feature was added v0.6.0.
# CAVEATS
This module is experimental.
Not all databases support window functions.
# SUPPORT FOR OLDER PERL VERSIONS
Since v0.7.0, the this module requires Perl v5.20 or later.
Future releases may only support Perl versions released in the last ten years.
# SEE ALSO
[DBIx::Class](https://metacpan.org/pod/DBIx%3A%3AClass)
# SOURCE
The development version is on github at [https://github.com/robrwo/DBIx-Class-Helper-ResultSet-WindowFunctions](https://github.com/robrwo/DBIx-Class-Helper-ResultSet-WindowFunctions)
and may be cloned from [git://github.com/robrwo/DBIx-Class-Helper-ResultSet-WindowFunctions.git](git://github.com/robrwo/DBIx-Class-Helper-ResultSet-WindowFunctions.git)# BUGS
Please report any bugs or feature requests on the bugtracker website
[https://github.com/robrwo/DBIx-Class-Helper-ResultSet-WindowFunctions/issues](https://github.com/robrwo/DBIx-Class-Helper-ResultSet-WindowFunctions/issues)When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.# AUTHOR
Robert Rothenberg
# CONTRIBUTOR
Peter Rabbitson
# COPYRIGHT AND LICENSE
This software is Copyright (c) 2018-2024 by Robert Rothenberg.
This is free software, licensed under:
```
The Artistic License 2.0 (GPL Compatible)
```