Fabric の NotebookUtils ランタイム コンテキスト

notebookutils.runtimeを使用して、現在のノートブック セッションに関するコンテキスト情報を読み取ります。 状態を変更することなく、ノートブック名、ワークスペースの詳細、既定の lakehouse 構成、パイプライン実行フラグ、参照実行階層などのメタデータを取得できます。

ランタイム コンテキストを使用して以下を行います。

  • 動的構成 – 実行環境に基づいてノートブックの動作を調整します。
  • 条件付きロジック – ノートブックがパイプラインで実行されるか、対話形式で実行されるかに応じて分岐ロジック。
  • デバッグと監視 – ログ出力にコンテキスト プロパティを含め、関連する実行を関連付けます。
  • 監査証跡 – コンプライアンスと系列の追跡のために実行メタデータをキャプチャします。

注

ランタイム コンテキストは、Python、PySpark、Scala、および R ノートブックで使用できます。 コンテキストは読み取り専用です。 notebookutils.runtime.contextによって返されるプロパティを変更することはできません。 一部のプロパティは、参照実行やパイプラインの実行など、特定のコンテキストでのみ設定され、それ以外の場合は null または空の値を返す場合があります。

セッション コンテキストの表示

notebookutils.runtime.contextを使用して、ノートブック名、既定の lakehouse、ワークスペース情報、セッションがパイプラインで実行されるかどうかなど、現在のセッションのコンテキスト情報を表示します。

notebookutils.runtime.context

次の表では、使用可能なプロパティについて説明します。

財産 タイプ 説明 在庫状況
currentNotebookName 糸 現在のノートブックの名前。 すべてのコンテキスト
currentNotebookId 糸 現在のノートブックの一意の ID。 すべてのコンテキスト
currentWorkspaceName 糸 現在のワークスペースの名前。 すべてのコンテキスト
currentWorkspaceId 糸 現在のワークスペースの ID。 すべてのコンテキスト
defaultLakehouseName 糸 既定のレイクハウスの表示名 (定義されている場合)。 既定のレイクハウスがアタッチされている場合
defaultLakehouseId 糸 既定のレイクハウスの ID (定義されている場合)。 既定のレイクハウスがアタッチされている場合
defaultLakehouseWorkspaceName 糸 既定の lakehouse のワークスペース名 (定義されている場合)。 既定のレイクハウスがアタッチされている場合
defaultLakehouseWorkspaceId 糸 既定の lakehouse のワークスペース ID (定義されている場合)。 既定のレイクハウスがアタッチされている場合
currentRunId 糸 参照実行では、現在の実行 ID。 基準実行のみ
parentRunId 糸 入れ子になった実行を含む参照実行では、この ID は親実行 ID です。 入れ子参照の実行のみ
rootRunId 糸 入れ子になった実行を含む参照実行では、この ID はルート実行 ID です。 入れ子参照の実行のみ
isForPipeline ブール値 実行がパイプライン用かどうか。 すべてのコンテキスト
isForInteractive ブール値 実行が対話型セッションかどうか。 すべてのコンテキスト
isReferenceRun ブール値 現在の実行が参照実行であるかどうかを示します。 すべてのコンテキスト
referenceTreePath 糸 監視 L2 ページのスナップショット階層にのみ使用される、入れ子の参照ランのツリー構造。 入れ子参照の実行のみ
rootNotebookId 糸 参照実行のルートノートブックの ID。 基準実行のみ
rootNotebookName 糸 参照実行のルート ノートブックの名前。 基準実行のみ
rootWorkspaceId 糸 参照実行におけるルートノートブックのワークスペースID。 基準実行のみ
rootWorkspaceName 糸 参照実行のルート ノートブックのワークスペース名。 基準実行のみ
activityId 糸 現在のアクティビティの Livy ジョブ ID。 すべてのコンテキスト
hcReplId 糸 高コンカレンシーモードのREPL ID。 高コンカレンシー モードのみ
clusterId 糸 The identity of the Azure Synapse Spark cluster. すべてのコンテキスト
poolName 糸 使用されている Spark プールの名前。 すべてのコンテキスト
environmentId 糸 ジョブが実行されている環境 ID。 すべてのコンテキスト
environmentWorkspaceId 糸 環境のワークスペース ID。 すべてのコンテキスト
userId 糸 現在のユーザーのユーザー ID。 すべてのコンテキスト
userName 糸 現在のユーザーのユーザー名。 すべてのコンテキスト
currentKernel 糸 現在のノートブック カーネルの名前。 Pythonノートブックのみ
productType 糸 製品の種類の識別子 (たとえば、 Fabric)。 すべてのコンテキスト

使用例

基本的なコンテキスト情報にアクセスする

複数のプロパティを読み取る必要がある場合は、コンテキスト オブジェクトをキャッシュします。

context = notebookutils.runtime.context

print(f"Notebook: {context['currentNotebookName']}")
print(f"Workspace: {context['currentWorkspaceName']}")
print(f"Lakehouse: {context['defaultLakehouseName'] or 'None'}")

パイプラインと対話型の実行を確認する

isForPipeline フラグを使用して、実行モードに応じてロジックを分岐します。 たとえば、パイプラインの実行で、より厳密なエラー処理を適用できます。

context = notebookutils.runtime.context

if context['isForPipeline']:
    print("Pipeline mode: Strict error handling")
    error_handling = "strict"
    max_retries = 3
elif context['isReferenceRun']:
    print("Running as a referenced notebook")
    error_handling = "strict"
    max_retries = 2
else:
    print("Interactive mode: Lenient error handling")
    error_handling = "lenient"
    max_retries = 1

ヒント

isForPipelineとisReferenceRunを一緒に使用して、さまざまな実行コンテキストに対して 3 方向分岐を実装します。 このパターンは、再試行回数、ログの詳細度、およびエラー処理戦略を調整するのに役立ちます。 運用ワークロードの場合、パイプラインと参照の実行には、通常、対話型セッションよりも厳密なエラー処理が必要です。

参照実行階層を検査する

入れ子になった参照実行の一部としてノートブックを実行する場合は、現在の実行からルートまで階層全体をトレースできます。

context = notebookutils.runtime.context

if context['isReferenceRun']:
    print("Reference Run Context:")
    print(f"  Current Run ID: {context['currentRunId']}")
    print(f"  Parent Run ID: {context['parentRunId']}")
    print(f"  Root Run ID: {context['rootRunId']}")
    print(f"  Root Notebook: {context['rootNotebookName']}")
else:
    print("Not a reference run")

ログにコンテキストを含める

デバッグと監視を容易にするために、実行コンテキストを使用してログ メッセージを強化します。

context = notebookutils.runtime.context

run_id = context.get("currentRunId") or "interactive"
log_prefix = (
    f"[{context['currentWorkspaceName']}/{context['currentNotebookName']}]"
    f" run={run_id}"
)

print(f"{log_prefix} Processing started")