0

我正在使用 Azure 流作业来解析来自 IoT 中心的传入 JSON 数据。我什至在使用...

CROSS APPLY GetArrayElements(event.NestedRows) as nestedrows

...在每个事件中扩展和非规范化其他事件 - 效果很好,没有问题。

但是,我有一个字符串类型的新 JSON 属性,它实际上是一个嵌入式 JSON 数组。例如:

{ 
    "escapedArray": "[ 1, 2, 3 ]" 
}

我也想在这个数组上使用 CROSS APPLY,但是我看不到任何解析字符串并将其转换为 JSON 数组的方法。

我考虑了一个用户定义函数(UDF),但我读到它只能返回缩放器,而不是数组。

我在 Stream Job 中是否缺少解析此字符串的技巧,或者我是否必须在 Stream Job 之前在事件流中扩展它?

(仅供参考,我无法在设备事件源中更改此流。)

-约翰

4

1 回答 1

0

根据官方教程,您可以在流分析中创建 UDF 以将字符串转换为数组。

如下定义了一个 UDF udf.toJson

function main(arrStr) {
    return JSON.parse(arrStr);
}

然后在 Query 中使用 UDFescapedArray以返回一个数组。

SELECT
    UDF.toJson(escapedArray) as uarr
INTO
    [YourOutputAlias]
FROM
    [YourInputAlias]

我的测试结果如下图。

在此处输入图像描述

希望能帮助到你。

于 2017-09-15T08:23:46.077 回答