dbtデータ変換パイプラインクイズ
Step 2で学んだdbtの概要、モデリング、テスト、高度な機能について理解度を確認しましょう。10問中8問以上の正解で合格です。
Q1. dbtの役割
dbtの主な役割として最も適切なものはどれですか?
- A: データの抽出(Extract)と読み込み(Load)
- B: データウェアハウス内でのデータ変換(Transform)
- C: データの可視化とダッシュボード作成
- D: データのストリーミング処理
正解と解説
正解: B
dbtはELTのT(Transform)を担当するツールです。データウェアハウスにロード済みのデータに対してSQLベースの変換を行います。
Q2. dbtモデルの層構造
dbtプロジェクトにおけるstaging層の役割として正しいものはどれですか?
- A: ビジネスユーザーが直接参照するテーブルを定義する
- B: rawデータのクレンジング・型変換・命名統一を行う
- C: 複雑なビジネスロジックを実装する
- D: 外部システムへデータを出力する
正解と解説
正解: B
staging層はrawデータの最初の変換層で、型変換、trim、命名規則の統一など基本的なクレンジングを担当します。ビジネスロジックはintermediate層やmart層で実装します。
Q3. ref関数
dbtのref関数の目的として正しいものはどれですか?
- A: 外部データベースに接続する
- B: モデル間の依存関係を定義し、DAGを自動構築する
- C: SQLのパフォーマンスを最適化する
- D: テストケースを参照する
正解と解説
正解: B
ref関数はモデル間の依存関係を明示的に定義します。dbtはこの情報からDAGを自動構築し、正しい順序でモデルを実行します。
Q4. dbtテスト
dbtのschemaテストに含まれないものはどれですか?
- A: not_null
- B: unique
- C: accepted_values
- D: performance_benchmark
正解と解説
正解: D
dbtの組み込みschemaテストはnot_null、unique、accepted_values、relationshipsの4つです。パフォーマンスベンチマークは組み込みテストには含まれません。
Q5. マテリアライゼーション
dbtのincrementalマテリアライゼーションの利点として正しいものはどれですか?
- A: 常にテーブル全体を再構築するため最新性が保証される
- B: 新規・更新データのみを処理するため大規模テーブルの更新が効率的
- C: ビューとして定義されるためストレージを消費しない
- D: スナップショットを自動で取得する
正解と解説
正解: B
incrementalマテリアライゼーションは新規・更新データのみを処理するため、大規模テーブルの更新時に全件再構築と比較して大幅に効率的です。
Q6. Jinjaテンプレート
dbtでJinjaマクロを使用する主な目的はどれですか?
- A: Pythonコードを実行する
- B: 再利用可能なSQL部品を作成しDRY原則を守る
- C: データの暗号化を行う
- D: 外部APIを呼び出す
正解と解説
正解: B
Jinjaマクロにより再利用可能なSQL部品を作成でき、同じロジックの繰り返しを避けられます。ただし使いすぎると可読性が低下するためバランスが重要です。
Q7. source関数
dbtのsource関数を使う利点として正しくないものはどれですか?
- A: ソースデータの鮮度チェックが可能
- B: ソースの定義を一元管理できる
- C: ソースデータの自動バックアップが行われる
- D: リネージ(データの系譜)が追跡可能になる
正解と解説
正解: C
source関数はソースの一元管理、鮮度チェック(freshness)、リネージ追跡を可能にしますが、データの自動バックアップ機能は提供しません。
Q8. dbt test
dbtでカスタムテスト(data test)を作成する方法として正しいものはどれですか?
- A: Pythonスクリプトをtestsディレクトリに配置する
- B: 不正なレコードを返すSQLクエリをtestsディレクトリに配置する
- C: YAMLファイルにテスト条件を記述する
- D: dbt test コマンドにオプションで条件を指定する
正解と解説
正解: B
dbtのdata testは、testsディレクトリにSQLファイルを配置します。このSQLは「不正なレコード」を返すクエリで、結果が0行ならテスト合格、1行以上なら不合格です。
Q9. dbt packages
dbt_utilsパッケージの用途として正しいものはどれですか?
- A: dbtのインストールとバージョン管理
- B: 汎用的なマクロやテスト(surrogate_key、accepted_rangeなど)の提供
- C: dbtのGUI管理画面の提供
- D: データウェアハウスの自動プロビジョニング
正解と解説
正解: B
dbt_utilsは、surrogate_key、pivot、accepted_rangeなどの汎用マクロやカスタムスキーマテストを提供するコミュニティパッケージです。
Q10. dbtのベストプラクティス
dbtプロジェクトの命名規則として推奨されるものはどれですか?
- A: すべてのモデルに接頭辞なしで自由に命名する
- B: staging層はstg_、intermediate層はint_、mart層はmart_の接頭辞をつける
- C: すべてのモデル名にデータベース名を含める
- D: モデル名にタイムスタンプを含める
正解と解説
正解: B
dbtの命名規則ではstg_(staging)、int_(intermediate)、mart_(mart)の接頭辞でモデルの層を明示するのがベストプラクティスです。
結果
| 正答数 | 判定 |
|---|---|
| 8-10問 | 合格 - Step 3に進みましょう |
| 6-7問 | もう一度レッスンを復習しましょう |
| 5問以下 | Step 2のレッスンを最初から再学習しましょう |
推定所要時間:30分