Azure Stream Analytics ジョブからAzure SQLデータベース テーブルへ書き込む

Azure Stream Analytics では、ストリーミング クエリの出力として Azure SQL Database がサポートされています。 このアーティクルでは、Azure portalで stream Analytics ジョブ用の出力としてSQL Databaseを使用する方法について説明します。

前提条件

  1. Stream Analytics ジョブを作成します。

  2. Stream Analytics ジョブが出力を書き込むAzure SQL データベースを作成します。

SQL Databaseで新しいテーブルに書き込む

このセクションでは、まだ作成されていない Azure SQL データベース内のテーブルに書き込むジョブを構成する方法について説明します。

  1. Stream Analytics ジョブで、[ジョブ トポロジ][出力] を選択します。 追加 をクリックし、SQL Database を選択します。

    Stream Analytics での SQL DB 出力を示すスクリーンショット。

  2. ジョブのクエリで使用される出力の別名を選択します。 データベース名と認証モードを指定します。 SQL 出力構成オプションの詳細を確認できます。

  3. Azure SQL Databaseに作成するテーブル名を入力します。 [保存] をクリックします。 注: この出力を保存しても、SQL Databaseにテーブルは作成されません。 次のステップでは、テーブルがいつ作成されるのかについて詳しく説明します。

    Stream Analytics での SQL DB 出力構成を示すスクリーンショット。

  4. [ジョブ トポロジ][ クエリ ] を選択し、クエリの別名を使用して、前のステップで指定したテーブル名に出力を書き込みます。 [クエリのテスト] をクリックしてクエリ ロジックをテストし、ジョブによって生成される出力のスキーマを示す テスト結果 を表示します。 注: クエリをテストするには、入力ソースに受信ストリーミング データが必要か、または、サンプル データをアップロードしてクエリをテストする必要があります。 Stream Analytics のテスト クエリの詳細を確認できます。

    Stream Analytics でのクエリ テストを示すスクリーンショット。

    Stream Analytics でのクエリ テストの結果を示すスクリーンショット。

  5. [ SQL テーブル スキーマ] をクリックして、列名と型を表示します。 [ テーブルの作成] をクリックすると、SQL データベースにテーブルが作成されます。

    Stream AnalyticsからSQL データベースのテーブルの作成を表示するスクリーンショット。

    Stream Analytics クエリが異なるスキーマを生成するように変更された場合は、SQL Databaseでテーブル定義を変更する必要があります。 これにより、Stream Analytics ジョブでシンクへの書き込み中にデータ変換エラーが発生しないようにします。

  6. クエリが最後になったら、[概要] を選択してジョブを開始します。 SQL Database テーブルに移動すると、ストリーミング クエリの出力を確認できます。

SQL Databaseから既存のテーブルを選択する

このセクションでは、Azure SQL Database に既に存在するテーブルに書き込むジョブを構成する方法について説明します。

  1. Stream Analytics ジョブで、[ジョブ トポロジ][出力] を選択します。 追加 をクリックし、SQL Database を選択します。

    Stream Analytics での SQL DB 出力を示すスクリーンショット。

  2. ジョブのクエリで使用される出力の別名を選択します。 データベース名と認証モードを指定します。 SQL 出力構成オプションの詳細を確認できます。

  3. 選択したSQL Databaseから既存のテーブルを選択するには、SQL 認証の詳細を入力します。 これにより、データベースからテーブル名のリストが読み込まれます。 リストからテーブル名を選択するか、テーブル名と保存を手動で入力します。

    SQL データベースの既存のテーブルを表示するスクリーンショット。

  4. [ジョブ トポロジ] [クエリ] を選択し、クエリの別名を使用して、選択したテーブルに出力を書き込みます。 [ クエリのテスト ] をクリックしてクエリ ロジックをテストし、 テスト結果を表示します。 注: クエリをテストするには、イベント ハブ/IoT Hub に受信ストリーミング データが必要か、または、サンプル データをアップロードしてクエリをテストする必要があります。 Stream Analytics のテスト クエリの詳細を確認できます。

    Stream Analytics でのクエリ テストを示すスクリーンショット。

    Stream Analytics でのクエリ テストの結果を示すスクリーンショット。

  5. [SQL テーブル スキーマ] タブでは、受信データの列名とその型と、選択したテーブルに表示できます。 受信データ型と選択した SQL テーブルが一致するかどうかの状態を確認できます。 一致しない場合は、テーブル スキーマに一致するようにクエリを更新するように求められます。

    Stream Analytics でのスキーマ比較を示すスクリーンショット。

  6. クエリが最後になったら、[概要] を選択してジョブを開始します。 SQL Database テーブルに移動すると、ストリーミング クエリの出力を確認できます。

データ型不一致の一般的な理由

Stream Analytics ジョブの出力が、SQL Database テーブルで予期される列名とデータ型と一致していることを確認することが重要です。 不一致がある場合、ジョブはデータ変換エラーに陥り、SQL テーブル定義が変更されるまで継続的に再試行します。 ジョブのビヘイビアーを変更して、データ変換エラーの原因となる出力をドロップし、次の出力に進むことができます。 スキーマの不一致の最も一般的な理由を以下に示します。

  • 型の不一致: クエリとターゲットの型に互換性がありません。 行は変換先に挿入されません。 TRY_CAST() などの 変換関数 を使用して、クエリ内の型を配置します。 別のオプションとして、SQL データベース内の変換先テーブルを変更することもできます。
  • 範囲: 対象の型の範囲は、クエリで使用される範囲よりもかなり小さくなります。 範囲外の値を持つ行は、変換先テーブルに 挿入したり、切り詰めることはできません。 変換先の列を、より大きな型範囲に変更することを検討してください。
  • 暗黙的: クエリとターゲットの種類は異なりますが、互換性があります。 データは暗黙的に変換されますが、これによりデータが失われたり、エラーが発生したりする可能性があります。 TRY_CAST() などの 変換関数 を使用して、クエリ内の型を配置したり、変換先テーブルを変更したりします。
  • レコード: この型は、この出力ではまだサポートされていません。 値は文字列 に置き換えられます。 データ を解析するか、UDF を使用して 文字列に変換することを検討してください。
  • 配列: この型は、Azure SQL Database では、まだネイティブにサポートされていません。 値は文字列 に置き換えられます。 データ を解析するか、UDF を使用して 文字列に変換することを検討してください。
  • 変換先テーブルに存在しない列: この列は、変換先テーブルに存在しません。 データは挿入されません。 必要に応じて、この列を変換先テーブルに追加します。

次のステップ