Azure Stream Analytics から、Azure Functions を呼び出すことは、以前からプレビュー機能として利用することができましたが、2018/1月末に正式に GA されました。
以下、Microsoft のブログ記事より
これまで、IoT Hub や Event Hub から Azure Stream Analytics に受け取ったデータを、SQL Database や Service Bus などへ、一旦 出力する必要がありました。
そのため、定期的にデータを確認するようなポーリング型のデータ処理が必要です。データの「保存」と「処理」のタイミングが分かれるため、処理の定期実行の間隔でタイムラグが発生してしまいます。(下記の図参照)
データをトリガとした、プッシュ型の処理にするには、Azure Stream Analytics の出力にさらに Event Hub を指定して、イベントの受け手となるプログラムを別途作成することで対応できましたが、Azure Stream Analytics から Azure Functions が呼び出せるようになったことで、より簡単に実装ができるようになりました。
データの保存と処理を同時に行うことができるので、より遅延の少ない高速なデータ処理が行うことが可能になります。(下記の図参照)
デメリットは、Azure Functions 実行における課金が発生することですが、月間無料使用分として、月あたり100万回のリクエストと、400,000GB秒のリソース使用量が含まれているため、少し試してみる程度であれば無料で利用することができます。(2018/3/21時点 Azure Functions 価格 参照)
IoT 機器からのデータの流れを Azure Functions につなげることで、より遅延の少ない高速なデータ処理連携を Azure PaaS のみで構成することが可能です。
例えば、Azure Functions 側で Azure ML を呼び出し、異常検知や故障検知を行ったり、Azure IoT SDK を利用して IoT Hub につながった IoT 機器の自動機器制御を行ったりすることも可能です。
これらの例を組み合わせて、IoT 機器の状態監視から、成果が最大になるように強化学習を実施し、IoT 機器の自動制御を行い、自動で学習していくシステムを構築するとフレームワークとしていろいろなものに転用できそうなので面白そうですね!