json - 在 Azure 流分析中处理数组
问题描述
我将这个 JSON 结构提供给我的 ASA:
[{
"Stages": [
{
"Name": "Stage 1",
"Count": 45,
"First": "2018-12-17T11:31:12.7448439-04:00",
"Average": 1.0,
"Max": 0.0
},
{
"Name": "Stage 2",
"Count": 7,
"First": "2018-12-17T11:31:12.7448469-04:00",
"Average": 0.0,
"Max": 0.0
}
],
"DateTimeET": "2018-12-17T11:31:12.7448477-04:00",
"Division": "One"
}]
我被困在如何获取 Stages Array 中每个元素的 Name、Count、First、Average 和 Max。
我这样做了:
WITH CTE AS (
SELECT
event.Division
,event.DateTimeET
,StageElement
FROM
StageSummary AS event
CROSS APPLY getarrayelements(event.Stages) AS StageElement
)
SELECT
event2.Division
,event2.DateTimeET
,event2.StageElement
FROM
CTE AS event2
我可以使用 GetRecordProperties 获取数组,但我又得到了完整的数组,我无法获得特定的“名称”或“计数”
任何帮助表示赞赏。
更新:
我正在使用如下查询:
WITH CTE AS (
SELECT
event.Division
,event.DateTimeET
,StageElement
FROM
StageSummary AS event
CROSS APPLY getarrayelements(event.Stages) AS StageElement
)
SELECT
event2.Division
,event2.DateTimeET
,getrecordpropertyvalue(Elements,'Name') AS NameValue
FROM
CTE AS event2
CROSS APPLY getrecordproperties(event2.StageElement) AS Elements
但 NameValue 返回空。
解决方案
由于我的 Stages 数组的结构是固定的,因此解决方案是使用 ArrayValue 来查询每个元素,如下所示:
SELECT
event.Division
,event.DateTimeET
,StageElement.ArrayValue.Name
,StageElement.ArrayValue.Count
,StageElement.ArrayValue.First
,StageElement.ArrayValue.Average
,StageElement.ArrayValue.Max
FROM
StageSummary AS event
CROSS APPLY getarrayelements(event.Stages) AS StageElement
这给了我我需要的价值观。我缺少 ArrayValue 来引用实际数据,因为 GetArrayElements 返回 ArrayValue 和 ArrayIndex
推荐阅读
- c# - Blazor EditForm with custom fluent validator, remove rule while updating
- javascript - 使用自定义数据获取 React Hook 时编辑数据?
- powerbi - Filter out values higher and lower - Power BI
- azure - Azure 搜索服务不显示索引
- javascript - 无法在角度材料自动完成中从 [displayWith] 调用另一个方法
- java - 带有代理的无限循环和 StackOverflow
- ios - 在 XCode 9.2 中使用 IOS SDK 13
- python - PySpark - 根据列的类型将列分解为行
- java - 使用 Stream 从列表中查找匹配昂贵条件的最后一个元素
- c++ - 尝试使用标头 C++ 时遇到问题