ステートフルの処理中です
データ プロセッシング ライブラリでは、出力カタログの現在のベースバージョンを照会することで、入力データのスナップショットを処理できます。 そのため、ステートフルデータ処理を実行できます。この処理では、前の実行で生成された出力を考慮して、現在の入力データが処理されます。
現在のバージョンの出力カタログからのデータは Default.FeedbackCatalogId
、 Default.OutCatalogId
および入力カタログ識別子を使用して他の出力および入力レイヤーを参照するのと同じ方法で、識別子を使用して参照できます。
メモ この DriverContext
インターフェイスの feedbackRetriever
には、ステートフル処理を実行するために必要なデータをロードする機能があります。または、 DriverContext
の inRetriever
メソッドを使用して、 FeedbackCatalogId
の Retriever
にアクセスできます。
注 : ライブラリ処理を実行しても、処理中のステートフルのすべてのコンパイル・パターンが適用されます。 さらに、この機能は、概念、機能に影響を与えるものではなく、アプリケーションが実行されている環境 ( 通常はパイプライン API ) で特別な設定を行う必要もありません。
初期状態の作成は、処理ライブラリを使用して開発者に委任されます。 この初期状態は、アプリケーションを実行する前に出力カタログにコミットする必要があります。 ほとんどの場合、初期状態を空の出力カタログとして表現し、フィードバックレイヤーにデータが含まれていない場合に初期処理値を定義するロジックをコンパイラーに実装するだけで十分です。たとえば、カウンタをゼロに設定します。 処理の初期状態を表す情報を含むオブジェクトを初期化しています。
フィードバック・カタログは、コンパイラーの最後の実行時に生成された出力カタログバージョンです。 複数 のカタログバージョンで説明されている概念を使用して、出力カタログの以前のバージョンにアクセスできます。
以下のセクションでは、ステートフル処理の例について説明します。このタイプのデータ処理について考慮すべき主な設計上の決定事項について説明します。
例 : POI データ変更カウンタ
主要施設( POI )は、実世界の場所をモデル化するオブジェクトです。 この文脈では、場所は店、ツーリストの魅力、または類似のものである場合もある。 POI には、次のいずれかのプロパティが含まれている場合があります。
- ID
- タイプ
- ジオコード化 (緯度、 Long)
- 名前
- 電話番号。
このようなプロパティの中で、 ID、タイプ、およびジオコード化された座標は時間の経過とともに変化しないものとします。その他の情報は、さまざまなデータリリースで変更される可能性があります。
時間の経過とともに POI 情報が変更された回数をカウントする必要があるとします。 出力カタログには、入力レイヤーに保存されているすべての POI に関する情報が含まれています。これは、 レイヤーの全体的な履歴を追跡するためです。
これは、前のエラボレーションの結果 ( カウンタの現在の値 ) をコンパイラの追加入力として含める必要があるステートフル処理の例です。
このコンテキストでは、出力レイヤーが単一のレイヤーに保存され、入力レイヤーと同じタイリングを持つようにすることを想定しています。
出力レイヤーおよびフィードバックレイヤーのデザイン
このユースケースには、出力レイヤーとフィードバックレイヤーの両方に対応するレイヤーが 1 つあります。 このレイヤーには、各 POI の次のプロパティが含まれている必要があります。
- ID
- 名前
- 電話番号
- 特定の POI コンテンツが変更された回数を保持するカウンタ
名前と電話 メンバーは、監視対象の情報です。
初期状態
この場合、初期状態は空の出力レイヤーで構成できます。 コンパイラーのロジックは、まだ新しい入力として処理されていないタイルまたは POI を考慮し、新しい カウンタ メンバーをゼロに設定して、監視対象の情報を入力する必要があります。
パターンの処理中です
入力キーとフィードバックキーの組み合わせが 1 つの出力レイヤーキーと一致しないため 、ダイレクト 1:N および M:N コンパイラーで説明されているダイレクト M:N パターンが最適な処理パターンです。
処理ロジック
処理ロジックはタイルベースで動作します。 現在のフィードバックタイルの内容が含まれるように、出力タイルの内容が初期化されます(利用可能な場合)。 空の出力カタログは有効な初期状態と見なされます。
入力レイヤーの各 POI で、次の操作を行います。
- POI がフィードバックレイヤーにない場合:
- カウンタをゼロに設定し、 ID 、名前、電話を出力レイヤーの値に設定して、新しいエントリを POI に追加します
- 名前または電話番号 ( またはそのいずれか ) が変更された場合 :
- 出力レイヤーで変更された情報を更新し、カウンタを 1 増加します
上記の処理を 2 度目に実行すると、指定した入力で出力レイヤーに変更はありません。 これは、特定の設定の出力が 1 つのステップで収束するステートフル処理に適したプロパティです。