在 Azure 流分析中的属性内提取数组
Posted
技术标签:
【中文标题】在 Azure 流分析中的属性内提取数组【英文标题】:Extracting Array inside a Property in Azure Stream Analytics 【发布时间】:2018-04-14 19:57:16 【问题描述】:到目前为止,我没有运气通过流分析作业从 JSON 字符串中提取某些宽格式的值。
JSON 格式如下:
"devicename":"demo","msgtime":"2018-04-13T11:00:00.0000000Z",
"payload":["Sensor":"one","Value":1.817,"Unit":"W",
"Sensor":"two","Value":0.481,"Unit":"W",
"Sensor":"three","Value":0.153,"Unit":"W"]
我正在尝试以以下格式获取它:
name one two three
demo 1.817 0.481 0.153
… … … …
我尝试使用“Cross APPLY GetPropertyValues(input)”获取值,但无法以宽格式获取。
【问题讨论】:
【参考方案1】:有一篇博客文章描述了您的场景的查询模式: Using Azure Stream Analytics javascript UDF to lookup values in JSON array.
【讨论】:
这现在是一个死链接,您能否在此处将该博客文章的相关部分添加到您的实际答案中?【参考方案2】:试试下面的代码
SELECT
localInput.devicename,
udf.getValue('one', localInput.payload) as One,
udf.getValue('two', localInput.payload) as Two,
udf.getValue('three', localInput.payload) as Three
FROM localInput;
function main(identifier, arr)
var result = null;
if (Object.prototype.toString.call(arr) == "[object Array]")
for (i = 0; i < arr.length; i++)
if (arr[i].type == identifier)
result = arr[i].value;
return result;
【讨论】:
以上是关于在 Azure 流分析中的属性内提取数组的主要内容,如果未能解决你的问题,请参考以下文章