rapiddive/nrql-builder

New Relic 查询语言 (NRQL) 查询构建器

1.0.1 2024-08-28 05:43 UTC

This package is auto-updated.

Last update: 2024-09-28 06:22:43 UTC


README

灵感来源于 https://github.com/upscalesoftware/newrelic-query-builder

Build Status

NRQL 查询构建器

New Relic 查询语言 (NRQL) 是一种类似于 SQL 的查询语言,用于对 Insights 事件数据库进行调用。

本项目是一个 PHP 库,用于在面向对象的程序中组装 NRQL 查询。库实现了官方的 NRQL 规范。它提供了一个“流畅”的接口来指定查询部分的任意顺序。这允许不同的应用程序部分影响查询,而无需担心查询组装的顺序。在渲染时执行查询完整性验证。库为 NRQL 语法中的复杂元素提供了面向对象的表示。这可以实现代码补全并避免文本查询中的错误。

安装

库应通过 Composercomposer.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 语法的某些复杂方面尚未以面向对象的方式实现。这些包括 聚合函数数学运算符和逻辑运算符(ANDOR、分组)。然而,库允许使用所需的复杂表达式作为字符串参数的替代。

自由格式字符串参数

  • SELECT语句的属性,包括可选的AS子句
  • WHERE子句的条件
  • FACET子句的属性

许可证

根据Apache 许可证 2.0 版本许可。