データパイプライン総合クイズ
Month 5で学んだデータパイプラインの全範囲(Modern Data Stack、dbt、Airflow、ストリーミング、データ品質)について総合的に理解度を確認します。10問中8問以上の正解で合格です。
Q1. Modern Data Stack
ELTとETLの主な違いとして正しいものはどれですか?
- A: ELTはデータを変換してからロードし、ETLはロードしてから変換する
- B: ELTはロードしてからDWH内で変換し、ETLは変換してからロードする
- C: ELTとETLは同じプロセスの別名
- D: ELTはバッチ処理、ETLはストリーミング処理
正解と解説
正解: B
ELT(Extract-Load-Transform)はデータをまずDWHにロードし、DWHの計算能力を使って変換します。ETL(Extract-Transform-Load)は変換してからロードします。Modern Data Stackではクラウドの計算能力を活かすELTが主流です。
Q2. dbt
dbtのincrementalモデルが適しているケースはどれですか?
- A: 行数が少ない小さなテーブル
- B: 毎回全データの再計算が必要なテーブル
- C: 大量のデータがあり、新規・更新分のみ処理したいテーブル
- D: 一度作成したら更新しないテーブル
正解と解説
正解: C
incrementalモデルは新規・更新データのみを処理するため、大規模テーブルの更新で効率的です。小さなテーブルやfull refreshが必要な場合はtableマテリアライゼーションが適しています。
Q3. Airflow
AirflowのDAGでcatchup=Falseに設定する理由として正しいものはどれですか?
- A: DAGの実行速度を向上させるため
- B: DAG開始日から現在までの未実行分をバックフィルしないため
- C: DAGのテストを省略するため
- D: DAGのスケジュールを無効にするため
正解と解説
正解: B
catchup=Falseに設定すると、start_dateから現在までの未実行分のDAG実行(バックフィル)をスキップします。最新のスケジュールから実行を開始します。
Q4. Kafka
Kafkaのレプリケーションファクターを3に設定する主な理由はどれですか?
- A: メッセージの配信速度を3倍にする
- B: 2台のBrokerが同時に障害を起こしてもデータが失われない
- C: Consumer Groupのサイズを3に制限する
- D: メッセージを3回配信する
正解と解説
正解: B
レプリケーションファクター3は、各パーティションのデータが3つのBrokerに複製されることを意味します。2台のBrokerが同時に障害を起こしても1台にデータが残ります。
Q5. ストリーミング
セッションウィンドウが最も適しているユースケースはどれですか?
- A: 5分ごとの注文数カウント
- B: ユーザーのWebセッションごとの行動集計
- C: 直近1時間の移動平均計算
- D: 日次バッチ処理
正解と解説
正解: B
セッションウィンドウは非活動期間(ギャップ)でウィンドウを区切るため、ユーザーセッションの区切りが不定期なWebサイトの行動分析に適しています。
Q6. データ品質
「注文テーブルのcustomer_idが顧客テーブルに存在することを確認する」テストは、データ品質のどの次元に該当しますか?
- A: 完全性
- B: 一貫性
- C: 一意性
- D: 妥当性
正解と解説
正解: B
参照整合性のチェックはデータの一貫性(Consistency)に該当します。テーブル間でデータが矛盾していないことを確認するテストです。
Q7. データ可観測性
データ可観測性のFreshness(鮮度)チェックの目的はどれですか?
- A: データの正確性を検証する
- B: データが期待されるタイミングで更新されているか確認する
- C: データの重複を検出する
- D: データのスキーマを検証する
正解と解説
正解: B
Freshnessチェックは、テーブルの最終更新時刻を監視し、期待されるタイミング(例:24時間以内)で更新されているかを確認します。
Q8. Lambda vs Kappa
Kappaアーキテクチャの最大の制約はどれですか?
- A: リアルタイム処理ができない
- B: バッチ処理ができない
- C: イベントログの長期保持が前提であり、ストレージコストがかかる
- D: スケールアウトできない
正解と解説
正解: C
Kappaアーキテクチャはイベントログ(Kafka等)からの再生で再処理を行うため、ログの長期保持が必須です。大量のイベントを保持するストレージコストが課題になります。
Q9. データリネージ
データリネージが最も役立つ場面はどれですか?
- A: 新しいプログラミング言語を学習する
- B: 上流テーブル変更の影響範囲を事前に特定する
- C: データベースのパフォーマンスチューニング
- D: セキュリティパッチの適用
正解と解説
正解: B
データリネージにより、上流テーブルの変更が下流のどのテーブル・ダッシュボードに影響するかを事前に特定でき、予期しないパイプラインの破壊を防げます。
Q10. パイプライン設計
データパイプラインの冪等性を確保するために最も適切な手法はどれですか?
- A: INSERTのみを使用し、重複を許容する
- B: DELETE + INSERTまたはMERGE(UPSERT)を使用する
- C: パイプラインを1回だけ実行する
- D: エラー時はパイプライン全体を最初から再実行する
正解と解説
正解: B
冪等性を確保するには、DELETE + INSERTやMERGE(UPSERT)を使い、同じ入力で何度実行しても同じ結果になるようにします。INSERTのみだと重複が発生します。
結果
| 正答数 | 判定 |
|---|---|
| 8-10問 | 合格 - Month 5修了です。Month 6に進みましょう |
| 6-7問 | 該当するStepのレッスンを復習しましょう |
| 5問以下 | Month 5の内容を最初から再学習しましょう |
推定所要時間:30分