pixelfederation / druid-php
Installs: 3 123
Dependents: 1
Suggesters: 0
Security: 0
Stars: 34
Watchers: 11
Forks: 14
Open Issues: 2
Requires
- guzzlehttp/guzzle: ^6.2
- jms/serializer: ^1.1
Requires (Dev)
- fabpot/php-cs-fixer: ^1.11
- phpmd/phpmd: ^2.4
- phpunit/php-invoker: ^1.1
- phpunit/phpunit: ^5.3
- sllh/php-cs-fixer-styleci-bridge: ^2.0
- squizlabs/php_codesniffer: ^2.6
README
This library provider a Druid PHP Driver.
License
Instalation
Installation of this library uses composer. For composer documentation, please refer to getcomposer.org.
Put the following into your composer.json
{
"require": {
"pixelfederation/druid-php": "dev-master"
}
}
Current State
Currently this driver supports GroupBy, TopN and Timeseries aggregation types, and Search query type. Everybody is welcome to create pull requests to implement some of the missing things.
Also, some unit tests are bound to running on our internal Druid instance, there is plan to change it to docker container with some testing data.
Usage
Average aggregation
<?php use Druid\Druid; use Druid\Driver\Guzzle\Driver; use Druid\Query\AbstractQuery; use Druid\Query\Component\Granularity\PeriodGranularity; $druid = new Druid( new Driver(), [ 'scheme' => 'http', 'host' => 'localhost', 'port' => '9999', 'path' => '/druid/v2', 'proxy' => 'tcp://127.0.0.1:8080', // default null 'timeout' => 3.7, // in seconds - default null ] ); $queryBuilder = $druid->createQueryBuilder(AbstractQuery::TYPE_GROUP_BY); // or AbstractQuery::TYPE_TIMESERIES $queryBuilder->setDataSource('kpi_registrations_v1'); $queryBuilder->addInterval(new \DateTime('2000-01-01'), new \DateTime()); $granularity = new PeriodGranularity('P1D', 'UTC'); $queryBuilder->setGranularity($granularity); $queryBuilder->addAggregator($queryBuilder->aggregator()->count('count_rows')); $queryBuilder->addAggregator($queryBuilder->aggregator()->doubleSum('sum_rows', 'event_count_metric')); $queryBuilder->addAggregator($queryBuilder->aggregator()->hyperUnique('registrations', 'registrations')); // Only include for GroupBy queries $queryBuilder->addDimension('project', 'project'); $queryBuilder->addPostAggregator( $queryBuilder->postAggregator()->arithmeticPostAggregator( 'average', '/', [ $queryBuilder->postAggregator()->fieldAccessPostAggregator('sum_rows', 'sum_rows'), $queryBuilder->postAggregator()->fieldAccessPostAggregator('count_rows', 'count_rows') ] ) ); $response = $druid->send($queryBuilder->getQuery());
Contribution
If you'd like to contribtue, we strongly recommend to run
./bin/setup-dev
from the project directory. This script will set up a commit hook, which checks the PSR/2 coding standards using PHPCS and also runs PHP linter and PHP Mess Detector PHPMD
TODO
- Query types
- Metadata Queries
- Time Boundary
- Segment Metadata
- Datasource Metadata
- Metadata Queries
- Components
- Data source
- query
- Aggregations
- Cardinality aggregator
- Data source