将 Application Insights 'availability' 遥测数据流式传输到 SQL
Streaming Application Insights 'availability' telemetry to SQL
我似乎无法使用流分析将可用性遥测推送到 Azure SQL 数据库。没有错误。只是没有插入数据。
输入
我也将输入设置为 Application Insights 导出的 blob 位置。我已经使用 "Sample Data" 功能成功测试了它:
这里是从样本数据拉取的例子(注意我已经简化了内容):
[
{
"availability": [ {
"testRunId": "75e32865-36fa-4853-b9be-43e315a63f6e",
"testTimestamp": "2016-10-19T11:38:58.7370000Z",
"testName": "mytest-prod-pingtest",
"runLocation": "BR : Sao Paulo",
"durationMetric": {
"name": "duration",
"value": 14610000.0,
"count": 1.0,
"min": 14610000.0,
"max": 14610000.0,
"stdDev": 0.0,
"sampledValue": 14610000.0
},
"result": "Pass",
"count": 1
} ],
"internal": {...},
"context": {...},
"EventProcessedUtcTime": "2016-10-19T11:45:53.9144151Z"
}
]
输出
输出配置到 Azure SQL DB table tt.AvailabilityRequests
。测试成功:
此 table 具有以下架构:
CREATE TABLE [tt].[AvailabilityRequests](
[Id] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid()),
[Timestamp] [datetime] NOT NULL,
[AppInsightsTestRunId] [varchar](max) NULL,
[TestName] [varchar](max) NULL,
[RunLocation] [varchar](max) NULL,
[IsSuccessful] [bit] NULL,
[DurationInMilliseconds] [int] NULL,
[InsertedDate] [datetime] NOT NULL DEFAULT (getdate())
)
查询
我配置了以下查询:
SELECT
Flat.ArrayValue.testTimestamp as [Timestamp],
Flat.ArrayValue.testRunId as [AppInsightsTestRunId],
Flat.ArrayValue.testName as [TestName],
Flat.ArrayValue.runLocation as [RunLocation],
CASE WHEN Flat.ArrayValue.result = 'Pass' THEN 1 ELSE 0 END as [IsSuccessful],
CAST(Flat.ArrayValue.durationMetric.value / Flat.ArrayValue.durationMetric.count / 10000 AS BIGINT) as [DurationInMilliseconds]
INTO
availabilityRequests
FROM
availability A
CROSS APPLY
GetElements(A.[availability]) as Flat
我正在用 Request telemetry 做类似的事情,这很好用:
Stream Analytics does not support the "boolean" type; SQL 服务器中的 BIT。
将 [IsSuccessful]
字段更改为 [int]
后正在推送数据。
我似乎无法使用流分析将可用性遥测推送到 Azure SQL 数据库。没有错误。只是没有插入数据。
输入
我也将输入设置为 Application Insights 导出的 blob 位置。我已经使用 "Sample Data" 功能成功测试了它:
这里是从样本数据拉取的例子(注意我已经简化了内容):
[
{
"availability": [ {
"testRunId": "75e32865-36fa-4853-b9be-43e315a63f6e",
"testTimestamp": "2016-10-19T11:38:58.7370000Z",
"testName": "mytest-prod-pingtest",
"runLocation": "BR : Sao Paulo",
"durationMetric": {
"name": "duration",
"value": 14610000.0,
"count": 1.0,
"min": 14610000.0,
"max": 14610000.0,
"stdDev": 0.0,
"sampledValue": 14610000.0
},
"result": "Pass",
"count": 1
} ],
"internal": {...},
"context": {...},
"EventProcessedUtcTime": "2016-10-19T11:45:53.9144151Z"
}
]
输出
输出配置到 Azure SQL DB table tt.AvailabilityRequests
。测试成功:
此 table 具有以下架构:
CREATE TABLE [tt].[AvailabilityRequests](
[Id] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid()),
[Timestamp] [datetime] NOT NULL,
[AppInsightsTestRunId] [varchar](max) NULL,
[TestName] [varchar](max) NULL,
[RunLocation] [varchar](max) NULL,
[IsSuccessful] [bit] NULL,
[DurationInMilliseconds] [int] NULL,
[InsertedDate] [datetime] NOT NULL DEFAULT (getdate())
)
查询
我配置了以下查询:
SELECT
Flat.ArrayValue.testTimestamp as [Timestamp],
Flat.ArrayValue.testRunId as [AppInsightsTestRunId],
Flat.ArrayValue.testName as [TestName],
Flat.ArrayValue.runLocation as [RunLocation],
CASE WHEN Flat.ArrayValue.result = 'Pass' THEN 1 ELSE 0 END as [IsSuccessful],
CAST(Flat.ArrayValue.durationMetric.value / Flat.ArrayValue.durationMetric.count / 10000 AS BIGINT) as [DurationInMilliseconds]
INTO
availabilityRequests
FROM
availability A
CROSS APPLY
GetElements(A.[availability]) as Flat
我正在用 Request telemetry 做类似的事情,这很好用:
Stream Analytics does not support the "boolean" type; SQL 服务器中的 BIT。
将 [IsSuccessful]
字段更改为 [int]
后正在推送数据。