Contexto de tiempo de ejecución de notebookUtils para Fabric

Utilice notebookutils.runtime para leer información de contexto sobre la sesión del cuaderno actual. Puede recuperar metadatos como el nombre del cuaderno, los detalles del área de trabajo, la configuración predeterminada de Lakehouse, los indicadores de ejecución de la canalización y la jerarquía de ejecución de referencia sin modificar ningún estado.

Use el contexto en tiempo de ejecución para:

  • Configuración dinámica : adapte el comportamiento del cuaderno en función del entorno de ejecución.
  • Lógica condicional – Lógica de ramificación en función de si el notebook se ejecuta en un pipeline o de forma interactiva.
  • Depuración y supervisión : incluya propiedades de contexto en la salida del registro y ponga en correlación las ejecuciones relacionadas.
  • Seguimientos de auditoría – Capturar los metadatos de ejecución para el cumplimiento y la rastreabilidad.

Nota:

El contexto en tiempo de ejecución está disponible en cuadernos de Python, PySpark, Scala y R. El contexto es de solo lectura; no se puede modificar ninguna de las propiedades devueltas por notebookutils.runtime.context. Algunas propiedades solo se rellenan en contextos específicos, como ejecuciones de referencia o ejecuciones de canalización, y pueden devolver null o valores vacíos en caso contrario.

Visualización del contexto de sesión

Use notebookutils.runtime.context para ver la información de contexto de la sesión actual, incluido el nombre del cuaderno, el lago predeterminado, la información del área de trabajo y si la sesión se ejecuta en una canalización.

notebookutils.runtime.context

En la tabla siguiente se describen las propiedades disponibles.

Propiedad Tipo Descripción Availability
currentNotebookName String Nombre del cuaderno actual. Todos los contextos
currentNotebookId String Identificador único del cuaderno actual. Todos los contextos
currentWorkspaceName String Nombre del área de trabajo actual. Todos los contextos
currentWorkspaceId String Identificador del área de trabajo actual. Todos los contextos
defaultLakehouseName String Nombre para visualización del lakehouse predeterminado, si está definido. Cuando se adjunta el lakehouse predeterminado
defaultLakehouseId String La ID del lakehouse predeterminado, si se ha definido. Cuando se adjunta el lakehouse predeterminado
defaultLakehouseWorkspaceName String Nombre del espacio de trabajo del lakehouse por defecto, si está definido. Cuando se adjunta el lakehouse predeterminado
defaultLakehouseWorkspaceId String Identificador del área de trabajo del lakehouse por defecto, si se define. Cuando se adjunta el lakehouse predeterminado
currentRunId String En una ejecución de referencia, el identificador de ejecución actual. Solo ejecuciones de referencia
parentRunId String En una ejecución de referencia con ejecuciones anidadas, este identificador es el identificador de ejecución primario. Solo se ejecuta la referencia anidada
rootRunId String En una ejecución de referencia con ejecuciones anidadas, este identificador es el identificador de ejecución raíz. Solo se ejecuta la referencia anidada
isForPipeline Boolean Indica si la ejecución es para una canalización. Todos los contextos
isForInteractive Boolean Si la ejecución es una sesión interactiva. Todos los contextos
isReferenceRun Boolean Si la ejecución actual es una ejecución de referencia. Todos los contextos
referenceTreePath String La estructura de árbol de las ejecuciones de referencia anidadas, utilizada exclusivamente para la jerarquía de instantáneas en la página de monitoreo L2. Solo se ejecuta la referencia anidada
rootNotebookId String Identificador del cuaderno raíz en una ejecución de referencia. Solo ejecuciones de referencia
rootNotebookName String Nombre del cuaderno raíz en una ejecución de referencia. Solo ejecuciones de referencia
rootWorkspaceId String Identificador del área de trabajo del cuaderno de notas raíz en una ejecución de referencia. Solo ejecuciones de referencia
rootWorkspaceName String Nombre del espacio de trabajo del cuaderno raíz en una ejecución de referencia. Solo ejecuciones de referencia
activityId String ID de trabajo de Livy para la actividad en curso. Todos los contextos
hcReplId String ID de REPL en modo de alta concurrencia. Solo modo de alta concurrencia
clusterId String Identidad del clúster de Spark de Synapse. Todos los contextos
poolName String El nombre del grupo de Spark que se está usando. Todos los contextos
environmentId String Identificador de entorno donde se ejecuta el trabajo. Todos los contextos
environmentWorkspaceId String Identificador del área de trabajo del entorno. Todos los contextos
userId String Identificador de usuario del usuario actual. Todos los contextos
userName String Nombre de usuario del usuario actual. Todos los contextos
currentKernel String Nombre del kernel del cuaderno de notas actual. Notebook de Python solamente
productType String Identificador de tipo de producto (por ejemplo, Fabric). Todos los contextos

Ejemplos de uso

Acceso a la información de contexto básica

Almacene en caché el objeto de contexto cuando necesite leer varias propiedades.

context = notebookutils.runtime.context

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

Revisión del pipeline frente a la ejecución interactiva

Use la isForPipeline marca para bifurcar la lógica en función del modo de ejecución. Por ejemplo, puede aplicar un control de errores más estricto en las ejecuciones de canalización.

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

Sugerencia

Use isForPipeline y isReferenceRun juntos para implementar bifurcaciones triples para distintos contextos de ejecución. Este patrón le ayuda a adaptar los recuentos de reintentos, el nivel de detalle del registro y las estrategias de control de errores. En el caso de las cargas de trabajo de producción, las ejecuciones de canalización y referencia suelen requerir un control más estricto de errores que las sesiones interactivas.

Inspeccionar la jerarquía de ejecución de referencia

Cuando un cuaderno se ejecuta como parte de una ejecución de referencia anidada, puede realizar un seguimiento de la jerarquía completa desde la ejecución actual a la raíz:

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")

Incluir contexto en el registro

Enriquecer los mensajes de registro con contexto de ejecución para facilitar la depuración y la supervisión:

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")