如何使用流分析查询呈现 JSON

How to render JSON using Stream Analytics Query

我有 JSON 形式的输入存储在 Blob 存储中 我的输出形式为 SQL Azure table.

我编写的查询并成功地将 JSON 中特定 属性 的值移动到 SQL Azure table 的相应列 table。

现在对于一列,我想将整个 JSON 有效负载复制为一个 sql 列中的序列化字符串,但我没有获得适当的库函数来执行此操作。

SELECT
     CASE 
        WHEN GetArrayLength(E.event) > 0
            THEN GetRecordPropertyValue(GetArrayElement(E.event, 0), 'name')
        ELSE ''
    END AS EventName 
    ,E.internal.data.id as DataId
    ,E.internal.data.documentVersion as DocVersion

    ,E.context.custom As CustomDimensionsPayload

Into OutputTblEvents
FROM InputBlobEvents E

这个CustomDimensionsPayload实际上应该是JSON

我创建了一个用户定义函数,它为我完成了工作:

function main(InputJSON) {
    var InputJSONString = JSON.stringify(InputJSON);
    return InputJSONString;
}

然后,在查询中,我使用了这样的函数:

SELECT udf.ConvertToJSONString(COLLECT()) AS InputJSON
INTO outputX
FROM inputY

如果您希望转换整个有效负载,则只需引用输入对象本身而不是 COLLECT()。我也在尝试这样做,所以我想我会添加我所做的。

我使用了 PerSchjetne 建议的相同函数,查询就变成了

SELECT udf.JSONToString(IoTInputStream)
INTO [SQLTelemetry]
FROM [IoTInputStream]

您的输出现在将是完整的 JSON 字符串,包括 IOT 中心添加的所有额外元数据。