ある小売企業は、3000以上の店舗をすべて同じPOS(販売時点情報管理)システムで運用しています。同社は、カテゴリーマネージャーにほぼリアルタイムの売上データを提供したいと考えています。店舗は様々なタイムゾーンにまたがって営業しており、毎分発生する取引件数は店舗によって大きく異なり、売上高も店舗ごとに変動しています。 Sales results are provided in a uniform fashion using data engineered fields that will be calculated in a complex data pipeline. Calculations include exceptions, aggregations, and scoring using external functions interfaced to scoring algorithms. The source data for aggregations has over 100M rows. Every minute, the POS sends all sales transactions files to a cloud storage location with a naming convention that includes store numbers and timestamps to identify the set of transactions contained in the files. The files are typically less than 10MB in size. How can the near real-time results be provided to the category managers? (Select TWO).
正解:B,C
To provide near real-time sales results to category managers, the Architect can use the following steps: POS が販売トランザクション ファイルを送信するクラウド ストレージの場所を参照する外部ステージを作成します。外部ステージでは、ソース ファイルと一致するファイル フォーマットと暗号化設定を使用する必要があります。2 外部ステージから Snowflake のターゲット テーブルにファイルをロードする Snowpipe を作成します。Snowpipe は AUTO_INGEST = true で構成する必要があります。これは、外部ステージに到着した新しいファイルを自動的に検出して取り込むことを意味します。Snowpipe は、重複した取り込みを避けるために、ロード後に外部ステージからファイルを削除するためのコピー オプションも使用する必要があります。3 Snowpipe によって行われた INSERTS をキャプチャするターゲット テーブル上のストリームを作成します。ストリームには、ファイル名、パス、サイズ、最終更新時刻に関する情報を提供するメタデータ列を含める必要があります。ストリームには、リアルタイム分析のニーズに一致する保持期間も設定する必要があります。4 ストリームに対してクエリを実行して、ほぼリアルタイムのデータを処理するタスクを作成します。クエリは、ストリームメタデータを使用してファイル名とパスからストア番号とタイムスタンプを抽出し、外部関数を使用して例外処理、集計、スコアリングの計算を実行する必要があります。また、クエリは結果をカテゴリマネージャーがアクセスできる別のテーブルまたはビューに出力する必要があります。タスクは、1分ごと、または5分ごとなど、リアルタイム分析のニーズに合わせて実行されるようにスケジュールする必要があります。 他の選択肢は、ほぼリアルタイムの結果を提供するには最適でも実現可能でもない。 マイクロインジェストを避けるため、Snowflakeに取り込む前にすべてのファイルを連結する必要があります。ただし、この方法はデータパイプラインに余分な遅延と複雑さをもたらすため、推奨されません。 ファイルを連結するには、クラウドストレージの場所を監視し、ファイルのマージ操作を実行する外部プロセスまたはサービスが必要になります。これにより、Snowflakeへの新規ファイルの取り込みが遅延し、データ損失や破損のリスクが高まります。さらに、Snowpipeは連結された各ファイルを個別のロードとして取り込むため、ファイルを連結してもマイクロインジェクションは回避されません。 外部スケジューラは、クラウドストレージの場所の内容を調べ、リアルタイム分析のニーズに合った頻度でデータを処理するSnowSQLコマンドを発行する必要があります。ただし、Snowpipeは外部トリガーやスケジューラを必要とせずに外部ステージから新しいファイルを自動的に取り込むことができるため、このオプションは必須ではありません。外部スケジューラを使用すると、データパイプラインにオーバーヘッドと依存関係が加わり、ポーリング間隔と外部スケジューラの可用性に依存するため、ほぼリアルタイムのデータ取り込みが保証されません。 ほぼリアルタイムの要件を満たすには、1秒ごとに実行されるようにスケジュールされたタスクを含むコピーイントコマンドを使用する必要があります。Snowflakeではタスクを1秒ごとに実行するようにスケジュールできないため、このオプションは実現不可能です。タスクの最小間隔は1分ですが、タスクはスケジューリングの遅延や同時実行制限の影響を受けるため、それさえも保証されません。さらに、タスクを含むコピーイントコマンドを使用すると、自動ファイル検出、負荷分散、マイクロパーティション最適化などのSnowpipeの利点を活用できません。参考文献: 1:SnowPro Advanced:アーキテクト|学習ガイド 2:Snowflakeドキュメント|ステージの作成 3:Snowflakeドキュメント|Snowpipeを使用したデータ読み込み 4:Snowflakeドキュメント|ストリームとタスクを使用したELT Snowflakeドキュメント | タスクの作成 Snowflakeドキュメント | データロードのベストプラクティス Snowflakeドキュメント | Snowpipe REST APIの使用方法 Snowflake ドキュメント | タスクのスケジュール設定 SnowPro 上級者向け:アーキテクト | 学習ガイド ステージの作成 Snowpipeを使用したデータ読み込み ELTにおけるストリームとタスクの活用 【タスクの作成】 【データ読み込みに関するベストプラクティス】 [Snowpipe REST APIの使用] 【タスクのスケジュール設定】