Skip to contents

A Fabric job is a run of an item such as a notebook, data pipeline, or Spark job definition. ‘fabricQueryR’ can start a run, wait for it, inspect recent runs, and manage recurring schedules.

Start with one on-demand run. Add a schedule only after that run succeeds and its parameters and runtime are understood. This guide uses a notebook, but the same pattern applies to other supported item types.

library(fabricQueryR)

notebook <- fabric_notebooks("Analytics workspace")[[1]]

Discovery returns a read-only FabricJobItem R6 object. Read its service fields directly. Its $run(), $status(), $wait(), and $cancel() methods correspond to fabric_job_run(), fabric_job_status(), fabric_job_wait(), and fabric_job_cancel(); its schedule methods correspond to the fabric_job_schedule_*() functions.

Run once and inspect history

Start an on-demand job with $run() (fabric_job_run()) and wait with $wait() (fabric_job_wait()):

job <- notebook$run(
  parameters = list(run_date = Sys.Date(), full_load = FALSE)
)
result <- notebook$wait(job, timeout = 900, cancel_on_timeout = TRUE)
result$status

The first call returns immediately with a job handle. The wait call checks Fabric until the job finishes or the 15-minute local deadline is reached. cancel_on_timeout = TRUE asks Fabric to cancel the run if that deadline is exceeded.

Notebook submission uses Fabric’s released workload-specific route so run parameters and compute settings are applied. Polling uses the stable Core Job Scheduler by default. If a Notebook workflow needs the beta status fields, such as its exit value, use $status() (fabric_job_status()) and opt in explicitly:

detailed <- notebook$status(
  job,
  notebook_details = TRUE,
  respect_retry_after = FALSE
)
detailed$exit_value

Running a job needs Execute permission. Reading history needs Read permission, while changing schedules normally needs Write access. If an on-demand run works but schedule creation does not, ask the item owner to check your Write access.

List runs with $instances() (fabric_job_instances()) and refresh a result with $status() (fabric_job_status()):

history <- notebook$instances()

history[[1]]$invoke_type
history[[1]]$status
history[[1]]$start_time
history[[1]]$failure_reason

Refresh a history entry directly without copying its instance ID:

latest <- notebook$status(history[[1]])

Build schedule configurations

Build and validate a schedule configuration before creating the schedule in Fabric. Boundaries are UTC instants, while recurring clock times use a Windows time-zone identifier so Fabric can apply daylight-saving rules.

daily <- fabric_job_schedule_config(
  "Daily",
  start_time = "2026-10-01T00:00:00Z",
  end_time = "2027-10-01T00:00:00Z",
  time_zone = "W. Europe Standard Time",
  times = "08:30"
)

Fabric supports minute-interval, daily, weekly, and monthly schedules. Weekly schedules add weekdays; monthly schedules select a numbered day or an ordinal weekday. See ?fabric_job_schedule_config for those shapes. Use a Windows time zone such as "W. Europe Standard Time", not an IANA name such as "Europe/Amsterdam".

weekly <- fabric_job_schedule_config(
  "Weekly",
  start_time = "2026-10-01T00:00:00Z",
  end_time = "2027-10-01T00:00:00Z",
  time_zone = "W. Europe Standard Time",
  times = "07:30",
  weekdays = c("Monday", "Thursday")
)

Create, list, update, and disable

Create one schedule with $schedule_create() (fabric_job_schedule_create()), then list schedules with $schedules() (fabric_job_schedules()):

schedule <- notebook$schedule_create(weekly, enabled = TRUE)
schedules <- notebook$schedules()

Lakehouse schedules have no safe generic job default. Pass the documented job_type explicitly; for example, materialized Lake View refresh schedules use job_type = "RefreshMaterializedLakeViews" together with an execution_data list containing mlvExecutionDefinitionId. Microsoft labels this Lakehouse scheduling API as Preview, for evaluation and development only, and does not recommend it for production use.

Disable or restart a schedule with $schedule_update() (fabric_job_schedule_update()) without rebuilding its configuration:

disabled <- notebook$schedule_update(
  schedule,
  enabled = FALSE
)

restarted <- notebook$schedule_update(
  schedule,
  enabled = TRUE
)

Fabric may disable a schedule after repeated failures. Re-enable it only after inspecting recent job history and correcting the cause.

Delete a schedule

Deletion with $schedule_delete() (fabric_job_schedule_delete()) is permanent and requires explicit confirmation:

notebook$schedule_delete(schedule, confirm = TRUE)

Microsoft documents scheduler throttling, maximum job duration and concurrency, schedule expiry after prolonged user inactivity, and auto-disable behavior in the Fabric job scheduler guide.