次の方法で共有


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 Synapse Spark クラスターの ID。 すべてのコンテキスト
poolName 使用されている Spark プールの名前。 すべてのコンテキスト
environmentId ジョブが実行されている環境 ID。 すべてのコンテキスト
environmentWorkspaceId 環境のワークスペース ID。 すべてのコンテキスト
userId 現在のユーザーのユーザー ID。 すべてのコンテキスト
userName 現在のユーザーのユーザー名。 すべてのコンテキスト
currentKernel 現在のノートブック カーネルの名前。 Python Notebook のみ
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

ヒント

isForPipelineisReferenceRunを一緒に使用して、さまざまな実行コンテキストに対して 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")