Azure Stream Analytics からの出力

Azure Stream Analytics ジョブは、入力、クエリ、および出力で構成されます。 変換されたデータを送信できる出力の種類はいくつかあります。 この記事では、サポートされている Stream Analytics の出力の一覧を示します。 Stream Analytics のクエリを自分で作成するときは、INTO 句を使用して出力の名前を指定します。 ジョブごとに 1 つの出力を使用できます。または、必要に応じて、クエリ内に複数の INTO 句を追加することによって、ストリーミング ジョブごとに複数の出力を使用できます。

Stream Analytics ジョブの出力を作成、編集、テストするには、Azure portalAzure PowerShell.NET APIREST APIVisual StudioVisual Studio Code を使用できます。

Note

最良のローカル開発エクスペリエンスを実現するためには、Stream Analytics Tools for Visual Studio Code を使用することを強くお勧めします。 Stream Analytics Tools for Visual Studio 2019 (バージョン 2.6.3000.0) には既知の機能差があり、それは今後改善されません。

次の表に示すように、一部の出力の種類では、パーティション分割がサポートされています。

バッチ処理はすべての出力でサポートされますが、出力バッチ サイズを明示的に設定できるのは一部のみです。 詳細については、「出力バッチ サイズ」セクションを参照してください。

出力の種類 パーティション分割 セキュリティ
Azure Data Explorer はい マネージド ID
Azure Functions はい アクセス キー
Azure Synapse Analytics はい SQL ユーザー認証、
マネージド ID
Blob Storage と Azure Data Lake Gen 2 はい アクセス キー、
マネージド ID
Azure Cosmos DB はい アクセス キー、
マネージド ID
Azure Data Lake Storage Gen 2 はい Microsoft Entra ユーザー
マネージド ID
Azure Event Hubs はい。出力構成でパーティション キー列を設定する必要があります。 アクセス キー、
マネージド ID
Kafka (プレビュー) はい。出力構成でパーティション キー列を設定する必要があります。 アクセス キー、
マネージド ID
Azure Database for PostgreSQL はい ユーザー名とパスワード認証
Power BI いいえ Microsoft Entra ユーザー、
マネージド ID
Azure Service Bus キュー はい アクセス キー、
マネージド ID
Azure Service Bus トピック はい アクセス キー、
マネージド ID
Azure SQL Database はい、省略可能です。 SQL ユーザー認証、
マネージド ID
Azure Table Storage はい アカウント キー

重要

Azure Stream Analytics では、設計により Insert または Replace API が使用されます。 この操作により、既存のエンティティが置き換えられ、テーブルにエンティティが存在しない場合には新しいエンティティが挿入されます。

パーティション分割

Stream Analytics では、Power BI を除くすべての出力用のパーティションがサポートされています。 パーティション キーと出力ライターの数の詳細については、関心がある特定の出力の種類に関する記事を参照してください。 出力の種類に関する記事は、前のセクションでリンクされています。

また、パーティションの高度なチューニングとして、出力ライターの数は、クエリ内の INTO <partition count> (INTO に関するページを参照してください) 句を使用して制御することができます。これは、目的のジョブ トポロジを実現するのに役立ちます。 出力アダプターがパーティション分割されていない場合、ある入力パーティションにデータがないと、到着遅延時間までの遅延が発生します。 このような場合は、出力が 1 つのライターにマージされるため、ご使用のパイプラインにボトルネックが発生する可能性があります。 到着遅延ポリシーの詳細については、Azure Stream Analytics のイベントの順序に関する考慮事項に関する記事を参照してください。

出力バッチ サイズ

バッチ処理はすべての出力でサポートされますが、バッチ サイズを明示的に設定できるのは一部のみです。 Azure Stream Analytics では、イベントを処理して出力に書き込むために、可変サイズのバッチを使用します。 通常、Stream Analytics エンジンでは、一度に 1 つのメッセージを書き込むことはせず、効率を上げるためにバッチを使用します。 受信イベントと送信イベントのレートが両方とも高い場合は、Stream Analytics では、大きいバッチを使用します。 エグレス レートが低い場合は、小さいバッチを使用して待ち時間が短い状態を維持します。

Avro と Parquet のファイル分割の動作

Stream Analytics クエリでは、特定の出力に対して複数のスキーマを生成できます。 投影される列とその種類の一覧は、行ごとに変更できます。 設計上、Avro と Parquet の形式では、1 つのファイル内で可変スキーマはサポートしません。

次の形式を使用して、可変スキーマを含むストリームを出力に転送するときに、次の動作が発生する可能性があります。

  • スキーマの変更が検出されると、現在の出力ファイルが閉じられ、新しいスキーマで新しい出力ファイルが初期化されます。 このようにファイルを分割すると、スキーマの変更が頻繁に発生する場合、出力の速度が大幅に低下します。 この動作は、ジョブの全体的なパフォーマンスに重大な影響を与えるおそれがあります
  • スキーマの変更を検出できない場合、行は拒否される可能性が最も高く、行を出力できないため、ジョブは停止したままになります。 入れ子になった列または複数の型の配列は、検出されず、拒否される状況です。

厳密に型指定された Avro または Parquet 形式、または書き込み時のスキーマを使用する出力を検討し、それらをターゲットとするクエリをそのように (均一スキーマの明示的な変換と投影を) 記述することを強くお勧めします。

複数のスキーマを生成する必要がある場合は、複数の出力を作成し、WHERE 句を使用してレコードを各宛先に分割することを検討してください。

Parquet 出力バッチ処理ウィンドウのプロパティ

Azure Resource Manager テンプレートのデプロイまたは REST API を使用する場合、2 つのバッチ処理ウィンドウ プロパティは次のとおりです。

  1. timeWindow

    バッチあたりの最大待機時間。 値は Timespan の文字列である必要があります。 たとえば、2 分の場合は 00:02:00 になります。 この時間が経過すると、最小行数の要件が満たされていなくても、バッチは出力に書き込まれます。 既定値は 1 分であり、最大許容値は 2 時間です。 BLOB 出力にパス パターンの頻度がある場合は、待機時間をパーティションの時間の範囲より長くすることはできません。

  2. sizeWindow

    バッチあたりの最小行数。 Parquet の場合、すべてのバッチによって新しいファイルが作成されます。 現在の既定値は 2,000 行であり、最大許容値は 10,000 行です。

これらのバッチ処理ウィンドウ プロパティは、API バージョン 2017-04-01-preview 以降でのみサポートされます。 REST API 呼び出しの JSON ペイロードの例を次に示します。

"type": "stream",
      "serialization": {
        "type": "Parquet",
        "properties": {}
      },
      "timeWindow": "00:02:00",
      "sizeWindow": "2000",
      "datasource": {
        "type": "Microsoft.Storage/Blob",
        "properties": {
          "storageAccounts" : [
          {
            "accountName": "{accountName}",
            "accountKey": "{accountKey}",
          }
          ],

次のステップ