Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lakebridge ワークショップ / Lakebridge Workshop

Lakebridge ワークショップ / Lakebridge Workshop

Avatar for Databricks Japan

Databricks Japan

April 23, 2026

More Decks by Databricks Japan

Other Decks in Technology

Transcript

  1. Lakebridge ワークショップ 概要 多くの企業で既存のDWHやETLからDatabricksへの移行が進んでいます。Lakebridgeは移行プロジェクトを支 える機能群 (Analyzer / Conveter / Reconcile

    等) を提供するツールです。本ワークショップでは サンプルファイルを使ってLakebridgeを実行し、自組織の移行案件に適用できる状態を目指します。 主な対象者 既存DWH / ETLからDatabricksへの移行を検討している方 データエンジニア / 移行エンジニア / アーキテクト ※ SQLの読解経験があることが望ましい ゴール 事前準備 アジェンダ 1. Lakebridge 概要説明 (40分) 2. ハンズオン (90分) ◦ Analyzer / Converter / Reconcile • Lakebridgeの主要機能を手を動かして理解する • 3種類のConverter (BladeBridge / Morpheus / Switch) の特徴と使い分けを把握する • 自組織の移行案件にLakebridgeを適用できる状態になる • 環境:参加者のDatabricks環境を利用 • データ:サンプルファイルをGitHubを通じて提供
  2. Remorph (リモーフ) • Databricksが開発、2024/1よりDatabricks Labs (GitHub) で公開 • SQLの変換 (Transpile)

    とデータ検証 (Reconcile) の機能を提供 • 今後の方向性:移行関連ツールの包括的なツールキット Databricksへの移行を容易にするDatabricks Labsのツールキット 背景技術 ①
  3. Lakebridge DWH/RDBからDatabricksへの移行を包括的に支援するツールキット Profiler ワークロード分析 Analyzer コード分析 Converter コード変換 Reconcile データ検証

    Databricksに移行する際の 総所有コスト見積 のインプット • システム使用状況把握 • リソース使用状況把握 • ワークロードパターン分析 Databricksに移行する際の 移行コスト見積 のインプット • SQLコードの詳細分析 • 複雑さと互換性評価 • 潜在的問題の特定 移行元システムと Databricksの データ検証 を効率化 • データ整合性チェック • ソースとターゲットの比較 • ライブ環境での検証 BladeBridge Morpheus 正規表現パターンベース。 幅広いSQL方言とETLに対応。 ANTLRによる構文解析ベース。い くつかのSQL方言に対応。 2025/6/12 GA (Databricks Labs) Switch LLMベース。プロンプト作成により 多様なソースに対応可能。
  4. Profiler 位置付け ソースシステムのメタデータと実行メトリクスを自動 抽出し、移行計画・TCO見積りの情報源にする。 対応ソース Azure Synapse (Dedicated / Serverless

    SQL Pool) のみ。今後、他ソースへ拡張予定。 出力結果 SQLite extract → UC Volume → Delta + Dashboard / Lakebridge UI Docs: databrickslabs.github.io/lakebridge/docs/assessment/profiler/ ソースシステムのメタデータ・実行メトリクスを自動抽出 e.g. Profiler in Lakebridge UI Profiler
  5. Analyzer - 対応ソース 移行対象のコード・メタデータをスキャンし、ジョブインベントリ・複雑度・依存関係を抽出 レガシー資産のメタデータ走査・複雑度判定・インベントリ生成 カテゴリ 対応ソース RDBMS / DWH

    MSSQL / Synapse / Oracle / Snowflake / Teradata / Netezza / Redshift / BigQuery / Athena / Greenplum / Hive / Presto / Cloudera (Impala) ETL / ELT ABInitio / Alteryx / DataStage / Oracle Data Integrator / PentahoDI / PIG / SQOOP / SSIS / Talend / SAS / Informatica Orchestration ADF / Oozie Reporting / Stats SPSS / SSRS Docs: https://databrickslabs.github.io/lakebridge/docs/assessment/analyzer/ Analyzer
  6. Analyzer - 複雑度スコアリング • 各ソースファイル・ジョブに複雑度スコアを付与しExcelで出力 • SQLはループ数・各種Statement数・PIVOT数・XML SQL数で判定 • ETL

    (DataStage / SSIS / Talend / Pentaho / Alteryx / SAS) は、関数呼び出し数・Source/Target数 ・Join/Lookup数・Complexノード有無を組み合わせて判定 複雑度を定量化し、工数見積りの参考にする レベル ループ 複雑文 *¹ 基本文 *² PIVOT XML関連 *³ LOW - - - - - MEDIUM ≥ 1 > 10 > 1,000 1〜3 1〜3 COMPLEX > 5 > 30 > 2,000 > 3 > 3 VERY COMPLEX > 8 > 50 > 5,000 > 5 > 5 *¹ 複雑文 = ストアドプロシージャ本体・制御フロー・DDL等 (総Statement - 基本文) *² 基本文 = SELECT / INSERT / UPDATE / DELETE等 *³ XML関連 = FOR XML / OPENXML等のT-SQL系XML構文 Docs: https://databrickslabs.github.io/lakebridge/docs/assessment/analyzer/complexity_scoring 複雑度の設定基準例 Analyzer
  7. Converter - 3種の変換機能 BladeBridge / Morpheus / Switchのアーキテクチャ比較 観点 BladeBridge

    Morpheus Switch アーキテクチャ 正規表現 + JSON設定 AST (ANTLR parser) LLM (基盤モデルAPI) 実行環境 ローカルCLI ローカルCLI Lakeflow Jobs 対象 SQL + ETL SQLのみ カスタムプロンプトにより 任意のソースに対応 強み 幅広さ・カスタマイズ性・決定論 性 等価性保証 (warningなし成功 時は結果等価) 意味理解・拡張性・独自フォーマット 対応 留意点 単純な構文変換中心 対応SQL方言が限定的 LLM依存で非決定論的 Docs: https://databrickslabs.github.io/lakebridge/docs/transpile/ Converter
  8. Converter - 対応マトリクス BladeBridge / Morpheusの対応ソースと出力形式 (Switchは別スライド参照) SQL方言 Source BladeBridge

    Morpheus MSSQL DBSQL DBSQL Synapse DBSQL DBSQL Snowflake — DBSQL Oracle DBSQL — Teradata DBSQL — Netezza DBSQL — Redshift DBSQL (exp) — ETL Source BladeBridge Morpheus DataStage SparkSQL / PySpark — SSIS SparkSQL (exp) — Converter
  9. Reconcile • 移行後、ソースとターゲット (Databricks) でデータが一致しているかを検証する • Schema / Row /

    Dataの3レベル + それらを束ねたAllの計4種レポートを出力 • Delta metadataテーブル6本とDatabricks Dashboard 2枚が自動生成される ソース ↔ Databricksのデータ整合性を検証 ソース Schema Row Data All Snowflake ✓ ✓ ✓ ✓ Oracle ✓ ✓ ✓ ✓ MS SQL Server / Synapse ✓ ✓ ✓ ✓ Databricks ✓ ✓ ✓ ✓ ※ 現状、上記4種の直接接続のみサポート。 Lakehouse Federation経由のソース接続は未対応 (OSS側でPRが進行中)。 Docs: https://databrickslabs.github.io/lakebridge/docs/reconcile/ 対応ソース一覧 Reconcile
  10. ソース別Lakebridge機能カバレッジ * B = BladeBridge, M = Morpheus, S =

    Switch Source Profiler Analyzer Transpile Reconcile Synapse ✓ ✓ ✓ B / M / S ✓ MSSQL ✓ ✓ B / M / S ✓ Snowflake ✓ ✓ M / S ✓ Oracle ✓ ✓ B / S ✓ Teradata ✓ ✓ B / S Netezza ✓ ✓ B / S Redshift ✓ ✓ B / S DataStage ✓ ✓ B SSIS ✓ ✓ B Airflow ✓ S MySQL / PostgreSQL ✓ S Python / Scala ✓ S
  11. Switch LLMベースのコード変換機能: SQLを含む任意のソースの変換に対応 ソース • SQL方言や汎用ソース向けの 組み込みプロンプト ◦ T-SQL, Snowflake,

    Teradataなど ◦ Python, Scala, Airflow ◦ • ユーザーは任意のソース向けに カスタムYAMLプロンプト を追加可能 Switch (Lakebridgeトランスパイラー) 出力 • ノートブック またはファイル ◦ Spark SQL中心のPythonノートブッ ク ◦ SQLノートブック (試験的機能) ◦ 任意のテキストベースの フォーマット (txt, yml, jsonなど)
  12. 組み込みプロンプト : SQL方言 エンタープライズ移行に対応した9つのSQL方言を標準搭載 SQL方言 対象ソースシステムの例 mssql Microsoft SQL Server,

    Azure SQLファミリー, Amazon RDS for SQL Server mysql MySQL, MariaDB, マネージドMySQL (AWS, Azure, GCP) netezza IBM Netezza oracle Oracle Database, Oracle Exadata, マネージドOracle Database (AWS, Azure) postgresql PostgreSQL, マネージドPostgreSQL (AWS, Azure, GCP) redshift Amazon Redshift snowflake Snowflake teradata Teradata synapse Azure Synapse Analytics専用SQLプール
  13. 組み込みプロンプト : 汎用ソース コードやワークフローの変換にも対応 ソース 変換内容 (ソース → ターゲット) python

    Pythonコード → Databricks Pythonノートブック scala Scalaコード → Databricks Pythonノートブック airflow Airflow DAG → Databricks Jobs YAML + 各種オペレーターの変換ガイダンスのコメント (SQL→sql_task, Python→notebookなど)
  14. Switchの開始 変換までの3つのコマンド databricks labs install lakebridge Lakebridgeのインストール Switchのインストール databricks labs

    lakebridge install-transpile \ --include-llm-transpiler true 変換の実行 databricks labs lakebridge llm-transpile \ --input-source /local/path \ --output-ws-folder /Workspace/path \ --source-dialect snowflake (Other params) 1 2 3 • SwitchモジュールをWSにアップロード • Lakebridge_Switch Jobを作成 • 前提: Databricks CLI • UC Volumeにソースをアップロード • Lakebridge_Switch Jobを実行 • WSに結果を出力 ◦ 静的構文解析結果を付与 (Notebook) • 実行ごとにDeltaに中間結果を記録
  15. Switchの実行環境 Databricksワークスペースの標準機能を用いて変換を実施 Lakeflow Jobs サーバーレスジョブ コンピュートを 既定で使用 Delta Table 変換の進行状況を

    管理 Model Serving LLM API呼び出し用 エンドポイント * ジョブ設定の変更によりクラシックジョ ブコンピュートも利用可能
  16. 変換処理の流れ 出力形式に応じた2つの処理フロー #1: Databricks Pythonノートブックに変換 Analyze Convert Validate Fix Export

    トークン数カウント, 前 処理 LLMによる変換 構文チェック(Python AST & Spark SQL EXPLAIN) LLMによる エラー修正 ノートブックの エクスポート #2: 汎用ファイルに変換 (Text, YAMLなど) Analyze Convert Export トークン数カウント, 前 処理 LLMによる変換 ファイルの エクスポート * 出力形式が多様で統一的な構文チェックがで きないため、ValidateとFixはスキップ
  17. モデルの柔軟性 設定により任意のモデルサービングエンドポイントを選択可能 デフォルトモデル • Claude Sonnet 4.5 (基盤モデルAPI) ◦ 高品質な出力を実現する現在の最

    高水準 (SOTA) モデル ◦ セットアップ不要 ◦ より優れたモデルが登場次第、デ フォルトは定期的に更新 オプション • その他の基盤モデル API ◦ トークン単位の従量課金 ▪ 通常利用向け ◦ プロビジョンドスループット ▪ レート制限の回避やコスト 予測が必要な大規模処理
  18. • 既定の閾値: 2万トークン / ファイル ◦ 2万トークン ≒ 6.8万文字 (Claudeの計算:

    1トークン ≒ 3.4文字) ▪ 2万トークンの閾値でClaude 3.7 Sonnetでの安定した処理の実現を確認済 ▪ 閾値は設定で変更可能: より大きなコンテキストウィンドウのモデルを使用する場合、より大 きな閾値を設定できる可能性が高い (実際に変換を試して確認することを推奨) ◦ • 閾値を超えるファイルの扱い ◦ Analyzeフェーズで閾値を超えるファイルを処理対象から除外 ◦ 現時点では手動でファイルを分割した上でSwitchの再実行が必要 考慮事項: 大きなファイルの処理について LLMのトークン数制限により1ファイルあたりの処理可能なサイズに制限あり
  19. カスタムプロンプト - 必要な要素 system_message: | Convert SQL code to Python

    code that runs on Databricks according to the following instructions: # Input and Output - Input: A single SQL file containing one or multiple T-SQL statements - Output: Python code with Python comments (in {comment_lang}) explaining the code ${common_python_instructions_and_guidelines} # Additional Instructions 1. Convert SQL queries to spark.sql() format 2. Add clear Python comments explaining the code 3. Use DataFrame operations instead of loops when possible 4. Handle errors using try-except blocks few_shots: - role: user content: | SELECT name, age FROM users WHERE active = 1; - role: assistant content: | # Get names and ages of active users active_users = spark.sql("SELECT name, age FROM users WHERE active = 1") display(active_users)
  20. カスタムプロンプト - 必要な要素 system_message: | Convert SQL code to Python

    code that runs on Databricks according to the following instructions: # Input and Output - Input: A single SQL file containing one or multiple T-SQL statements - Output: Python code with Python comments (in {comment_lang}) explaining the code ${common_python_instructions_and_guidelines} # Additional Instructions 1. Convert SQL queries to spark.sql() format 2. Add clear Python comments explaining the code 3. Use DataFrame operations instead of loops when possible 4. Handle errors using try-except blocks few_shots: - role: user content: | SELECT name, age FROM users WHERE active = 1; - role: assistant content: | # Get names and ages of active users active_users = spark.sql("SELECT name, age FROM users WHERE active = 1") display(active_users) system_message (必須) 変換ルール、入力/出力形式、具体的な 指示を定義 few_shots (任意だが推奨 ) 具体的な変換例をいくつか用意することでLLMの 変換精度を向上
  21. Switch活用のベストプラクティス 効果的な使い方 1 4 小さく始める - 代表的なサンプルファイルから開始 プロンプトを反復改善 - 変換結果を元にプロンプトを洗練

    レビューと改善 - 変換結果を完成版ではなく改善のベースとして扱う 2 3 パターンを記録 - 成功したプロンプトを今後の再利用のために記録
  22. どのコード変換機能を使うべきか? ルールベース vs. LLMベースの比較 BladeBridge & Morpheus • 確実に同じ結果を出力 し元のコードと同

    等の構文を保証 • 高速なローカル処理 (数十秒〜数分レベ ル、LLM APIのオーバーヘッドなし) • 大量ファイル の変換 (数百〜数千) • DBSQLの進化に対応: SQL Scriptingや ストアドプロシージャなど Switch • LLMとカスタムプロンプトにより 任意のソース を変換可能 • 複雑なロジック のコード変換に対応 • Pythonノートブックに変換することで標準 SQLの範囲を超える機能 にも対応