schemaLocation と checkpoint は別物
schemaLocation は推論スキーマと進化履歴、checkpointLocation はストリームの処理進捗と状態を保存する。
罠 役割は別だが同じディレクトリも指定可能。入力パスとは分離し、クエリごとに固有の checkpoint を使う。
2026-09-26 時点
本番で迷うのは、知らない用語より似た機能の境界です。過去の誤答を「何と何を混同したか」で整理しました。
01 / CORE
答えを思い出すのではなく、隣の機能との違いを一行で言えるか確認する。
schemaLocation と checkpoint は別物schemaLocation は推論スキーマと進化履歴、checkpointLocation はストリームの処理進捗と状態を保存する。
罠 役割は別だが同じディレクトリも指定可能。入力パスとは分離し、クエリごとに固有の checkpoint を使う。
_rescued_data救出列名を変えるオプションは rescuedDataColumn。既定列名は _rescued_data で、_rescue_data ではない。
processingTime はクエリを動かし続けて周期実行。availableNow は開始時点までの未処理データを複数バッチで処理して停止。
Scheduled / Table update / File arrival / Model update(Beta) / Continuous / None(手動・外部起動)。
注意 古い問題は Model update を含めず5種類としている。
新規ファイルの有無を約1分ごとに確認する。ミリ秒保証ではなく、通常は既存ファイルの上書きでは起動しない。
min_time_between_triggers_seconds は実行間隔の下限。wait_after_last_change_seconds は最後の変更後に静まるまで待つ。
平日09:00はジョブの Scheduled トリガーで Quartz cron と timezone を指定する。タスクの Run if は成功・失敗など依存タスクの結果条件で、曜日や時刻条件ではない。
重要 過去問題の「AとD」は不適切。実質的に必要なのはジョブ側の schedule。
--var → BUNDLE_VAR_* → variable-overrides.json → target の variables → top-level default。
対応する既存ジョブは databricks bundle generate job --existing-job-id <id> で定義を生成。現行CLIは notebook task のジョブのみ対応し、既存ジョブを管理するなら --bind も使う。
罠 generate しただけで deploy すると、既存ジョブではなく新しいリソースを作る。
基本は USE CATALOG + USE SCHEMA + 対象の SELECT。権限継承があっても親階層を利用する権限は必要。
workspace-local group には Unity Catalog の権限を付与できない。アカウントレベルで管理される account group を使う。
短縮には retention safety check の無効化が必要だが危険。VACUUM は現行テーブルから参照されない古いデータファイルを物理削除し、タイムトラベル可能期間を縮める。
02 / PATTERNS
誤答はばらばらではない。「名前が似る」「制御する層を取り違える」「優先順位を逆にする」に集中している。
Simple は一定間隔の簡易指定で、初回の開始時刻は指定しない。開始時刻・timezone・cron を制御したいなら Advanced。
監視対象には USE CATALOG + USE SCHEMA + SELECT。トリガー設定の編集には対象ジョブの CAN MANAGE が必要。
cluster / job / pipeline / warehouse 等の対応オブジェクトを表示名から解決するなら variables.lookup → ${var.name}。bundle 内で宣言したリソースは ${resources.type.key.<field>}。
bundle.name は bundle の識別子。すべての job / pipeline 名に自動で prefix されるわけではない。development mode の名前 prefix とは別の話。
指定間隔を基準にマイクロバッチを試行する。前バッチが間隔より長ければ、次は遅延して開始する。「完了してから毎回1分待つ」と暗記しない。
Jobs の Continuous は run 完了・失敗後に次の run を起動する。Spark の Continuous Processing は実験的で Databricks 非対応。超低遅延には Real-time mode を検討する。
大表を shuffle せず、小表を各 executor に配る。AQE が実行時統計で最適化することもあるが、サイズと結合条件を確認して使う。
行フィルタや列マスク付きテーブルでは通常の time travel と deep / shallow clone が制限される。ABAC の time travel は条件付き Beta なので、両者を同一視しない。
variant_get は型変換に失敗するとエラー。try_variant_get は失敗時に NULL を返す。入力品質が不均一なら後者。
03 / GIT FOLDERS
操作順より大事なのは、workspace と remote の間で何が自動・手動かを理解すること。
Workspace → Create → Git folder。remote URL と provider を指定。
作業ブランチを選び、notebook やファイルを編集。
差分を確認し、空ではない message を付けて commit。
push で remote へ、pull で remote の変更を workspace へ。
workspace の変更は commit + push、remote の変更は pull が必要。Git Folder は remote repository の working copy。
変更の選択だけでは不十分。意味のある commit message を入力し、commit 後に push して初めて remote に反映される。
Git Folders はコードの version control と共同編集。Bundles は jobs / pipelines 等を構成として validate・deploy する IaC。
clone 時に cone pattern を設定し、後から Settings → Advanced で pattern を編集できる。いったん有効化すると無効化できず、pattern 外に新規作成する前に対象を追加する。
working branch 1GB、Git 操作のメモリ 2GB、disk write 4GB、UI 表示 10MB など複数の制限がある。ファイル数は2万未満が推奨。
%run より module / package%run は notebook 間の状態を密結合にしやすい。再利用ロジックは Python module / package に分け、Databricks Connect や CI でテスト可能にする。
04 / MAP
10分あるときだけ読む。網羅ではなく、選択肢を切るための判断軸に絞った。
DATA INGESTION
cloudFiles.format で csv / json / parquet 等を指定。STREAMING
foreachBatch の upsert は batch ID や merge 条件で冪等にする。TRANSFORMATIONS
try_* を選ぶ。JOBS & ORCHESTRATION
depends_on は順序、Run if は upstream の結果に応じた実行可否。DELTA & PERFORMANCE
STORAGE
GOVERNANCE
CI/CD & BUNDLES
databricks bundle validate -t prod で構成と参照を先に検証。databricks bundle deploy -t prod で宣言リソースを配備。05 / BEFORE START
迷ったときは製品名を思い出すより、要件を分解する。
バッチか継続か。 一度追いついて停止か、常時稼働か。
誰が起動するか。 時刻・ファイル・テーブル・モデル・手動のどれか。
どの層の設定か。 job / task / streaming query / table policy を混ぜない。
最小の権限か。 admin を選ぶ前に SELECT / USE / MODIFY を確認。
増分か全件か。 CDC / Auto Loader / MERGE を full scan より優先。
似た語の違いは何か。 保存対象・適用範囲・優先順位を一文で言う。
OFFICIAL REFERENCES
機能追加が速い分野です。古い模擬問題より、試験ガイドと現行ドキュメントを優先してください。