Microsoft SQL Server 데이터 원본에 연결 - Amazon Managed Grafana

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Microsoft SQL Server 데이터 원본에 연결

Microsoft SQL Server (MSSQL) 데이터 원본을 사용하여 Microsoft Azure SQL 데이터베이스를 비롯한 모든 Microsoft SQL Server 2005 이상의 최신 버전에서 데이터를 쿼리하고 시각화할 수 있습니다.

중요

Grafana 버전 8.0은 마이크로소프트 SQL 서버, Postgres 및 MySQL의 데이터 프레임에 대한 기본 데이터 구조를 변경합니다. 따라서 시계열 쿼리 결과가 다양한 형식으로 반환됩니다. 자세한 내용은 Grafana 데이터 프레임 설명서의 와이드 포맷을 참조하십시오.

시각화가 이전처럼 작동하도록 하려면 몇 가지 수동 마이그레이션을 수행해야 할 수 있습니다. 한 가지 해결 방법은 Github의 Postgres/MySQL/MSSQL에 설명되어 있습니다. 바로 시계열 쿼리 및 데이터 열 순서와 관련된 v8.0의 주요 변경 사항입니다.

데이터 소스 추가

  1. 상단 헤더에서 Grafana 아이콘을 선택하여 사이드 메뉴를 엽니다.

  2. 구성 링크 아래의 사이드 메뉴에서 데이터 소스 링크를 찾을 수 있습니다.

  3. 상단 헤더에서 + 데이터 소스 추가 버튼을 선택합니다.

  4. 유형 드롭다운 목록에서 Microsoft SQL Server를 선택합니다.

데이터 소스 옵션

명칭 설명
Name 데이터 소스 이름. 패널 및 쿼리에서 데이터 소스를 보는 방법은 다음과 같습니다.
Default 기본 데이터 소스는 새 패널에 사용할 데이터 소스가 미리 선택된다는 의미입니다.
Host MSSQL 인스턴스의 IP 주소/호스트 이름 및 선택적 포트 포트를 생략하면 기본값 1433이 사용됩니다.
Database MSSQL 데이터베이스의 이름.
User 데이터베이스 사용자의 로그인/사용자 이름.
Password 데이터베이스 사용자 비밀번호.
Encrypt 이 옵션은 보안 SSL TCP/IP 연결을 서버와 협상할지 여부 또는 범위를 결정합니다 (기본값) (falseGrafana v5.4+).
Max open 데이터베이스에 대한 열린 최대 연결 수, 기본값 unlimited (Grafana v5.4+).
Max idle 유휴 연결 풀의 최대 연결 수, 기본값 2 (Grafana v5.4+).
Max lifetime 연결을 재사용할 수 있는 최대 시간 (초), 기본값은 /4시간입니다. 14400

최소 시간 간격

$_interval$_interval_ms변수의 하한값입니다. 예를 들어 데이터가 1분마다 기록되는 1m 경우 쓰기 빈도로 설정하는 것이 좋습니다. 대시보드 패널의 데이터 소스 옵션에서 이 옵션을 재정의/구성할 수도 있습니다. 이 값은 숫자 뒤에 유효한 시간 식별자가 오는 형식이어야 합니다 (예: 1m (1분) 또는 (30초)). 30s 지원되는 시간 식별자는 다음과 같습니다.

식별자 설명
y 연도
M
w
d
h 시간
m
s
ms 밀리초

데이터베이스 사용자 권한

중요

데이터 원본을 추가할 때 지정하는 데이터베이스 사용자에게는 쿼리하려는 지정된 데이터베이스 및 테이블에 대한 SELECT 권한만 부여해야 합니다. Grafana는 쿼리가 안전한지 확인하지 않습니다. 쿼리에는 모든 SQL 문이 포함될 수 있습니다. 예를 들어, DELETE FROM user; 및 와 DROP TABLE user; 같은 명령문이 실행됩니다. 이를 방지하려면 권한이 제한된 특정 MSSQL 사용자를 생성하는 것이 좋습니다.

다음 예제 코드는 권한이 제한된 특정 MSSQL 사용자를 생성하는 방법을 보여줍니다.

CREATE USER grafanareader WITH PASSWORD 'password' GRANT SELECT ON dbo.YourTable3 TO grafanareader

사용자가 공개 역할에서 원치 않는 권한을 얻지 않았는지 확인하세요.

알려진 문제

2008 및 2008R2 같은 이전 버전의 Microsoft SQL Server를 사용하는 경우 연결할 수 있으려면 암호화를 사용하지 않도록 설정해야 할 수 있습니다. 가능하면 호환성을 최적화하기 위해 사용 가능한 최신 서비스 팩을 사용하는 것이 좋습니다.

쿼리 편집기

그래프, Singlestat 또는 테이블 패널의 편집 모드의 메트릭 탭에서 MSSQL 쿼리 편집기를 찾을 수 있습니다. 패널 제목을 선택한 다음 편집을 선택하면 편집 모드로 전환됩니다. 편집기를 사용하면 시각화할 데이터를 선택하는 SQL 쿼리를 정의할 수 있습니다.

  1. 형식 형식 Time series (그래프 또는 Singlestat 패널 중에서 사용) 또는 Table (테이블 패널에서 사용) 을 선택합니다.

  2. 이 편집기는 SQL 쿼리를 작성하는 실제 편집기입니다.

  3. 쿼리 편집기 아래에 MSSQL에 대한 도움말 섹션을 표시합니다.

  4. 실행된 SQL 쿼리를 표시합니다. 쿼리가 성공적으로 실행된 후 가장 먼저 사용할 수 있습니다.

  5. 추가 쿼리 편집기가 표시될 추가 쿼리를 추가합니다.

매크로

구문을 단순화하고 날짜 범위 필터와 같은 동적 부분을 허용하기 위해 쿼리에 매크로가 포함될 수 있습니다.

매크로 예제 설명
$__time(dateColumn) 열 이름을 time으로 바꾸는 표현식으로 대체됩니다. 예를 들어 날짜/열을 시간으로 표시합니다.
$__timeEpoch(dateColumn) DATETIME 열 유형을 Unix 타임스탬프로 변환하고 이름을 time으로 바꾸는 표현식으로 대체됩니다. 예를 들어 DATEDIFF (두 번째, “1970-01-01", 날짜 열) 를 시간으로 지정합니다.
$__timeFilter(dateColumn) 지정된 열 이름을 사용하는 시간 범위 필터로 대체됩니다. 예를 들어 “2017-04-21T 05:01:17 Z”와 “2017-04-21T 05:06:17 Z” 사이에 있는 날짜 열을 예로 들 수 있습니다.
$__timeFrom() 현재 활성화된 시간 선택이 시작되는 날짜로 대체됩니다. 예를 들어 “2017-04-21T 05:01:17 Z”를 예로 들 수 있습니다.
$__timeTo() 현재 활성화된 시간 선택이 끝난 시점으로 대체됩니다. 예를 들어 “2017-04-21T 05:06:17 Z”를 예로 들 수 있습니다.
$__timeGroup(dateColumn,'5m'[, fillvalue]) GROUP BY 절에서 사용할 수 있는 표현식으로 대체됩니다. FillValue를 NULL 또는 부동 값으로 제공하면 시간 범위의 빈 시리즈가 해당 값으로 자동으로 채워집니다. 예를 들어 CAST (ROUND (DATEDIFF (두 번째, “1970-01-01", time_column) /300.0, 0) 을 bigint로 표시) *300을 예로 들 수 있습니다.
$__timeGroup(dateColumn,'5m', 0) 이전과 동일하지만 채우기 매개 변수를 사용하므로 grafana가 해당 시리즈에서 누락된 점을 추가하고 0이 값으로 사용됩니다.
$__timeGroup(dateColumn,'5m', NULL) 위와 동일하지만 누락된 포인트의 값으로는 NULL이 사용됩니다.
$__timeGroup(dateColumn,'5m', previous) 위와 동일하지만 아직 값이 보이지 않으면 해당 시리즈의 이전 값이 채우기 값으로 사용됩니다 (Grafana 5.3+에서만 사용 가능).

쿼리 편집기에는 쿼리가 실행된 후 패널 편집 모드에서 표시되는 생성된 SQL 링크가 있습니다. 선택하면 확장되어 실행된 원시 보간 SQL 문자열이 표시됩니다.

테이블 쿼리

쿼리 옵션을 테이블 형식으로 설정하면 기본적으로 모든 유형의 SQL 쿼리를 수행할 수 있습니다. 테이블 패널에는 쿼리가 반환하는 모든 열과 행의 결과가 자동으로 표시됩니다.

다음 예제 코드는 데이터베이스 테이블을 보여줍니다.

CREATE TABLE [event] ( time_sec bigint, description nvarchar(100), tags nvarchar(100), )
CREATE TABLE [mssql_types] ( c_bit bit, c_tinyint tinyint, c_smallint smallint, c_int int, c_bigint bigint, c_money money, c_smallmoney smallmoney, c_numeric numeric(10,5), c_real real, c_decimal decimal(10,2), c_float float, c_char char(10), c_varchar varchar(10), c_text text, c_nchar nchar(12), c_nvarchar nvarchar(12), c_ntext ntext, c_datetime datetime, c_datetime2 datetime2, c_smalldatetime smalldatetime, c_date date, c_time time, c_datetimeoffset datetimeoffset ) INSERT INTO [mssql_types] SELECT 1, 5, 20020, 980300, 1420070400, '$20000.15', '£2.15', 12345.12, 1.11, 2.22, 3.33, 'char10', 'varchar10', 'text', N'☺nchar12☺', N'☺nvarchar12☺', N'☺text☺', GETDATE(), CAST(GETDATE() AS DATETIME2), CAST(GETDATE() AS SMALLDATETIME), CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME), SWITCHOFFSET(CAST(GETDATE() AS DATETIMEOFFSET), '-07:00')

다음 예제 코드는 쿼리를 보여줍니다.

SELECT * FROM [mssql_types]

다음 예제 코드와 같이 일반 AS SQL 열 선택 구문을 사용하여 테이블 패널 열의 이름을 제어할 수 있습니다.

SELECT c_bit as [column1], c_tinyint as [column2] FROM [mssql_types]

결과 테이블 패널:

시계열 쿼리

예를 들어 그래프 패널에서 사용하기 위해 형식을 시계열로 설정하는 경우 쿼리에는 SQL 날짜/시간 또는 Unix 에포크 (초) 를 나타내는 숫자 데이터 유형을 time 반환하는 이름이 지정된 열이 있어야 합니다. 값 열의 지표 이름으로 사용되는 이름을 가진 metric 열을 반환할 수 있습니다. timemetric 를 제외한 모든 열은 값 열로 취급됩니다. metric열을 생략하면 값 열의 이름이 지표 이름이 됩니다. 값 열을 여러 개 선택할 수 있으며, 각 열의 이름은 지표로 지정됩니다. 여러 개의 값 열을 반환하고 이름이 지정된 열을 metric 반환하면 이 열이 시리즈 이름의 접두사로 사용됩니다.

시계열 쿼리의 결과 집합은 시간을 기준으로 정렬해야 합니다.

다음 예제 코드는 데이터베이스 테이블을 보여줍니다.

CREATE TABLE [event] ( time_sec bigint, description nvarchar(100), tags nvarchar(100), )
CREATE TABLE metric_values ( time datetime, measurement nvarchar(100), valueOne int, valueTwo int, ) INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 12:30:00', 'Metric A', 62, 6) INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 12:30:00', 'Metric B', 49, 11) ... INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 13:55:00', 'Metric A', 14, 25) INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15 13:55:00', 'Metric B', 48, 10)

다음 예제 코드는 value 1열과 metric 1열을 보여줍니다.

SELECT time, valueOne, measurement as metric FROM metric_values WHERE $__timeFilter(time) ORDER BY 1

위의 쿼리를 그래프 패널에서 사용하면 이름이 지정된 시리즈가 두 개 생성되고 값이 Metric A valueOne 포함되며 Metric B 위에 valueTwo 플로팅됩니다. time

다음 예제 코드는 여러 value 열을 보여줍니다.

SELECT time, valueOne, valueTwo FROM metric_values WHERE $__timeFilter(time) ORDER BY 1

위의 쿼리를 그래프 패널에서 사용하면 이름이 지정된 두 시리즈가 생성되고 값이 Metric A valueOne 포함되며 Metric B 위에 valueTwo 플로팅됩니다. time

다음 예제 코드는 $__TimeGroup 매크로를 사용한 방법을 보여줍니다.

SELECT $__timeGroup(time, '3m') as time, measurement as metric, avg(valueOne) FROM metric_values WHERE $__timeFilter(time) GROUP BY $__timeGroup(time, '3m'), measurement ORDER BY 1

그래프 패널에서 이전 쿼리를 사용하면 이름이 지정되고 값이 Metric B valueOne 포함된 두 시리즈가 Metric A 생성되고 위에 플롯됩니다. valueTwo time 3분 동안 두 시리즈에 값이 없으면 두 계열 사이에 선이 그려집니다. 오른쪽 그래프는 절대 0으로 내려가지 않는다는 것을 알 수 있습니다.

다음 예제 코드는 채우기 매개변수가 0으로 설정된 $__TimeGroup 매크로를 사용하는 방법을 보여줍니다.

SELECT $__timeGroup(time, '3m', 0) as time, measurement as metric, sum(valueTwo) FROM metric_values WHERE $__timeFilter(time) GROUP BY $__timeGroup(time, '3m'), measurement ORDER BY 1

그래프 패널에서 이 쿼리를 사용하면 이름이 지정된 Metric A 두 시리즈가 생성되고 그 합계가 위에 그려집니다. Metric B valueTwo time 3분 창에서 값이 없는 모든 시리즈는 값이 0이 되며 오른쪽 그래프에 렌더링된 것을 볼 수 있습니다.

템플릿 작성

메트릭 쿼리에 서버, 애플리케이션, 센서 이름 등을 하드코딩하는 대신 변수를 대신 사용할 수 있습니다. 변수는 대시보드 상단의 드롭다운 선택 상자로 표시됩니다. 이 드롭다운 상자를 사용하여 대시보드에 표시되는 데이터를 변경할 수 있습니다.

템플릿 및 템플릿 변수에 대한 자세한 내용은 을 참조하십시오. 템플릿 및 변수

쿼리 변수

해당 유형의 템플릿 변수를 추가하면 측정 이름Query, 키 이름 또는 드롭다운 선택 상자로 표시되는 키 값 등을 반환할 수 있는 MSSQL 쿼리를 작성할 수 있습니다.

예를 들어, 템플릿 변수 쿼리 설정에서 이와 같은 쿼리를 지정하면 테이블의 hostname 열에 대한 모든 값을 포함하는 변수를 만들 수 있습니다.

SELECT hostname FROM host

쿼리는 여러 열을 반환할 수 있으며 Grafana는 해당 열을 기반으로 목록을 자동으로 생성합니다. 예를 들어 다음 쿼리는 및 값이 포함된 목록을 반환합니다. hostname hostname2

SELECT [host].[hostname], [other_host].[hostname2] FROM host JOIN other_host ON [host].[city] = [other_host].[city]

또 다른 옵션은 키/값 변수를 만들 수 있는 쿼리입니다. 쿼리는 이름이 __text 및 인 열 두 개를 반환해야 합니다. __value __text열 값은 고유해야 합니다 (고유하지 않으면 첫 번째 값이 사용됨). 드롭다운 목록의 옵션에는 텍스트로 친숙한 이름을 텍스트로, id를 값으로 사용할 수 있는 텍스트와 값이 있습니다. 텍스트와 hostname 값을 사용하는 예제 쿼리는 id 다음과 같습니다.

SELECT hostname __text, id __value FROM host

중첩 변수를 만들 수도 있습니다. 이름이 지정된 region 다른 변수가 있는 경우를 예로 들 수 있습니다. 그러면 hosts 변수에 다음과 같은 쿼리를 사용하여 현재 선택한 지역의 호스트만 표시하도록 할 수 있습니다. 값이 여러 개인 변수인 경우 region 여러 값을 = 비교하는 대신 IN 비교 연산자를 사용하십시오.

SELECT hostname FROM host WHERE region IN ($region)

쿼리에 변수 사용

참고

템플릿 변수 값은 템플릿 변수가 multi-value a인 경우에만 인용됩니다.

변수가 다중 값 변수인 경우 여러 값을 = 비교하는 대신 IN 비교 연산자를 사용하십시오.

다음과 같은 두 가지 구문이 있습니다.

$<varname>이름이 지정된 hostname 템플릿 변수를 사용한 예:

SELECT atimestamp time, aint value FROM table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp

[[varname]]이름이 지정된 템플릿 변수를 사용한 예hostname:

SELECT atimestamp as time, aint as value FROM table WHERE $__timeFilter(atimestamp) and hostname in([[hostname]]) ORDER BY atimestamp

다중 값 변수에 대한 인용 끄기

Grafana는 다중 값 변수에 대해 따옴표로 구분된 쉼표로 구분된 문자열을 자동으로 생성합니다. 예를 들어, server01 및 를 선택하면 server02 다음과 같은 형식이 지정됩니다. 'server01', 'server02' 인용 기능을 끄려면 변수에 대한 csv 형식 지정 옵션을 사용하십시오.

${servers:csv}

가변 형식 옵션에 대한 자세한 내용은 을 참조하십시오. 템플릿 및 변수

주석

주석을 사용하여 그래프 위에 풍부한 이벤트 정보를 오버레이할 수 있습니다. 대시보드 메뉴/주석 보기를 통해 주석 쿼리를 추가합니다. 자세한 정보는 주석을 참조하세요.

컬럼:

명칭 설명
time 날짜/시간 필드의 이름. 기본 SQL 날짜/시간 데이터 유형 또는 에포크 값이 있는 열일 수 있습니다.
timeend 종료 날짜/시간 필드의 선택적 이름. 기본 SQL 날짜/시간 데이터 유형 또는 에포크 값이 있는 열일 수 있습니다.
text 이벤트 설명 필드.
tags 이벤트 태그에 사용할 선택적 필드 이름은 쉼표로 구분된 문자열입니다.

다음 예제 코드는 데이터베이스 테이블을 보여줍니다.

CREATE TABLE [events] ( time_sec bigint, description nvarchar(100), tags nvarchar(100), )

에 정의된 데이터베이스 테이블도 사용합니다시계열 쿼리.

다음 예제 코드는 에포크 값이 있는 시간 열을 사용하는 쿼리를 보여줍니다.

SELECT time_sec as time, description as [text], tags FROM [events] WHERE $__unixEpochFilter(time_sec) ORDER BY 1

다음 예제 코드는 에포크 값이 있는 시간 및 타임엔드 열을 사용하는 지역 쿼리를 보여줍니다.

SELECT time_sec as time, time_end_sec as timeend, description as [text], tags FROM [events] WHERE $__unixEpochFilter(time_sec) ORDER BY 1

다음 예제 코드는 네이티브 SQL 날짜/시간 데이터 형식의 시간 열을 사용하는 쿼리를 보여줍니다.

SELECT time, measurement as text, convert(varchar, valueOne) + ',' + convert(varchar, valueTwo) as tags FROM metric_values WHERE $__timeFilter(time_column) ORDER BY 1

저장 프로시저 지원

저장 프로시저가 작동하는 것으로 확인되었습니다. 하지만 예상대로 작동하지 않는 경우가 있을 수 있습니다. 저장 프로시저는 테이블, 시계열 및 주석 쿼리에서 지원되어야 합니다. 단, 각 섹션의 앞부분에서 설명한 것과 동일한 열 이름을 사용하고 동일한 형식으로 데이터를 반환해야 합니다.

매크로 함수는 저장 프로시저 내에서 작동하지 않습니다.

다음 예제의 경우 데이터베이스 테이블은 시계열 쿼리에 정의되어 있습니다. 그래프 패널에 4개의 시리즈 (예: 모든 열 조합valueOne, valueTwomeasurement) 를 시각화한다고 가정해 보겠습니다. 오른쪽 그래프 패널은 우리가 달성하고자 하는 목표를 시각화합니다. 이 문제를 해결하려면 두 가지 쿼리를 사용해야 합니다.

다음 예제 코드는 첫 번째 쿼리를 보여줍니다.

SELECT $__timeGroup(time, '5m') as time, measurement + ' - value one' as metric, avg(valueOne) as valueOne FROM metric_values WHERE $__timeFilter(time) GROUP BY $__timeGroup(time, '5m'), measurement ORDER BY 1

다음 예제 코드는 두 번째 쿼리를 보여줍니다.

SELECT $__timeGroup(time, '5m') as time, measurement + ' - value two' as metric, avg(valueTwo) as valueTwo FROM metric_values GROUP BY $__timeGroup(time, '5m'), measurement ORDER BY 1

시간을 에포크 형식으로 사용하는 저장 프로시저

위와 같이 그래프 패널에서 네 개의 시리즈를 렌더링하는 데 필요한 모든 데이터를 반환하는 저장 프로시저를 정의할 수 있습니다. 이 경우 저장 프로시저는 두 개의 매개 변수와 데이터 형식을 @from 허용하며@to, 이 int 데이터 유형은 에포크 형식의 시간 범위 (부터-까지) 여야 하며, 이 시간 범위는 저장 프로시저에서 반환할 데이터를 필터링하는 데 사용됩니다.

이렇게 하면 $__timeGroup(time, '5m') select 및 Group by 표현식과 비슷하기 때문에 긴 표현식이 많이 필요합니다. 원하는 경우 MSSQL 함수로 추출할 수 있습니다.

CREATE PROCEDURE sp_test_epoch( @from int, @to int ) AS BEGIN SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time, measurement + ' - value one' as metric, avg(valueOne) as value FROM metric_values WHERE time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01') GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int), measurement UNION ALL SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int) as time, measurement + ' - value two' as metric, avg(valueTwo) as value FROM metric_values WHERE time >= DATEADD(s, @from, '1970-01-01') AND time <= DATEADD(s, @to, '1970-01-01') GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, DATEADD(second, DATEDIFF(second,GETDATE(),GETUTCDATE()), time))/600 as int)*600 as int), measurement ORDER BY 1 END

그러면 그래프 패널에 다음 쿼리를 사용할 수 있습니다.

DECLARE @from int = $__unixEpochFrom(), @to int = $__unixEpochTo() EXEC dbo.sp_test_epoch @from, @to

시간을 날짜/시간 형식으로 사용하는 저장 프로시저

위와 같이 그래프 패널에서 네 개의 시리즈를 렌더링하는 데 필요한 모든 데이터를 반환하는 저장 프로시저를 정의할 수 있습니다. 이 경우 저장 프로시저는 두 개의 매개 변수와 datetime 데이터 형식을 @from 허용하며@to, 이 매개 변수는 저장 프로시저에서 반환할 데이터를 필터링하는 데 사용할 시간 범위 (부터-까지) 여야 합니다.

이는 select 표현식과 Group by 표현식과 비슷하기 때문에 긴 표현식이 많이 필요합니다. $__timeGroup(time, '5m') 원하는 경우 MSSQL 함수로 추출할 수 있습니다.

CREATE PROCEDURE sp_test_datetime( @from datetime, @to datetime ) AS BEGIN SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time, measurement + ' - value one' as metric, avg(valueOne) as value FROM metric_values WHERE time >= @from AND time <= @to GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int), measurement UNION ALL SELECT cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int) as time, measurement + ' - value two' as metric, avg(valueTwo) as value FROM metric_values WHERE time >= @from AND time <= @to GROUP BY cast(cast(DATEDIFF(second, {d '1970-01-01'}, time)/600 as int)*600 as int), measurement ORDER BY 1 END

그러면 그래프 패널에 다음 쿼리를 사용할 수 있습니다.

DECLARE @from datetime = $__timeFrom(), @to datetime = $__timeTo() EXEC dbo.sp_test_datetime @from, @to

알림

시계열 쿼리는 알림 조건에서 작동해야 합니다. 테이블 형식의 쿼리는 경고 규칙 조건에서 아직 지원되지 않습니다.