mcpField
S
spark-authoring-cli

spark-authoring-cli

github.com/microsoftデータ・データベース1.3k161 回インストール3 週間前に更新
リポジトリ

spark-authoring-cli について

spark-authoring-cli は、Microsoft Fabric のデータエンジニア向けスキルです。REST API による Spark アーティファクトの管理と Fabric Notebook のコード作成を扱い、ワークスペース、Lakehouse、Notebook、ジョブなどを案内します。

主な機能

  1. 01REST API による Fabric アーティファクト管理
  2. 02PySpark、Scala、SparkR、SQL の作成
  3. 03Notebook の取得と更新の案内
  4. 04ジョブ実行とスケジュール設定
  5. 05認証とデータアクセスの説明

活用シーン

  1. 01ワークスペース内の Lakehouse と Notebook の管理
  2. 02Spark ジョブの実行やスケジュール設定
  3. 03API を介した Notebook 内容の変更
  4. 04Fabric Notebook コードの作成とデバッグ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/microsoft/skills-for-fabric --skill spark-authoring-cli

インストール後、Claude Code で/spark-authoring-cliを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

resources/
data-engineering-patterns.md
development-workflow.md
infrastructure-orchestration.md
materialized-lake-view-patterns.md
mlv-incremental-refresh-patterns.md
notebook-api-operations.md

詳細

テレメトリ — 必須。 すべての api.fabric.microsoft.com 呼び出しには x-ms-fabric-skill: spark-authoring-cli を付ける必要があります(az rest の場合は --headers "x-ms-fabric-skill=spark-authoring-cli")。 すべての LRO ポーリング、fabric_lro、リトライにも付けてください。コード例では省略されていますが、必ず追加してください。

更新チェック — セッションごとに 1 回(必須) このスキルをセッションで初めて使用するときは、作業を進める前に check-updates スキルを実行してください。

  • GitHub Copilot CLI / VS Code:check-updates スキルを呼び出してください。
  • Claude Code / Cowork / Cursor / Windsurf / Codex:ローカルとリモートの package.json のバージョンを比較してください。
  • このセッション中にすでにチェックを実施している場合は、スキップしてください。

重要な注意事項

  1. ワークスペース名から詳細(ID を含む)を確認するには、すべてのワークスペースを一覧表示し、その後、JMESPath でフィルタリングしてください。
  2. ワークスペース ID、アイテムの種類、アイテム名からアイテムの詳細(ID を含む)を確認するには、そのワークスペース内の該当する種類のアイテムをすべて一覧表示し、その後、JMESPath でフィルタリングしてください。

Spark オーサリング — CLI スキル

このスキルでは、相互に補完する 2 つの領域を扱います。(1)REST API を使用した Fabric Spark アーティファクト(ワークスペース、レイクハウス、ノートブック、ジョブ、パイプライン)の管理、(2)Fabric ノートブックのセル内でのコード作成(レイクハウスへの適切なアクセス、notebookutils、Spark 構成を含む PySpark、Scala、SparkR、SQL)。ノートブックのコード作成の基礎と共有モジュールについては、必ず SPARK-NOTEBOOK-AUTHORING-CORE.md を参照してください。

目次

タスク参照備考
RULES — まずここを読み、常に従ってくださいSKILL.md § RULES必ず読む — このスキルの4つのルール
Fabric のワークスペースとアイテムを見つけるCOMMON-CLI.md § Finding Workspaces and Items in Fabric必須 — まずリンクを読む [名前からワークスペース ID を、または名前、アイテムの種類、ワークスペース ID からアイテム ID を見つけるために必要]
Fabric のトポロジーと主要な概念COMMON-CORE.md § Fabric Topology & Key Concepts
環境 URLCOMMON-CORE.md § Environment URLs
認証とトークンの取得COMMON-CORE.md § Authentication & Token Acquisitionaudience が間違っていると 401 が発生します。認証の問題があれば、先に読んでください
コアのコントロールプレーン REST APICOMMON-CORE.md § Core Control-Plane REST APIs
ページネーションCOMMON-CORE.md § Pagination
長時間実行操作(LRO)COMMON-CORE.md § Long-Running Operations (LRO)
レート制限とスロットリングCOMMON-CORE.md § Rate Limiting & Throttling
OneLake データアクセスCOMMON-CORE.md § OneLake Data AccessFabric トークンではなく、storage.azure.com トークンが必要です
定義エンベロープITEM-DEFINITIONS-CORE.md § Definition Envelope定義ペイロードの構造
アイテムの種類ごとの定義ITEM-DEFINITIONS-CORE.md § Per-Item-Type Definitionsサポートマトリックス、デコード済みコンテンツ、パートパス — REST 仕様、CLI レシピ
ジョブの実行COMMON-CORE.md § Job Execution
キャパシティ管理COMMON-CORE.md § Capacity Management
注意点とトラブルシューティングCOMMON-CORE.md § Gotchas & Troubleshooting
ベストプラクティスCOMMON-CORE.md § Best Practices
ツール選択の根拠COMMON-CLI.md § Tool Selection Rationale
認証レシピCOMMON-CLI.md § Authentication Recipesaz login のフローとトークンの取得
az rest による Fabric コントロールプレーン APICOMMON-CLI.md § Fabric Control-Plane API via az rest必ず --resource https://api.fabric.microsoft.com を渡してください。渡さないと az rest は失敗します
ページネーションのパターンCOMMON-CLI.md § Pagination Pattern
長時間実行操作(LRO)のパターンCOMMON-CLI.md § Long-Running Operations (LRO) Pattern
curl による OneLake データアクセスCOMMON-CLI.md § OneLake Data Access via curlaz rest ではなく curl を使用します(トークンの audience が異なります)
SQL / TDS データプレーンアクセスCOMMON-CLI.md § SQL / TDS Data-Plane Access
ジョブの実行(CLI)COMMON-CLI.md § Job Execution
ジョブのスケジュール設定COMMON-CLI.md § Job SchedulingURL は /jobs/{jobType}/schedules です。endDateTime は必須です
OneLake ショートカットCOMMON-CLI.md § OneLake Shortcuts
キャパシティ管理(CLI)COMMON-CLI.md § Capacity Management
複合レシピCOMMON-CLI.md § Composite Recipes
注意点とトラブルシューティング(CLI 固有)COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)az rest の audience、シェルのエスケープ、トークンの有効期限
クイックリファレンス:az rest テンプレートCOMMON-CLI.md § Quick Reference: az rest Template
クイックリファレンス:トークン audience と CLI ツールのマトリックスCOMMON-CLI.md § Quick Reference: Token Audience ↔ CLI Tool Matrix各サービスに使用する --resource とツール
SPARK-CONSUMPTION-CORE.md との関係SPARK-AUTHORING-CORE.md § Relationship to SPARK-CONSUMPTION-CORE.md
データエンジニアリングの作成機能マトリックスSPARK-AUTHORING-CORE.md § Data Engineering Authoring Capability Matrix
レイクハウスの管理SPARK-AUTHORING-CORE.md § Lakehouse Management
ノートブックの管理SPARK-AUTHORING-CORE.md § Notebook Management
ノートブックの実行とジョブの管理SPARK-AUTHORING-CORE.md § Notebook Execution & Job Management
CI/CD と自動化のパターンSPARK-AUTHORING-CORE.md § CI/CD & Automation Patterns
Infrastructure-as-CodeSPARK-AUTHORING-CORE.md § Infrastructure-as-Code
パフォーマンスの最適化とリソース管理SPARK-AUTHORING-CORE.md § Performance Optimization & Resource Management
Runtime 2.0 のパフォーマンス機能data-engineering-patterns.md § Runtime 2.0 Performance FeaturesNEE、Efficient Scaledown、Liquid Clustering、Spark 4.1
作成時の注意点とトラブルシューティングSPARK-AUTHORING-CORE.md § Authoring Gotchas and Troubleshooting
クイックリファレンス:作成方法の判断ガイドSPARK-AUTHORING-CORE.md § Quick Reference: Authoring Decision Guide
推奨パターン(データエンジニアリング)data-engineering-patterns.md § Recommended patterns
データ取り込みの原則data-engineering-patterns.md § Data Ingestion Principles
変換パターンdata-engineering-patterns.md § Transformation Patterns
Delta Lake のベストプラクティスdata-engineering-patterns.md § Delta Lake Best Practices
品質保証の戦略data-engineering-patterns.md § Quality Assurance Strategies
推奨パターン(開発ワークフロー)development-workflow.md § Recommended patterns
ノートブックのライフサイクルdevelopment-workflow.md § Notebook Lifecycle
パラメーター化のパターンdevelopment-workflow.md § Parameterization Patterns
変数ライブラリ(ノートブックとパイプラインでの使用)development-workflow.md § Method 4: Variable Libraryノートブックでは getLibrary() とドット表記を、パイプラインでは libraryVariables と @pipeline().libraryVariables を使用します
変数ライブラリの定義ITEM-DEFINITIONS-CORE.md § VariableLibrary定義パーツ、デコード済みコンテンツ、型、パイプラインのマッピング、注意点
ローカルテスト戦略development-workflow.md § Local Testing Strategy
デバッグパターンdevelopment-workflow.md § Debugging Patterns
推奨パターン(インフラストラクチャ)infrastructure-orchestration.md § Recommended patterns
マテリアライズド レイク ビューのパターンmaterialized-lake-view-patterns.md § Recommended patternsMLV 設計のための Spark レイクハウス作成ガイダンス(MLV を使用するタイミング、レイヤー化のパターン)
MLV の増分更新パターンmlv-incremental-refresh-patterns.md § IR-friendly syntax guide更新への対応状況のレビューと、安全で破壊的変更を伴わない書き換えに使用します
MLV のスケジュールとジョブの管理mlv-operations-cliユーザーが MLV の更新のスケジュール設定、トリガー、監視、キャンセルを依頼した場合(作成ではない場合)は、ここに案内します
ワークスペースのプロビジョニング原則infrastructure-orchestration.md § Workspace Provisioning Principles
レイクハウスの構成ガイダンスinfrastructure-orchestration.md § Lakehouse Configuration Guidance
パイプライン設計パターンinfrastructure-orchestration.md § Pipeline Design Patterns
CI/CD 統合戦略infrastructure-orchestration.md § CI/CD Integration Strategy
ノートブック API — 使用するエンドポイントnotebook-api-operations.md § Quick Decisionリモートのノートブックを編集する場合は、ここから始めてください — getDefinition と updateDefinition
ノートブックの変更ワークフローnotebook-api-operations.md § Workflow取得、デコード、変更、エンコード、アップロードの5ステップ
ノートブックのオーケストレーション(並列実行+DAG)notebook-api-operations.md § Notebook Orchestration並列実行と実行順序の依存関係(ファンイン/ファンアウト)には notebookutils.notebook.runMultiple(DAG) を使用します。独自にスレッドを実装する代わりに使用してください
ノートブック API エラーリファレンスnotebook-api-operations.md § Error Reference411、400(updateMetadata)、401、403 の説明
ノートブック API の注意点notebook-api-operations.md § Gotchas/result サフィックス、空の本文、1行ごとの \n ルール、format=ipynb
既定のレイクハウスのバインドnotebook-api-operations.md § Default Lakehouse Binding.ipynb のメタデータと .py の # METADATA ブロック。ID は動的に検出してください
パブリック URL からのデータ取り込みnotebook-api-operations.md § Public URL Data Ingestion実際のソース URL を使用して Files/ にステージングし、その後 Spark で読み込みます
getDefinition(ノートブックのコンテンツを読み取る)notebook-api-operations.md § Step 1 — Retrieve Notebook ContentLRO フロー、?format=ipynb、空の本文(--body '{}')が必要
Base64 ノートブックペイロードのデコードnotebook-api-operations.md § Step 2 — Decode the Notebook Contentペイロードの抽出、base64 デコード、ipynb JSON 構造
ノートブックセルの変更notebook-api-operations.md § Step 3 — Modify the Notebook Contentセルの検索、行の挿入/置換、1行ごとの \n ルール
updateDefinition(ノートブックのコンテンツを書き込む)notebook-api-operations.md § Step 4 — Re-encode and Upload再エンコード、アップロード、LRO のポーリング、updateMetadata フラグの落とし穴
ノートブック更新の確認(任意)notebook-api-operations.md § Step 5 — Verify the Updateサイレントな失敗が疑われる場合を除き、省略してください。updateDefinition が Succeeded を返せば十分です(ルール2を参照)
ノートブック API エラーリファレンスnotebook-api-operations.md § Error Reference411、400(updateMetadata)、401、403 の説明
ノートブック API のエンドツーエンドスクリプトnotebook-api-operations.md § Complete End-to-End Scriptbash の全手順:get → decode → modify → encode → update → verify
クイックスタートの例SKILL.md § Quick Start Examplesよくある操作の最小限の例
— ノートブックのコード作成(共有モジュール)—
ノートブック作成のコアガイドSPARK-NOTEBOOK-AUTHORING-CORE.mdノートブックのコードタスクでは、まずこれを読んでください — 基礎、コード生成のアプローチ、モジュールの索引

必須/推奨/回避

必ず行うこと
  • 新しいノートブックの実行を作成する前に、最近のジョブを確認する — 過去 5 分間のジョブインスタンスを照会します。最近のジョブが存在する場合は、重複して作成せず、そのジョブを監視します
  • POST の直後にジョブインスタンス ID を取得する — 適切に監視できるよう、ほかの操作を行う前にジョブ ID を保存します
  • 操作を行う前に、ワークスペースの容量割り当てを確認する — ワークスペースには容量が割り当てられ、アクティブになっている必要があります
  • ユーザーからパブリックデータの URL が提供された場合は、Public URL Data Ingestion ポリシーに従う — 動作の詳細はリンク先のリソースセクションに記載し、内容のずれや重複を避けます
  • ノートブックのセルを正しい形式にする — コードが連結されないよう、セルのソース配列内の各行は必ず \n で終わらせます
  • Lakehouse Livy セッションの本文には正しい形式を使用する — name、driverMemory、driverCores、executorMemory、executorCores を含むフラットな JSON を送信します。{"payload": ...} でラップしたり、{"kind": "pyspark"} だけを送信したりしないでください。HTTP 500 エラーが発生します。有効なメモリ値(28g、56g、112g、224g)を使用してください。以下の Create Lakehouse Livy Session の例と SPARK-CONSUMPTION-CORE.md を参照してください
推奨事項
  • 適切な間隔でジョブの状態をポーリングする — ポーリングの間隔は 10~30 秒とし、妥当な時間(例:30 分)を過ぎたらタイムアウトします
  • POST の応答が読み取れない場合は、ジョブ履歴を確認する — POST が「No Content」または読み取れない応答を返した場合は、再試行する前に最近のジョブ(過去 1 分間)を照会します
  • 開発には Starter Pool を使用する — 開発/テストのワークロードでは useStarterPool: true を使用します
  • 本番環境には Workspace Pool を使用する — 本番環境のワークロードで一貫したパフォーマンスを得るには、useWorkspacePool: true を使用します
  • 作成時に Lakehouse のスキーマを有効にする — テーブルをより適切に整理するには、creationPayload.enableSchemas: true を設定します
  • 冪等性チェックを実装する — 既存の状態を先に確認し、操作の重複を防ぎます
避けること
  • 同じパラメーターで POST を再試行しない — ジョブ ID を取得済みの場合は、状態の確認には GET のみを使用し、重複するジョブインスタンスを作成しないでください
  • 容量の確認を省略しない — ワークスペースの容量が一時停止中、または割り当てられていない場合、操作は失敗します
  • 失敗直後に POST を再試行しない — 重複を防ぐため、まず既存のジョブや実行中のジョブを確認します
  • 既存のジョブを監視している間に新しい実行を作成しない — ジョブは一度に 1 つだけにします。新しい実行を送信する前に、現在のジョブが完了するのを待ちます
  • ワークスペース ID/Lakehouse ID をハードコードしない — アイテム一覧表示 API またはカタログ検索 API を使用して動的に検出します
  • %%sql ノートブックセルはここで担当し、sqldw-consumption-cli に委ねない — 「%%sql セルを書く」という依頼(または任意のノートブックマジックセルの依頼)は、セルから Lakehouse テーブルをクエリする場合でも、ノートブックセルの作成に該当します。ユーザーがノートブックセルではなく、SQL エンドポイントに対して通常の T-SQL クエリを実行したい場合に限り、sqldw-consumption-cli にルーティングします
  • 「ノートブック X を実行する」はここで担当する — 名前を指定して Fabric ノートブックを実行するのは、Jobs API(RunNotebook)を介したノートブック実行であり、このスキルの範囲です。spark-consumption-cli に委ねないでください。このスキルはアドホックな Livy セッションでコードを実行する場合にのみ使用します
  • Fabric ノートブックの実行に Lakehouse Livy セッションを使用しない — Lakehouse Livy セッション(パブリック Livy API)は、アドホックな対話型 Spark コードの実行に使用します。ノートブックをジョブとして実行するには、Jobs API(RunNotebook)を使用してください。これにより、内部で Notebook Spark セッションが作成されます。SPARK-AUTHORING-CORE.md § Notebook Execution & Job Management を参照してください
  • ノートブックから MLV の更新をスケジュールしない — ユーザーが「MLV の更新をスケジュールする」よう求めた場合は、REST API を使用する mlv-operations-cli にルーティングします。ノートブックで実行する REFRESH MATERIALIZED LAKE VIEW ... FULL は、定期的なスケジュールではなく、1 回限りの手動更新にのみ使用します

ルール — 最初に読み、常に遵守してください

ルール 1 — 操作の前に前提条件を確認します。 ワークスペースに容量が割り当てられていること(COMMON-CORE.md のワークスペースの作成と容量管理を参照)と、リソース ID が存在することを、操作を試みる前に確認してください。

ルール 2 — updateDefinition の成功を信頼します。 updateDefinition のポーリング結果が Succeeded であれば、コンテンツとレイクハウスのバインドが保持されたことを確認するには十分です。アップロードのたびに getDefinition を呼び出さないでください。これは大幅な遅延を招く非同期 LRO です。getDefinition は、本来の用途である変更前の現在のノートブックコンテンツの読み取りにのみ使用してください。

ルール 3 — ジョブの重複を防ぎ、実行状況を適切に監視します。 新しいノートブックの実行を送信する前に、必ず最近のジョブインスタンス(直近 5 分間)を確認してください。最近のジョブが存在する場合は、重複して作成せず、そのジョブを監視してください。送信後は、直ちにジョブインスタンス ID を取得してステータスをポーリングしてください。POST を再試行してはいけません。パターンについては SPARK-AUTHORING-CORE.md のジョブの監視を参照してください。

ルール 4 — ノートブックのコードを作成する場合は、必ず SPARK-NOTEBOOK-AUTHORING-CORE.md に従ってください。 ノートブックのセル内にコードを書く場合は、必ず最初に SPARK-NOTEBOOK-AUTHORING-CORE.md を読んでください。このドキュメントでは、コード生成のアプローチとルール、および詳細ガイド(レイクハウスのパス、接続、コンテキスト、オーケストレーションなど)へのリンクを含むモジュールインデックスを定義しています。このスキルの Spark 専用リソース(data-engineering-patterns.md、development-workflow.md)は、Spark 固有の実装詳細に使用してください。タスクがマテリアライズドレイクビューに関するものである場合は、作成と設計のガイダンスについて materialized-lake-view-patterns.md を、更新準備状況の分析について mlv-incremental-refresh-patterns.md を読んでください。


ノートブックのコード生成に関するクイックルール

ノートブック作成でよく使うタスクのクイックリファレンスです。共有の common/notebook-authoring/ コア(ルール 4/SPARK-NOTEBOOK-AUTHORING-CORE.md を参照)が正式な基準です。内容に相違がある場合は、共有コアに従ってください。

ユーザーの依頼必須の出力パターン
%%sql/レイクハウスをまたぐクエリセルFabric ノートブックの %%sql セルを返してください。コードまたは説明の注記に、指定されたワークスペース、レイクハウス、スキーマ、テーブルを含めてください。これはノートブックの作成であり、Spark を対話的に利用するものではありません。
パイプラインのコンテキスト検出notebookutils.runtime.context を使用し、isForPipeline = context["isForPipeline"] を含め、context["currentWorkspaceId"] を読み取ってください。
Spark での組み込みノートブックリソースファイルnotebookutils.nbResPath、builtin/、file: プレフィックスを使用してください。spark.read.json(f"file:{notebookutils.nbResPath}/builtin/config.json") のようにします。Spark と notebookutils.fs でリソースフォルダーのローカルパスを使用するには、file: が必要です。
Fabric 接続notebookutils.connections.getCredential("{connectionId}") を直接使用し、簡潔なコードサンプルを示してください。ウェブ検索は行わず、ツール/ターンの予算内に回答を収めてください。
最小限のスニペット
# Pipeline context
context = notebookutils.runtime.context
isForPipeline = context["isForPipeline"]
workspace_id = context["currentWorkspaceId"]
print(f"isForPipeline={isForPipeline}, workspace_id={workspace_id}")
# Spark read from notebook built-in resources
config_df = spark.read.option("multiline", "true").json(
    f"file:{notebookutils.nbResPath}/builtin/config.json"
)
display(config_df)
# PostgreSQL through a Fabric connection (fill in connectionId and host/db)
import psycopg2

credential = notebookutils.connections.getCredential("{connectionId}")
conn = psycopg2.connect(
    host="<postgres-host>",
    database="<database>",
    user=credential["username"],
    password=credential["password"],
)

クイックスタートの例

詳細なパターン、認証、包括的な API の使用方法については、以下を参照してください。

  • COMMON-CORE.md — Fabric REST API のパターン、認証、アイテムの検出
  • COMMON-CLI.md — az rest の使用方法、環境の検出、トークンの取得
  • SPARK-AUTHORING-CORE.md — ノートブックのデプロイ、レイクハウスの作成、ジョブの実行

以下に最小限のクイックスタート例を示します。本番環境で使用する場合は、必ず COMMON-* ファイルを参照してください。

ワークスペースとレイクハウスの作成
# See COMMON-CORE.md Environment URLs and SPARK-AUTHORING-CORE.md for full patterns
cat > /tmp/body.json << 'EOF'
{"displayName": "DataEng-Dev"}
EOF
workspace_id=$(az rest --method post --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/workspaces" \
  --body @/tmp/body.json --query "id" --output tsv)

cat > /tmp/body.json << 'EOF'
{"displayName": "DevLakehouse", "type": "Lakehouse", "creationPayload": {"enableSchemas": true}}
EOF
lakehouse_id=$(az rest --method post --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/workspaces/$workspace_id/items" \
  --body @/tmp/body.json --query "id" --output tsv)
スキーマを使用したレイクハウステーブルの整理
# See SPARK-AUTHORING-CORE.md Lakehouse Schema Organization for table organization patterns
#
# IMPORTANT: `CREATE SCHEMA` is only supported on schema-enabled lakehouses. On a
# lakehouse created WITHOUT `enableSchemas`, it fails with
# "Feature not supported on Apache Spark in Microsoft Fabric". Always detect schema
# support first, then branch: create schemas only when enabled, otherwise skip.
# Schema names are configurable. If your workspace standard is `raw`/`curated`
# instead of `bronze`/`silver`/`gold`, substitute those names consistently.
import uuid

def lakehouse_is_schema_enabled():
    # Probe schema support by attempting CREATE SCHEMA and catching the
    # platform-blocked error. Use a unique probe schema name to avoid
    # accidentally dropping a real pre-existing schema.
    probe = f"_schema_probe_{uuid.uuid4().hex}"
    try:
        spark.sql(f"CREATE SCHEMA IF NOT EXISTS {probe}")
        spark.sql(f"DROP SCHEMA IF EXISTS {probe}")
        return True
    except Exception as e:
        if "Feature not supported on Apache Spark in Microsoft Fabric" in str(e):
            return False
        raise

if lakehouse_is_schema_enabled():
    # Schema-enabled: create medallion schemas and write tables as `schema.table`.
    spark.sql("CREATE SCHEMA IF NOT EXISTS bronze")
    spark.sql("CREATE SCHEMA IF NOT EXISTS silver")
    spark.sql("CREATE SCHEMA IF NOT EXISTS gold")
else:
    # Not schema-enabled: skip CREATE SCHEMA (unsupported). Organize tables by name
    # prefix instead (e.g. `bronze_orders` / `raw_orders`, `silver_orders` /
    # `curated_orders`), or recreate the lakehouse with
    # `creationPayload.enableSchemas: true` if schemas are required.
    print("Lakehouse is not schema-enabled; skipping schema creation and using name prefixes.")
マテリアライズドレイクビュー(MLV)の作成と更新
-- See resources/materialized-lake-view-patterns.md for design guidance
-- and resources/mlv-incremental-refresh-patterns.md for refresh-readiness review.

-- Bronze/Silver/Gold schemas in a Lakehouse with schemas enabled
CREATE SCHEMA IF NOT EXISTS bronze;
CREATE SCHEMA IF NOT EXISTS silver;
CREATE SCHEMA IF NOT EXISTS gold;

-- A simple Silver MLV with data quality constraints
--
-- Prerequisite for incremental refresh: enable Change Data Feed (CDF) on every
-- source table the MLV reads from. Without CDF, optimal refresh can only choose
-- between no refresh (sources unchanged) and full refresh — never incremental.
-- See resources/mlv-incremental-refresh-patterns.md.
ALTER TABLE bronze.orders_raw SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.orders_clean
(
    CONSTRAINT valid_order_id CHECK (order_id IS NOT NULL) ON MISMATCH DROP
)
AS
SELECT
  order_id,
  customer_id,
  CAST(order_ts AS TIMESTAMP) AS order_ts,
  amount
FROM bronze.orders_raw;

-- Routine refresh is handled by the lakehouse Materialized lake views → Manage
-- schedule/lineage view; don't orchestrate from notebooks. The SQL form below is
-- documented only for forcing a one-time FULL recompute (troubleshooting / after
-- a correction). There is no documented SQL form for triggering incremental refresh.
REFRESH MATERIALIZED LAKE VIEW silver.orders_clean FULL;
Lakehouse Livy セッションの作成
# See SPARK-CONSUMPTION-CORE.md for Lakehouse Livy session configuration and management
# IMPORTANT: Body MUST be flat JSON with memory/cores — do NOT wrap in {"payload": ...}
cat > /tmp/body.json << 'EOF'
{"name": "dev-session", "driverMemory": "56g", "driverCores": 8, "executorMemory": "56g", "executorCores": 8, "conf": {"spark.dynamicAllocation.enabled": "true", "spark.fabric.pool.name": "Starter Pool"}}
EOF
az rest --method post --resource "https://api.fabric.microsoft.com" \
  --url "https://api.fabric.microsoft.com/v1/workspaces/$workspace_id/lakehouses/$lakehouse_id/livyapi/versions/2023-12-01/sessions" \
  --body @/tmp/body.json

Lakehouse Livy セッションの本文 — よくある間違い

  • ❌ {"payload": {"kind": "pyspark"}} → HTTP 500(ラッパーが誤っており、必須フィールドがありません)
  • ❌ {"kind": "pyspark"} → HTTP 500(driverMemory、executorMemory などがありません)
  • ✅ name、driverMemory、driverCores、executorMemory、executorCores を含むフラットな JSON(Starter Pool の場合は、任意で conf も指定)
Spark のパフォーマンス設定

ワークロード別の詳細な設定については、data-engineering-patterns.md の Delta Lake のベストプラクティスを参照してください。

クイックリファレンス:

# Write-heavy (Bronze): Disable V-Order, enable autoCompact
# Balanced (Silver): Enable V-Order, adaptive execution  
# Read-heavy (Gold): Vectorized reads, optimal parallelism
# See data-engineering-patterns.md for complete config tables

焦点:Spark/データエンジニアリング開発とノートブックのコード作成に不可欠な CLI パターンを紹介し、専門リソースへインテリジェントにルーティングします。包括的なパターンについては、必ず COMMON-* ファイルとリソースドキュメントを参照してください。

コメント