ハイパフォーマンスSnowpipeストリームにおけるエラー処理

このトピックでは、Snowpipe Streamingのハイパフォーマンス版で利用可能なエラー処理メカニズムについて概説します。この強化されたアプローチにより、詳細なエラー情報が提供され、エラー処理プロセス全体が改善されるため、より堅牢で有益な体験が得られます。

ハイパフォーマンスアーキテクチャーの主なエラー処理機能

  • 強化されたチャンネル・ステータス・エンドポイント: このエディションでは、チャンネル・ステータス・エンドポイントを拡張し、より包括的なエラー情報を提供します。

  • きめ細かなエラー詳細: ハイパフォーマンスエディションでは、より詳細なエラー情報が提供され、エラー発生箇所の特定やインジェスト問題の根本原因の特定に役立ちます。

  • クライアントエクスペリエンスの向上: ハイパフォーマンスエディションは、クライアントのエラー処理を簡素化し、エラーの推論と回復の複雑さを軽減します。

  • 新しいチャンネル履歴表示:Snowflake では、 SNOWPIPE_STREAMING_CHANNEL_HISTORY ビュー を導入し、チャンネル・アクティビティの履歴記録を提供することで、エラーの監視と特定を行います。この機能により、エラーの傾向を追跡し、潜在的な問題に積極的に対処することができます。

チャンネルステータスのエンドポイント詳細

ハイパフォーマンスアーキテクチャは、より詳細な情報を提供するために、新しいチャンネル・ステータス・エンドポイントを導入しています。このエンドポイントは、チャンネルに関するポイント・イン・タイムの情報を返します。

クラシック・アーキテクチャのチャンネル・ステータス情報 (statusCode, persistedOffsetToken) に加え、ハイパフォーマンス・アーキテクチャには以下が含まれます。

  • channel_status_code: 現在のストリーミングチャンネルの動作ステータスを表します。このコードは、チャンネルの健全性とデータをインジェストする能力をハイレベルで示します。

  • last_commited_offset_token: Snowflakeによってターゲットテーブルに正常にコミットされた最後の行セットのオフセットトークンを示します。これは、進捗状況を追跡し、確実にデータを配信するために非常に重要です。

  • created_on_ms: ストリーミングチャンネルがSnowflake内で最初に作成された日時を示すミリ秒単位のタイムスタンプ。

  • database_name: ストリーミング・チャンネルがデータを取り込むように構成されているデータベースの名前。

  • schema_name: ストリーミング・チャンネルのターゲット・テーブルが存在する、指定したデータベース内のスキーマ名。

  • pipe_name: 特定のターゲットテーブルにデータを取り込むために、このSnowpipeストリーミングチャンネルを利用するように構成されたSnowpipeオブジェクトの名前。

  • channel_name: ユーザーが作成した、特定のSnowpipeストリーミングチャンネルインスタンスの名前。

  • rows_inserted: このストリーミング・チャンネルが作成されてから、ターゲット・テーブルに正常に挿入されたデータ行の総数のカウント。

  • rows_parsed: Snowpipe Streaming サービスがこのチャンネルで処理・解析したデータ行の総数。 (エラーなどにより、必ずしも挿入されたわけではありません)。

  • rows_error_count: 処理中にエラーが発生し、Snowpipe Streamingサービスによって拒否されたデータ行の総数。

  • last_error_offset_upper_bound: エラーを含む最後の行セットのオフセット・トークン範囲の上限。これは、データストリーム内の最新のエラーのおおよその位置を識別するのに役立ちます。

  • last_error_message: 最新のエラーコードに対応する人間が読めるメッセージ。

  • last_error_timestamp: このストリーミング・チャンネルで直近のエラーが発生した日時を示すタイムスタンプ。

  • snowflake_avg_processing_latency_ms: このチャンネルで受信した行セットの処理で Snowflake サービスが観測した平均待ち時間(ミリ秒単位)。この指標は、Snowflake内のインジェストパイプラインのパフォーマンスに関する洞察を提供します。

ハイパフォーマンスアーキテクチャーのエラー処理フロー

  • クライアントがデータを送信: クライアントアプリケーションは、Snowpipe ストリーミング SDK を使用して、 appendRow(s) API を介して Snowflake にデータを送信します。

  • サーバー処理: Snowflakeサービスがデータを処理します。これには次が含まれます。

    • データのバッファリング。

    • データの解析と検証。

    • データをテーブルにコミットします。

  • エラーの検出: エラーはサーバー側の処理ステージのいずれかで発生する可能性があります。

  • エラーの記録: Snowflakeは、最後に発生したエラーに関する以下のような詳細情報を記録します。

    • エラーを含む最後の行セットのオフセット・トークン範囲の上限。これは、データストリーム内の最新のエラーのおおよその位置を識別するのに役立ちます。

    • エラーメッセージです。

    • タイムスタンプ。

  • エラー報告:

    • 拡張チャンネル・ステータス・エンドポイントは、記録されたエラー情報へのアクセスを提供します。

    • クライアントはこのエンドポイントをクエリして、最後に発生したエラーの詳細を取得することができます。

    • Snowflakeはまた、エラーとそのオフセットを含むチャネ ル・アクティビティの履歴記録を提供する SNOWPIPE_STREAMING_CHANNEL_HISTORY ビュー も導入しています。

  • クライアントのアクション: クライアントアプリケーションはエラー情報を使用します。

    • エラーの原因を識別します。

    • 次のような適切なエラー処理ロジックを実装します。

      • 失敗した演算子を再試行します。

      • エラーのログ。

      • 管理者への警告。

      • 誤ったデータをデッドレターキューに移動。

      • チャンネルを再開します。