QUIZ 30分

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分