0

我有存储在 Blob 存储中的 JSON 形式的输入我有 SQL Azure 表形式的输出。

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

现在对于一列,我想将整个 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

4

2 回答 2

2

我制作了一个用户定义的函数,它为我完成了这项工作:

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

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

SELECT udf.ConvertToJSONString(COLLECT()) AS InputJSON
INTO outputX
FROM inputY
于 2017-03-07T13:22:39.897 回答
0

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

我使用了 PerSchjetne 建议的相同功能,然后查询变为

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

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

于 2020-04-09T07:40:08.213 回答