Skip to content

databricks-job.fbl

Example document databricks-job.fbl

Views generated from the file

This view is drawn by this site from databricks-job.fbl itself. It shows the data in the document, not the notation the diagram draws.

Bindings of databricks-job.fbl. Flowchart of the bindings in databricks-job.fbl: 1 binding(s) (job) as boxes with the files they claim and their body's format family, and 2 element rule(s) and 1 relation rule(s) as rounded boxes with the type each produces.
Generated from databricks-job.fbl at eb8f668
Diagram as text (Mermaid)
flowchart LR
  accTitle: Bindings of databricks-job.fbl
  accDescr: Flowchart of the bindings in databricks-job.fbl: 1 binding(s) (job) as boxes with the files they claim and their body's format family, and 2 element rule(s) and 1 relation rule(s) as rounded boxes with the type each produces.
  b_job["Databricks job<br/>job<br/>.yml .yaml, yaml family"]
  e_job_task("task<br/>Task")
  b_job -->|element| e_job_task
  e_job_cluster("cluster<br/>JobCluster")
  b_job -->|element| e_job_cluster
  r_job_dependency(["dependency<br/>Dependency"])
  b_job -->|relation| r_job_dependency

The file

Download databricks-job.fbl (3,961 bytes, unchanged from the source).

{
  "$schema": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Document",
  "fbl": "0.1",
  "doc": "One job of a Databricks Asset Bundle resource file (definitions/diagrams/databricks-job.dis, databricks-job.md). The file belongs to Databricks' tooling and has a shared extension, so the binding claims it only through a registration, whose resource header picks the job when the file declares several.",
  "bindings": {
    "job": {
      "title": "Databricks job",
      "claims": {
        "extensions": [".yml", ".yaml"],
        "shared": true,
        "registrationOnly": true,
        "origins": ["databricks/job"],
        "suggest": { "contains": ["resources:", "jobs:", "task_key:"] }
      },
      "body": { "kind": "file", "family": "yaml" },
      "reader": "declared",
      "text": { "newline": "crlf", "indent": 2, "sequenceIndent": "indented", "finalNewline": true, "quote": "double" },
      "registration": { "resource": { "capture": "job" }, "createOnFirstPlacement": false },
      "elements": [
        {
          "name": "task",
          "type": "Task",
          "at": "/resources/jobs/{job}/tasks/*",
          "when": "has(entry.task_key)",
          "attributes": {
            "key": { "key": "task_key", "reference": { "to": ["task"], "by": "key" }, "empty": "refuse" },
            "taskType": {
              "value": "['notebook_task', 'spark_python_task', 'python_wheel_task', 'sql_task', 'dbt_task', 'pipeline_task', 'run_job_task', 'condition_task', 'for_each_task', 'spark_jar_task'].exists(k, k in entry) ? ['notebook_task', 'spark_python_task', 'python_wheel_task', 'sql_task', 'dbt_task', 'pipeline_task', 'run_job_task', 'condition_task', 'for_each_task', 'spark_jar_task'].filter(k, k in entry)[0].replace('_task', '') : 'other'",
              "readOnly": "The type is which *_task mapping the file carries; change it in the file."
            },
            "clusterKey": { "key": "job_cluster_key", "empty": "remove", "reference": { "to": ["cluster"], "by": "key" } },
            "runIf": { "key": "run_if", "empty": "remove" }
          },
          "insert": {
            "place": "after-last",
            "container": "/resources/jobs/{job}/tasks",
            "keys": ["task_key", "depends_on", "job_cluster_key", "run_if"],
            "skeleton": "notebook_task:\n  notebook_path: ./{key}.ipynb\n"
          },
          "remove": { "cascade": ["dependency"] },
          "undo": "snapshot"
        },
        {
          "name": "cluster",
          "type": "JobCluster",
          "at": "/resources/jobs/{job}/job_clusters/*",
          "attributes": {
            "key": { "key": "job_cluster_key", "reference": { "to": ["cluster"], "by": "key" }, "empty": "refuse" },
            "sparkVersion": { "key": "spark_version", "child": "new_cluster" },
            "nodeType": { "key": "node_type_id", "child": "new_cluster" },
            "workers": { "key": "num_workers", "child": "new_cluster" }
          },
          "readOnly": "Job clusters are edited in the file."
        }
      ],
      "relations": [
        {
          "name": "dependency",
          "type": "Dependency",
          "at": "/resources/jobs/{job}/tasks/*/depends_on/*",
          "source": { "key": "task_key" },
          "target": { "parent": "task_key" },
          "attributes": {
            "outcome": { "key": "outcome", "empty": "remove" }
          },
          "insert": {
            "place": "after-last",
            "container": "depends_on",
            "create": { "at": { "after": "task_key" } },
            "keys": ["task_key", "outcome"]
          },
          "remove": { "container": "remove-when-empty" },
          "undo": "snapshot"
        }
      ],
      "template": {
        "text": "resources:\r\n  jobs:\r\n    {key}:\r\n      name: {base}\r\n      tasks:\r\n        - task_key: main\r\n          notebook_task:\r\n            notebook_path: ./main.ipynb\r\n"
      }
    }
  }
}

In an IDE

No IDE host runs this example yet.