Azure Stream Analytics C# UDF на Edge с использованием комплексного параметра
У меня есть сценарий, когда устройство отправляет данные в этом формате
[
{
"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 ответ
Объект Payload - это массив, который поддерживается в UDF Stream Analytics C#. Ваша подпись функции должна выглядеть так:
public static string SampleUDF(Object[] input)
Вы не должны увидеть ошибку с этим. Дайте мне знать, если вы все еще сталкиваетесь с проблемами.