Azure Stream Analytics c # UDF на Edge с использованием комплексного параметра - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть сценарий, когда устройство отправляет данные в этом формате

[   
{
 "Metadata":{"DeviceID":"MWS55V","GatewayID":"abc1"},
 "Payload": [{"Type":"401","Data":"17.51"}],
 "Timestamp":"2018-11-01T09:33:05Z"},
{
 "Metadata":{"DeviceID":"MWS55V","GatewayID":"abc1"},
 "Payload": [{"Type":"401","Data":"18.28"}],
 "Timestamp":"2018-11-01T09:34:05Z"
}
]

Я добавил Azure Stream Analytics C # UDF с идеей использовать весь объект в качестве параметра и изменять каждый Payload.Data на основе Payload.Type.

Но когда я пытаюсь передать объект Payload в качестве параметра c# UDF, возникает исключение

Ошибка: ** Системное исключение ** ASA передал неподдерживаемый тип System.Object для маршалинга в CSharp UDF Func с переменной полезной нагрузкой

Единственный способ, которым это работает, - это когда я пробую параметры типа (long, string и т. Д.).

Хотя этот документ явно говорит о поддерживаемых типах, есть ли способ получить весь объект внутри c# udf или этот сервис не самый лучший для этого сценария, и мне нужно использовать что-то еще?

1 Ответ

0 голосов
/ 03 ноября 2018

Объект Payload - это массив, который поддерживается в UDF-операциях Stream Analytics C #. Ваша подпись функции должна выглядеть так:

public static string SampleUDF(Object[] input)

Вы не должны видеть ошибку с этим. Дайте мне знать, если вы все еще сталкиваетесь с проблемами.

...