INSPIRRED FROM https://github.com/upscalesoftware/newrelic-query-builder
The New Relic Query Language (NRQL) is an SQL-flavored query language for making calls against the Insights Events database.
This project is a PHP library for assembling NRQL queries in object-oriented applications. Library implements the official NRQL specification. It offers a "fluent" interface to specify query parts in an arbitrary order. That allows different application parts to influence the query w/o worrying about the query assembly order. Query integrity validation is performed upon rendering. Library provides object-oriented representation for complex elements of NRQL syntax. That enables code completion and avoids typos in contrast to plain text queries.
Library is to be installed via Composer as a project dependency in composer.json
:
{
"require": {
"rapiddive/nrql-builder": "*"
}
}
The example below demonstrates a query with all available clauses:
use Carbon\Carbon;
use Rapiddive\NrqlBuilder\Moment\ExactTime;
use Rapiddive\NrqlBuilder\Moment\TimeAgo;
use Rapiddive\NrqlBuilder\Moment\Yesterday;
use Rapiddive\NrqlBuilder\QueryBuilder;
use Rapiddive\NrqlBuilder\TimePeriod;
$nrql = new QueryBuilder();
$nrql->select([
'userAgentName',
])
->from([
'PageView',
])
->where('userAgentOS = "Windows"')
->facet('countryCode')
->limit(20)
->since(new TimeAgo(new TimePeriod(4, TimePeriod::UNIT_DAYS)))
->until(new Yesterday())
->compareWith(new ExactTime(new Carbon('2015-01-01 00:00:00')))
->timeSeries(new TimePeriod(1, TimePeriod::UNIT_HOURS));
echo $nrql;
Some complex aspects of the NRQL syntax have not been implemented in an object-oriented manner. These include Aggregator Functions, Math Operators and logical operators (AND
, OR
, grouping). However, the library allows to utilize as complex expressions as needed in place of string arguments.
Free-format string arguments:
- Attributes of
SELECT
statement, including optionalAS
clause - Conditions of
WHERE
clause - Attribute of
FACET
clause
Licensed under the Apache License, Version 2.0.