イベント プロセッサ エディターを使用してイベント データを処理する
イベント プロセッサ エディターはコードなしのエクスペリエンスであり、イベント データ処理ロジックをドラッグ アンド ドロップで設計できます。 この記事では、エディターを使用して処理ロジックを設計する方法について説明します。
Note
現在、イベントストリームを作成すると、拡張機能が既定で有効になります。 標準機能を使用して作成されたイベントストリームがある場合、それらのイベントストリームは引き続き機能します。 通常どおりに編集や使用を続けられます。 新しいイベントストリームを作成して標準のイベントストリームを置き換えることをお勧めします。そうすることで、強化されたイベントストリームの追加機能と利点を利用できます。
前提条件
開始する前に、次の前提条件を満たしている必要があります。
- 共同作成者以上のアクセス許可を使用した Fabric 容量ライセンス モード (または試用版ライセンス モード) でのワークスペースへのアクセス。
エディターを使用してイベント処理を設計する
コードなしのエディターを使用してデータ ストリームに対してストリーム処理操作を実行するには、次の手順に従います。
編集モードになっていない場合は、リボンの [編集] を選択します。 接続されている操作のアップストリーム ノードにスキーマがあることを確認します。
イベント プロセッサ エディターでこのイベントストリームと宛先の間にイベント処理演算子を挿入するには、次の 2 つの方法のいずれかを使います。
接続線から演算子を直接挿入します。 接続線にカーソルを合わせて、[+] +ボタンを選びます。 接続線にドロップダウン メニューが表示され、このメニューから演算子を選択できます。
リボン メニューまたはキャンバスから演算子を挿入します。
[フィールドの管理] 演算子ノードを選択します。 [フィールドの管理] 構成パネルで、出力するフィールドを選びます。 すべてのフィールドを追加する場合は、[すべてのフィールドを追加] を選びます。 組み込み関数を使用して新しいフィールドを追加し、アップストリームからのデータを集計することもできます。 (現在、サポートされている組み込み関数は、文字列関数、日付と時刻関数、数学関数の一部の関数です。それらを見つけるには "組み込み" で検索してください
built-in
)。[フィールドの管理] 演算子を構成したら、[更新] を選択して、この演算子によって生成されたテスト結果を検証します。
構成エラーがある場合は、下部ペインの [作成エラー] タブに表示されます。
テスト結果が正しければ、[発行] を選択してイベント処理ロジックを保存し、ライブ ビューに戻ります。
これらの手順を完了すると、Eventstream がライブ ビューでデータのストリーミングと処理を開始する方法を視覚化できます。
イベント プロセッサ エディター
イベント プロセッサ エディター (編集モードのキャンバス) を使用すると、データをさまざまな変換先に変換できます。 編集モードに入り、データ ストリームのストリーム処理操作を設計します。
イベント プロセッサ エディターには、キャンバスと下部ペインが含まれており、次のことができます。
- ドラッグ アンド ドロップでイベント データ変換ロジックを構築する。
- 各処理ノードのデータを最初から最後までプレビューする。
- 処理ノード内の作成エラーを検出する。
エディターのレイアウト
- ダイアグラム ビューを含むキャンバス: このペインでは ([操作] メニューから) 演算子を選び、新しく作成された演算子ノードを介して Eventstream と宛先ノードを接続することで、データ変換ロジックを設計できます。 接続線をドラッグ アンド ドロップする、または接続を選んで削除することができます。
- 右編集 ウィンドウ (画像内の 2 つ): このウィンドウでは、選択したノードまたはビュー ストリーム名を構成できます。
- [データ プレビュー] タブと [作成エラー] タブを含む下部ペイン: このペインでは、選んだノードのデータを [データ プレビュー] タブでプレビューします。[作成エラー] タブには、操作ノード内の未完了または誤った構成が一覧表示されます。
サポートされているノードの種類と例
インジェストの前に演算子を追加することをサポートする宛先の種類を次に示します。
- レイクハウス
- Eventhouse (インジェスト前のイベント処理)
- 派生ストリーム
- アクティベーター
Note
インジェスト前演算子の追加をサポートしていない宛先の場合は、まず、演算子の出力として派生ストリームを追加できます。 次に、目的の宛先をこの派生ストリームに追加します。
Lakehouse および KQL Database のイベント プロセッサ (インジェスト前のイベント処理) を使用することで、データを宛先に取り込む前に処理できます。
前提条件
開始する前に、次の前提条件を満たしている必要があります。
- 共同作成者以上のアクセス許可を使用した Fabric 容量ライセンス モード (または試用版ライセンス モード) でのワークスペースへのアクセス。
- レイクハウスまたは KQL データベースが配置されているワークスペースに共同作成者以上のアクセス許可を使用してアクセスできるようにします。
エディターを使用してイベント処理を設計する
イベント プロセッサ エディターを使用してイベント処理を設計するには:
Lakehouse 宛先を追加して、右側のペインに必要なパラメータを入力します。 (詳しい手順については、「Eventstream で宛先を追加および管理する」をご覧ください)。
[イベント プロセッサを開く] を選びます。 [イベント処理エディター] スクリーンが表示されます。
[イベント処理エディター] キャンバスで、Eventstream ノードを選びます。 右側の [Eventstream] ペインでデータ スキーマのプレビューまたはデータ型の変更ができます。
イベント プロセッサ エディターでこのイベントストリームと宛先の間にイベント処理演算子を挿入するには、次の 2 つの方法のいずれかを使います。
接続線から演算子を直接挿入します。 接続線にカーソルを合わせて、[+] ボタンを選びます。 接続線にドロップダウン メニューが表示され、このメニューから演算子を選択できます。
リボン メニューまたはキャンバスから演算子を挿入します。
[フィールドの管理] 演算子ノードを選択します。 [フィールドの管理] 構成パネルで、出力するフィールドを選びます。 すべてのフィールドを追加する場合は、[すべてのフィールドを追加] を選びます。 組み込み関数を使用して新しいフィールドを追加し、アップストリームからのデータを集計することもできます。 (現在、サポートされている組み込み関数は、文字列関数、日付と時刻関数、数学関数の一部の関数です。それらを見つけるには "組み込み" で検索してください)。
[フィールドの管理] 演算子を構成したら、[静的プレビューの更新] を選び、この演算子が生成するデータをプレビューします。
構成エラーがある場合は、下部ペインの [作成エラー] タブに表示されます。
プレビューされたデータが正しいと思われる場合は、[完了] を選んでイベント処理ロジックを保存し、Lakehouse 宛先の構成スクリーンに戻ります。
[追加] を選び、Lakehouse 宛先の作成を完了します。
イベント プロセッサ エディター
イベント プロセッサを使用すると、Lakehouse 宛先に取り込むデータを変換できます。 Lakehouse 宛先を構成すると、Lakehouse 宛先の構成スクリーン中央に [イベント プロセッサを開く] オプションが表示されます。
[イベント プロセッサを開く] を選ぶと、[ イベント処理エディター] スクリーンが起動し、データ変換ロジックを定義できます。
イベント プロセッサ エディターには、キャンバスと下部ペインが含まれており、次のことができます。
- ドラッグ アンド ドロップでイベント データ変換ロジックを構築する。
- 各処理ノードのデータを最初から最後までプレビューする。
- 処理ノード内の作成エラーを検出する。
スクリーン レイアウトはメイン エディターに似ています。 スクリーン レイアウトは、次の画像に示す 3 つのセクションで構成されています。
ダイアグラム ビューを含むキャンバス: このペインでは ([操作] メニューから) 演算子を選び、新しく作成された演算子ノードを介して Eventstream と宛先ノードを接続することで、データ変換ロジックを設計できます。 接続線をドラッグ アンド ドロップする、または接続を選んで削除することができます。
右側の編集ペイン: 選んだ操作ノードを構成する、または Eventstream と宛先のスキーマを表示することができます。
[データ プレビュー] タブと [作成エラー] タブを含む下部ペイン: このペインでは、選んだノードのデータを [データ プレビュー] タブでプレビューします。[作成エラー] タブには、操作ノード内の未完了または誤った構成が一覧表示されます。
作成エラー
作成エラーとは、操作ノードの構成が不完全または正しくないために [イベント プロセッサ エディター] で発生するエラーを指し、イベント プロセッサの潜在的な問題を見つけて修正するのに役立ちます。
作成エラーは、[イベント プロセッサ エディター] の下部のパネルで表示できます。 下部のパネルにはすべての作成エラーが一覧表示され、各作成エラーには 4 つの列があります。
- ノード ID: 作成エラーが発生した操作ノードの ID を示します。
- ノードの種類: 作成エラーが発生した操作ノードの種類を示します。
- レベル: 作成エラーの重大度を示します。致命的と情報の 2 つのレベルがあります。 致命的なレベルの作成エラーは、イベント プロセッサに重大な問題があり、保存または実行できないことを意味します。 情報レベルの作成エラーは、イベント プロセッサに、イベント プロセッサの最適化や改善に役立つヒントや提案があることを意味します。
- エラー: 作成エラーの具体的な情報を示し、作成エラーの原因と影響を簡単に説明します。 [詳細の表示] タブを選択すると、詳細を表示できます。
Eventstream と Eventhouse ではさまざまなデータ型がサポートされているため、データ型変換のプロセスで作成エラーが発生する可能性があります。
次の表は、Eventstream から Eventhouse へのデータ型変換の結果を示しています。 列は Eventstream でサポートされているデータ型を表し、行は Eventhouse でサポートされるデータ型を表します。 セルは変換結果を示します。次の 3 つのいずれかになります。
✔️ は変換が成功することを示します。エラーや警告は発生しません。
❌ は変換不可能を示します。致命的な作成エラーが発生します。 エラー メッセージは次のようになります。列 "{1}" のデータ型 "{0}" が、選択した KQL テーブルの予期される型 "{2}" と一致しません。
⚠️ は変換が可能だが不正確であることを示し、情報レベルの作成エラーが発生します。 エラー メッセージは次のようになります。列 "{1}" のデータ型 "{0}" が、選択した KQL テーブルの予期される型 "{2}" と正確には一致しません。 "" に{2}自動変換されます。
string | bool | datetime | 動的 | guid | INT | long | real | TimeSpan | decimal | |
---|---|---|---|---|---|---|---|---|---|---|
Int64 | ❌ | ❌ | ❌ | ✔️ | ❌ | ⚠️ | ✔️ | ⚠️ | ❌ | ✔️ |
Double | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ⚠️ |
String | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Datetime | ⚠️ | ❌ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Record | ⚠️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Array | ⚠️ | ❌ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
表からわかるように、string から string への変換など、一部のデータ型変換は成功します。 これらの変換では、作成エラーは発生せず、イベント プロセッサの操作には影響しません。
int から string など、一部のデータ型変換は不可能です。 これらの変換によって致命的なレベルの作成エラーが発生し、イベント プロセッサの保存に失敗します。 これらのエラーを回避するには、Eventstream または KQL テーブルでデータ型を変更する必要があります。
一部のデータ型変換 (int から real など) は、可能ですが、正確ではありません。 これらの変換では、データ型どうしの不一致と自動変換の結果を示す情報レベルの作成エラーが発生します。 これらの変換により、データの精度や構造が失われる可能性があります。 これらのエラーを無視するか、Eventstream または KQL テーブルでデータ型を変更してイベント プロセッサを最適化するかを選択できます。
変換演算子
イベント プロセッサには、ビジネス ニーズに応じてイベント データを変換するために使用できる 6 つの演算子が用意されています。
集計
[集計] 変換を使用すると、一定期間内に新しいイベントが発生するたびに、集計 ([合計]、[最小]、[最大]、または [平均]) を計算できます。 この操作では、これらの計算列の名前を変更したり、データ内の他のディメンションに基づいて集計をフィルター処理またはスライスしたりすることもできます。 同じ変換に 1 つ以上の集計を含めることができます。
- 演算子名: 集計操作の名前を指定します。
- 集計関数の追加: 集計操作で 1 つ以上の集計を追加します。
- 種類: 集計の種類 (合計、最小、最大、または平均) を選択します。
- フィールド: 処理する列を選択します。
- 名前: この集計関数の名前を定義します。
- 以下によるパーティション: 集計をグループ化する列を選択します。
- 次の日数以内に値を集計: 集計の時間枠を指定します (既定値は 5 秒)。
展開
配列の展開変換は、配列内の値ごとに新しい行を作成する場合に使用します。 見つからない配列/空の配列に対して行を作成するか、見つからない配列/空の配列に対して行を作成しないかを選択できます。
Assert
フィルター変換を使用して、入力のフィールドの値に基づいてイベントをフィルター処理します。 データ型 (数値やテキスト) に応じて、変換では選択した条件に一致する値が保持されます (たとえば、is null、is not null など)。
グループ化
グループ化変換を使用して、特定の時間ウィンドウ内のすべてのイベントの集計を計算します。 1 つまたは複数のフィールドの値でグループ化することができます。 これは集計変換で列の名前を変更できることに似ていますが、より多くの集計オプションが用意されており、より複雑な時間枠のオプションが含まれています。 集計と同様に、変換ごとに複数の集計を追加できます。
変換で使用できる集計は次のとおりです。
- 平均
- Count
- 最大値
- 最小
- パーセンタイル (連続および不連続)
- Standard Deviation
- 合計
- Variance
タイム ストリーミング シナリオでは、テンポラル ウィンドウに含まれているデータに対する操作の実行は一般的なパターンです。 イベント プロセッサではウィンドウ関数 (Group by 演算子と統合されています) がサポートされます。 この演算子の設定で定義できます。
フィールドの管理
フィールドの管理変換では、入力または別の変換から受信するフィールドに対して、追加、削除、データ型の変更、または名前の変更を行うことができます。 作業ウィンドウの設定で、[フィールドの追加] を選んで新しいフィールドを追加したり、複数のフィールドを追加したり、すべてのフィールドを一度に追加したりできます。
また、組み込み関数を使用して新しいフィールドを追加し、アップストリームからのデータを集計することもできます。 (現在、サポートされている組み込み関数は、文字列関数、日付と時刻関数、数学関数の一部の関数です。それらを見つけるには "組み込み" で検索してください)。
次の表は、フィールドの管理を使用してデータ型を変更した結果を示しています。 列は元のデータ型を表し、行は変更先のデータ型を表します。
- セルに✔️がある場合は、直接変換が可能で、ターゲット データ型オプションがドロップダウン リストに表示されることを意味します。
- セルに ❌ がある場合は、直接変換が不可能で、ターゲット データ型オプションがドロップダウン リストに表示されないことを意味します。
- セルに ️⚠ がある場合は、変換可能ですが、文字列形式がターゲット データ型の要件に準拠している必要があるなど、特定の条件を満たす必要があることを意味します。 例えば、文字列から整数に変換する場合、文字列は
123
のような有効な整数形式でなければなりません。abc
のような形式ではいけません。
Int64 | Double | String | Datetime | Record | Array | |
---|---|---|---|---|---|---|
Int64 | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
Double | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
String | ⚠️ | ⚠️ | ✔️ | ⚠️ | ❌ | ❌ |
Datetime | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
Record | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ |
Array | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ |
Union (結合)
UNION 変換は、2 つ以上のノードを接続し、共有フィールド (名前とデータ型が同じ) を持つイベントを 1 つのテーブルに追加するために使用します。 一致しないフィールドは削除され、出力に含まれません。
Join
結合変換を使用することにより、選択したフィールドのペアに基づいて、2 つの入力からのイベントを組み合わせます。 フィールドのペアを選択しない場合、結合は、既定で時間に基づきます。 この既定によって、この変換をバッチ変換とは異なるものにしています。
通常の結合と同様に、結合ロジック用のオプションがあります。
- 内部結合: ペアが一致する両方のテーブルからのレコードのみが含まれます。
- 左外部結合: 左側 (最初) のテーブルからのすべてのレコードと、フィールドのペアと一致する、2 番目のテーブルからのレコードのみが含まれます。 一致するものがない場合、2 番目の入力からのフィールドは空白になります。