<?php 
declare(strict_types=1); 
 
error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 
 
include __DIR__ . '/../vendor/autoload.php'; 
include __DIR__ . '/helpers/ConsoleLogger.php'; 
include __DIR__ . '/helpers/ConsoleTable.php'; 
 
use Level23\Druid\DruidClient; 
use Level23\Druid\Filters\FilterBuilder; 
use Level23\Druid\Extractions\ExtractionBuilder; 
use Level23\Druid\Context\GroupByV2QueryContext; 
 
try { 
    $client = new DruidClient(['router_url' => 'http://127.0.0.1:8888']); 
 
    // Enable this to see some more data 
    $client->setLogger(new ConsoleLogger()); 
 
    // Build a groupBy query. 
    $builder = $client->query('wikipedia') 
        ->interval('2015-09-12 00:00:00', '2015-09-13 00:00:00') 
        ->select('__time', 'hour', function (ExtractionBuilder $extractionBuilder) { 
            $extractionBuilder->timeFormat('yyyy-MM-dd HH:00:00'); 
        }) 
        ->select('page', 'edited_page') 
        ->select('namespace') 
        ->count('edits') 
        ->longSum('added') 
        ->longSum('deleted') 
        ->where('isRobot', 'false') 
        ->where('channel', '!=', '#vi.wikipedia') 
        ->whereIn('isNew', ['true', 'false']) 
        ->Where(function (FilterBuilder $filterBuilder) { 
            $filterBuilder->orWhere('namespace', 'Talk'); 
            $filterBuilder->orWhere('namespace', 'Main'); 
        }) 
        ->limit(10) 
        ->orderBy('edits', 'desc') 
        ->having('edits', '>', '5'); 
 
    // Example of setting query context. It can also be supplied as an array in the groupBy() method call. 
    $context = new GroupByV2QueryContext(); 
    $context->setMaxOnDiskStorage(1024 * 1024); 
 
    // Execute the query. 
    $response = $builder->groupBy($context); 
 
    // Display the result as a console table. 
    new ConsoleTable($response->data()); 
} catch (Exception $exception) { 
    echo "Something went wrong during retrieving druid data\n"; 
    echo $exception->getMessage() . "\n"; 
    echo $exception->getTraceAsString(); 
}
 
 |