在 Azure 流分析查询中同时使用数组和记录类型
Posted
技术标签:
【中文标题】在 Azure 流分析查询中同时使用数组和记录类型【英文标题】:Working with both Array and Record type in Azure Stream Analytics query 【发布时间】:2018-02-02 15:50:59 【问题描述】:我是 Azure 流分析查询的新手。我的方案是使用连续导出将 Application Insight 遥测数据写入 Azure Blob 存储,并使用流分析作业将数据从 Blob 存储推送到 Power BI。我的 json 文件同时具有 Array 和 Request 类型,如下所示:
"request": [
"id": "|HLHUdGy4c3g=.556f8524_",
"name": "HEAD Todos/Index",
"count": 1,
"responseCode": 200,
"success": true,
"url": "http://todoapp20183001.azurewebsites.net/",
"urlData":
"base": "/",
"host": "todoapp20183001.azurewebsites.net",
"hashTag": "",
"protocol": "http"
,
"durationMetric":
"value": 973023,
"count": 1,
"min": 973023,
"max": 973023,
"stdDev": 0,
"sampledValue": 973023
],
"internal":
"data":
"id": "124c5c1c-0820-11e8-a590-d95f25fd3f7f",
"documentVersion": "1.61"
,
"context":
"data":
"eventTime": "2018-02-02T13:50:39.591Z",
"isSynthetic": false,
"samplingRate": 100
,
"cloud": ,
"device":
"type": "PC",
"roleName": "todoapp20183001",
"roleInstance": "RD0003FF6D001A",
"screenResolution":
,
"user":
"isAuthenticated": false
,
"session":
"isFirst": false
,
"operation":
"id": "HLHUdGy4c3g=",
"parentId": "HLHUdGy4c3g=",
"name": "HEAD Todos/Index"
,
"location":
"clientip": "35.153.211.0",
"continent": "North America",
"country": "United States",
"province": "Virginia",
"city": "Ashburn"
,
"custom":
"dimensions": [
"_MS.ProcessedByMetricExtractors": "(Name:'Requests', Ver:'1.0')"
]
使用以下查询,我可以收到预期的输出。
WITH Request AS
(
SELECT
context.location.country as country,
context.location.city as city,
GetArrayElement(request,0) as requests
FROM FromBlob
)
SELECT country, city, requests.name
FROM Request
现在我需要按城市计算所有请求,但我似乎无法使用 COUNT() 和 GROUP BY() 完成它。在这种情况下是否有提示或参考?
【问题讨论】:
您能否使用 Count 和 Group By 发布您的尝试,它应该可以工作。 它不起作用,因为我要分组的列(国家)不存在。 我认为我必须使用 javascript UDF 将 context.location.city 转换为某种东西,然后才能按它进行分组。我不确定该怎么做! 【参考方案1】:这是一个每 5 分钟计算一次请求数的示例。 请注意,我必须向 GROUB BY 添加一个时间组件,因为您的数据是流式数据,并且您希望在有限的时间内进行聚合。
WITH Request AS
(
SELECT
context.location.country as country,
context.location.city as city,
GetArrayElement(request,0) as requests
FROM iothub
)
SELECT country, city, count(requests.name)
FROM Request
group by country,city,SlidingWindow(minute,5)
让我知道它是否适合你。
【讨论】:
以上是关于在 Azure 流分析查询中同时使用数组和记录类型的主要内容,如果未能解决你的问题,请参考以下文章