upscale / newrelic-query-builder

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

1.0.0 2015-03-08 11:32 UTC

This package is auto-updated.

Last update: 2024-09-18 07:44:23 UTC


README

Build Status

NRQL 查询构建器

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

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

安装

库应通过 Composercomposer.json 中作为项目依赖项进行安装

{
    "require": {
        "upscale/newrelic-query-builder": "*"
    }
}

用法

以下示例演示了一个包含所有可用子句的查询

use Upscale\Nrql\QueryBuilder;
use Upscale\Nrql\TimePeriod;
use Upscale\Nrql\Moment\TimeAgo;
use Upscale\Nrql\Moment\ExactTime;
use Upscale\Nrql\Moment\Yesterday;

$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 \DateTime('2015-01-01 00:00:00')))
    ->timeSeries(new TimePeriod(1, TimePeriod::UNIT_HOURS))
;

echo $nrql;

限制

NRQL 语法的某些复杂方面尚未以面向对象的方式实现。这包括 聚合函数数学运算符和逻辑运算符(ANDOR、分组)。然而,库允许在字符串参数的替代方案中使用所需复杂程度的表达式。

自由格式字符串参数

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

许可证

根据 Apache License, Version 2.0 许可。