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)

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

Другие вопросы по тегам