イベント プロセッサ エディターを使用してイベント データを処理する

Lakehouse 宛先でイベント プロセッサを使用すると、Lakehouse に取り込まれる前にデータを処理できます。 イベント プロセッサ エディターはコードなしのエクスペリエンスであり、イベント データ処理ロジックをドラッグ アンド ドロップで設計できます。 この記事では、エディターを使用して処理ロジックを設計する方法について説明します。

前提条件

開始する前に、次の前提条件を満たしている必要があります。

  • Eventstream が配置されている Premium ワークスペースに、共同作成者以上のアクセス許可を使用してアクセスします。
  • Lakehouse が配置されている Premium ワークスペースに対して、共同作成者以上のアクセス許可を取得します。

エディターを使用してイベント処理を設計する

イベント プロセッサ エディターを使用してイベント処理を設計するには:

  1. Lakehouse 宛先を追加して、右側のペインに必要なパラメータを入力します。 (詳しい手順については、「Eventstream で宛先を追加および管理する」をご覧ください)。

  2. [イベント プロセッサを開く] を選びます。 [イベント処理エディター] スクリーンが表示されます。

    Lakehouse 宛先構成スクリーンで [イベント プロセッサを開く] を選ぶ箇所を示すスクリーンショット。

  3. [イベント処理エディター] キャンバスで、Eventstream ノードを選びます。 右側の [Eventstream] ペインでデータ スキーマのプレビューまたはデータ型の変更ができます。

    [イベント処理エディター] スクリーンの右側ペインのデータ スキーマを示すスクリーンショット。

  4. イベント プロセッサ エディターでこのイベントストリームと宛先の間にイベント処理演算子を挿入するには、次の 2 つの方法のいずれかを使います。

    1. 接続線から演算子を直接挿入します。 接続線にカーソルを合わせて、[+] ボタンを選びます。 接続線にドロップダウン メニューが表示され、このメニューから演算子を選択できます。

      ノードを挿入する接続行のポイント先を示すスクリーンショット。

    2. リボン メニューまたはキャンバスから演算子を挿入します。

      1. リボンの [操作] メニューから演算子を選択できます。 または、接続線を削除した場合は、ノードのいずれかにカーソルを合わせて [+] ボタンを選ぶこともできます。 そのノードの横にドロップダウン メニューが表示され、このメニューから演算子を選択できます。

        [操作] メニューでオペレーターを選択する場所を示すスクリーンショット。

        ノードを挿入するノードのポイント先を示すスクリーンショット。

      2. 最後に、これらのノードを再接続する必要があります。 イベント ストリーム ノードの左端にカーソルを合わせ、緑色の円を選んでドラッグし、[フィールドの管理] 演算子ノードに接続します。 同じプロセスに従って、[フィールドの管理] 演算子ノードを Lakehouse ノードに接続します。

        ノードを接続する箇所を示すスクリーンショット。

  5. [フィールドの管理] 演算子ノードを選択します。 [フィールドの管理] 構成パネルで、出力するフィールドを選びます。 すべてのフィールドを追加する場合は、[すべてのフィールドを追加] を選びます。 組み込み関数を使用して新しいフィールドを追加し、アップストリームからのデータを集計することもできます。 (現在、サポートされている組み込み関数は、文字列関数日付と時刻関数数学関数の一部の関数です。それらを見つけるには "組み込み" で検索してください)。

    演算子の構成方法を示すスクリーンショット。

  6. [フィールドの管理] 演算子を構成したら、[静的プレビューの更新] を選び、この演算子が生成するデータをプレビューします。

    イベント プロセッサ エディターのデータのプレビュー方法を示すスクリーンショット。

  7. 構成エラーがある場合は、下部ペインの [作成エラー] タブに表示されます。

    イベント プロセッサ エディターの作成エラータブを示すスクリーンショット。

  8. プレビューされたデータが正しいと思われる場合は、[完了] を選んでイベント処理ロジックを保存し、Lakehouse 宛先の構成スクリーンに戻ります。

  9. [追加] を選び、Lakehouse 宛先の作成を完了します。

イベント プロセッサ エディター

イベント プロセッサを使用すると、Lakehouse 宛先に取り込むデータを変換できます。 Lakehouse 宛先を構成すると、Lakehouse 宛先の構成スクリーン中央に [イベント プロセッサを開く] オプションが表示されます。

イベント プロセッサ エディターを開く箇所を示すスクリーンショット。

[イベント プロセッサを開く] を選ぶと、[ イベント処理エディター] スクリーンが起動し、データ変換ロジックを定義できます。

イベント プロセッサ エディターには、キャンバスと下部ペインが含まれており、次のことができます。

  • ドラッグ アンド ドロップでイベント データ変換ロジックを構築する。
  • 各処理ノードのデータを最初から最後までプレビューする。
  • 処理ノード内の作成エラーを検出する。

スクリーン レイアウトはメイン エディターに似ています。 スクリーン レイアウトは、次の画像に示す 3 つのセクションで構成されています。

[イベント処理エディター] スクリーンで 3 つの主なセクションを示すスクリーンショット。

  1. ダイアグラム ビューを含むキャンバス: このペインでは ([操作] メニューから) 演算子を選び、新しく作成された演算子ノードを介して Eventstream と宛先ノードを接続することで、データ変換ロジックを設計できます。 接続線をドラッグ アンド ドロップする、または接続を選んで削除することができます。

  2. 右側の編集ペイン: 選んだ操作ノードを構成する、または Eventstream と宛先のスキーマを表示することができます。

  3. [データ プレビュー] タブと [作成エラー] タブを含む下部ペイン: このペインでは、選んだノードのデータを [データ プレビュー] タブでプレビューします。[作成エラー] タブには、操作ノード内の未完了または誤った構成が一覧表示されます。

作成エラー

作成エラーとは、操作ノードの構成が不完全または正しくないために [イベント プロセッサ エディター] で発生するエラーを指し、イベント プロセッサの潜在的な問題を見つけて修正するのに役立ちます。

作成エラーは、[イベント プロセッサ エディター] の下部のパネルで表示できます。 下部のパネルにはすべての作成エラーが一覧表示され、各作成エラーには 4 つの列があります。

  • ノード ID: 作成エラーが発生した操作ノードの ID を示します。
  • ノードの種類: 作成エラーが発生した操作ノードの種類を示します。
  • レベル: 作成エラーの重大度を示します。致命的情報の 2 つのレベルがあります。 致命的なレベルの作成エラーは、イベント プロセッサに重大な問題があり、保存または実行できないことを意味します。 情報レベルの作成エラーは、イベント プロセッサに、イベント プロセッサの最適化や改善に役立つヒントや提案があることを意味します。
  • エラー: 作成エラーの具体的な情報を示し、作成エラーの原因と影響を簡単に説明します。 [詳細の表示] タブを選択すると、詳細を表示できます。

Eventstream と KQL Database ではさまざまなデータ型がサポートされているため、データ型変換のプロセスで作成エラーが発生する可能性があります。

次の表は、Eventstream から KQL Database へのデータ型変換の結果を示しています。 列は Eventstream でサポートされているデータ型を表し、行は KQL Database でサポートされているデータ型を表します。 セルは変換結果を示します。次の 3 つのいずれかになります。

✔️ は変換が成功することを示します。エラーや警告は発生しません。

❌ は変換不可能を示します。致命的な作成エラーが発生します。 エラー メッセージは次のようになります。列 "{0}" のデータ型 "{1}" が、選択した KQL テーブルの予期される型 "{2}" と一致しません。 そのため、自動変換できません。

⚠️ は変換が可能だが不正確であることを示し、情報レベルの作成エラーが発生します。 エラー メッセージは次のようになります。列 "{0}" のデータ型 "{1}" が、選択した 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 つ以上の集計を含めることができます。

Expand

配列の展開変換は、配列内の値ごとに新しい行を作成する場合に使用します。

Assert

フィルター変換を使用して、入力のフィールドの値に基づいてイベントをフィルター処理します。 データ型 (数値やテキスト) に応じて、変換では選択した条件に一致する値が保持されます (たとえば、is nullis not null など)。

グループ化

グループ化変換を使用して、特定の時間ウィンドウ内のすべてのイベントの集計を計算します。 1 つまたは複数のフィールドの値でグループ化することができます。 これは集計変換で列の名前を変更できることに似ていますが、より多くの集計オプションが用意されており、より複雑な時間枠のオプションが含まれています。 集計と同様に、変換ごとに複数の集計を追加できます。

変換で使用できる集計は次のとおりです。

  • 平均
  • Count
  • 最大値
  • 最小
  • パーセンタイル (連続および不連続)
  • Standard Deviation
  • 合計
  • Variance

タイム ストリーミング シナリオでは、テンポラル ウィンドウに含まれているデータに対する操作の実行は一般的なパターンです。 イベント プロセッサではウィンドウ関数 (Group by 演算子と統合されています) がサポートされます。 この演算子の設定で定義できます。

イベント プロセッサ エディターで使用できる [Group by] 演算子を示すスクリーンショット。

フィールドの管理

フィールドの管理変換では、入力または別の変換から受信するフィールドに対して、追加、削除、データ型の変更、または名前の変更を行うことができます。 作業ウィンドウの設定で、[フィールドの追加] を選んで新しいフィールドを追加したり、複数のフィールドを追加したり、すべてのフィールドを一度に追加したりできます。

イベント プロセッサ エディターで使用できる [フィールドの管理] 演算子を示すスクリーンショット。

また、組み込み関数を使用して新しいフィールドを追加し、アップストリームからのデータを集計することもできます。 (現在、サポートされている組み込み関数は、文字列関数日付と時刻関数数学関数の一部の関数です。それらを見つけるには "組み込み" で検索してください)。

[管理] フィールドの組み込み関数を示すスクリーンショット。

次の表は、フィールドの管理を使用してデータ型を変更した結果を示しています。 列は元のデータ型を表し、行は変更先のデータ型を表します。

  • セルに✔️がある場合は、直接変換が可能で、ターゲット データ型オプションがドロップダウン リストに表示されることを意味します。
  • セルに ❌ がある場合は、直接変換が不可能で、ターゲット データ型オプションがドロップダウン リストに表示されないことを意味します。
  • セルに ️⚠ がある場合は、変換可能ですが、文字列形式がターゲット データ型の要件に準拠している必要があるなど、特定の条件を満たす必要があることを意味します。 たとえば、string から int に変換する場合、文字列は有効な整数形式 ("123" などは可、"abc" などは不可) である必要があります。
Int64 Double String Datetime Record Array
Int64 ✔️ ✔️ ✔️
Double ✔️ ✔️ ✔️
String ⚠️ ⚠️ ✔️ ⚠️
Datetime ✔️ ✔️
Record ✔️ ✔️
Array ✔️ ✔️

和集合

UNION 変換は、2 つ以上のノードを接続し、共有フィールド (名前とデータ型が同じ) を持つイベントを 1 つのテーブルに追加するために使用します。 一致しないフィールドは削除され、出力に含まれません。