notebookutils.runtimeを使用して、現在のノートブック セッションに関するコンテキスト情報を読み取ります。 状態を変更することなく、ノートブック名、ワークスペースの詳細、既定の lakehouse 構成、パイプライン実行フラグ、参照実行階層などのメタデータを取得できます。
ランタイム コンテキストを使用して以下を行います。
- 動的構成 – 実行環境に基づいてノートブックの動作を調整します。
- 条件付きロジック – ノートブックがパイプラインで実行されるか、対話形式で実行されるかに応じて分岐ロジック。
- デバッグと監視 – ログ出力にコンテキスト プロパティを含め、関連する実行を関連付けます。
- 監査証跡 – コンプライアンスと系列の追跡のために実行メタデータをキャプチャします。
注
ランタイム コンテキストは、Python、PySpark、Scala、および R ノートブックで使用できます。 コンテキストは読み取り専用です。 notebookutils.runtime.contextによって返されるプロパティを変更することはできません。 一部のプロパティは、参照実行やパイプラインの実行など、特定のコンテキストでのみ設定され、それ以外の場合は null または空の値を返す場合があります。
セッション コンテキストの表示
notebookutils.runtime.contextを使用して、ノートブック名、既定の lakehouse、ワークスペース情報、セッションがパイプラインで実行されるかどうかなど、現在のセッションのコンテキスト情報を表示します。
次の表では、使用可能なプロパティについて説明します。
| 財産 | タイプ | 説明 | 在庫状況 |
|---|---|---|---|
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
ヒント
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")
ログにコンテキストを含める
デバッグと監視を容易にするために、実行コンテキストを使用してログ メッセージを強化します。