[Azure Stream Analytics] TRY_CAST の利用

BI Data Platform (SQL Server) Support Team 山崎実久

Azure Stream Analytics のジョブを実行中、SQL Database への出力が行われず、以下のようにデータ型変換の警告が表示される場合があります。

cve11 (002)   cve10 (002)

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月時点の情報です。

以上、お役に立てたら幸いです。