我有一些 JSON 数据进入 IOT 集线器,然后触发一个函数来取消嵌套数据。
该函数将此数据发送到事件中心,然后数据应该由 Azure 数据资源管理器根据我设置的映射来摄取。
问题是没有数据进入数据浏览器;它将通过映射接收数据的唯一方法是将源设置为通过自定义路由接收信息的事件中心。
是否可以通过 IOT 中心 -> 功能 -> 事件中心在数据浏览器中摄取数据?
编辑:
用于取消嵌套并将数据转发到另一个事件中心的函数:
module.exports = async function (context, eventHubMessages) {
// receive message from IOT hub
eventHubMessages.forEach((message, index) => {
var devicename = message.deviceName;
// timestamp comes in two different texts, find and store correct one
var timestamp = (message.timestamp == null) ? message.timeStamp : message.timestamp;
//context.log("Message: " + JSON.stringify(message));
if (message.tags != null) {
message.tags.forEach((tag, index) => {
// for each tag, create new object
var name = tag.Name;
var value = tag.Value;
var newObject = {
"name":name,
"value": value,
"eventenqueuedutctime": timestamp,
"devicename": devicename
}
// output message object to 'splitmessage-dev' event hub
context.bindings.outputEventHubMessage = newObject
context.log("Sent object: " + JSON.stringify(newObject));
})
}
});
};
我可以确认另一个事件中心正在接收此数据(使用另一个打印传入消息的函数进行检查)。
映射如下所示:
'testTableMap' '[{"column":"name", "path":"$.name"},
{"column":"value", "path":"$.value"},
{"column":"eventenqueuedutctime", "path":"$.eventenqueuedutctime"},
{"column":"devicename", "path":"$.devicename"}]'