Azure Stream Analytics のジョブを実行中、SQL Database への出力が行われず、以下のようにデータ型変換の警告が表示される場合があります。
Warning の抜粋
Encountered error trying to write 1 event(s): Cannot convert from property 'c2' of type 'System.String' to column 'c2' of type 'System.DateTime
Azure Stream Analytics では、”Error Policy” が既定の “Retry” に設定されている場合、出力になんらかのエラーがでると、job をリトライし続けます。その結果、何度も入力のデータを参照することになり Input Events は上昇し、リソースの利用状況を表す SU % Utilization もそれに伴い上昇します。最終的にリソースを使い切り、ジョブが停止することがあります。
不正な入力データが発生しない対処を行うのが一番ですが、このデータ型変換エラーが発生するような入力が来た場合もエラーを回避し出力を行うために、以下のように Azure Stream Analytics のクエリに TRY_CAST の関数を追加する対応をとることができます。
TRY_CAST() を利用することで、CAST のエラーをハンドリングすることができます。TRY_CAST() では、キャストが成功した場合は指定されたデータ型にキャスト値を返します。それ以外の場合は NULL を返します。
(例)
SELECT
c1,
TRY_CAST(c2 as datetime) as c2
INTO
[sqldbout]
FROM
[blobin]
+ 参考情報
TRY_CAST (Azure Stream Analytics)
“https://msdn.microsoft.com/library/en-us/Mt643735.aspx”
本内容は、2017年12月時点の情報です。
Microsoft SQL Server Japan Support Team blog で公開した内容をこちらでも紹介しています。
https://blogs.msdn.microsoft.com/jpsql/2017/12/04/azure-stream-analytics-try_cast/