rapiddive / nrql-builder
New Relic 查询语言 (NRQL) 查询构建器
1.0.1
2024-08-28 05:43 UTC
Requires
- php: >=8.0 | >=7.4
- nesbot/carbon: ^3.8
Requires (Dev)
- phpunit/phpunit: ~4.0 || ^9
- symfony/polyfill: ^1.30
README
灵感来源于 https://github.com/upscalesoftware/newrelic-query-builder
NRQL 查询构建器
New Relic 查询语言 (NRQL) 是一种类似于 SQL 的查询语言,用于对 Insights 事件数据库进行调用。
本项目是一个 PHP 库,用于在面向对象的程序中组装 NRQL 查询。库实现了官方的 NRQL 规范。它提供了一个“流畅”的接口来指定查询部分的任意顺序。这允许不同的应用程序部分影响查询,而无需担心查询组装的顺序。在渲染时执行查询完整性验证。库为 NRQL 语法中的复杂元素提供了面向对象的表示。这可以实现代码补全并避免文本查询中的错误。
安装
库应通过 Composer 在 composer.json
中作为项目依赖项进行安装
{ "require": { "rapiddive/nrql-builder": "*" } }
用法
以下示例演示了一个包含所有可用子句的查询
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;
限制
NRQL 语法的某些复杂方面尚未以面向对象的方式实现。这些包括 聚合函数、数学运算符和逻辑运算符(AND
、OR
、分组)。然而,库允许使用所需的复杂表达式作为字符串参数的替代。
自由格式字符串参数
SELECT
语句的属性,包括可选的AS
子句WHERE
子句的条件FACET
子句的属性
许可证
根据Apache 许可证 2.0 版本许可。