← Files TableauARCHIVED FILE

skills/tableau-workbook-authoring/resources/examples/dual-axis.json

2.28 KB · Oct 2, 2026 · 00:22 UTC

↓ Download file

{
  "_description": "Dual-axis worksheet: two measures on the same axis using the + operator in the cols/rows shelf. Generates 3 panes (one per measure plus the combined-axes pane).",
  "_feature": "dual-axis,encoding",
  "shelf_expression": {
    "_description": "Dual-axis cols shelf: sum both measures using + operator",
    "_note": "The + operator on the shelf creates a dual axis. Both CI names must be distinct.",
    "cols_content": "([federated.XXXX].[sum:Sales:qk]+[federated.XXXX].[sum:Profit:qk])"
  },
  "column_instances": {
    "_description": "Both column-instances go into datasource-dependencies",
    "measure1": {
      "type": "column-instance",
      "attrs": {
        "column": "[Sales]",
        "derivation": "Sum",
        "name": "[sum:Sales:qk]",
        "pivot": "key",
        "type": "quantitative"
      }
    },
    "measure2": {
      "type": "column-instance",
      "attrs": {
        "column": "[Profit]",
        "derivation": "Sum",
        "name": "[sum:Profit:qk]",
        "pivot": "key",
        "type": "quantitative"
      }
    }
  },
  "panes": {
    "_description": "A dual-axis view generates 3 panes: pane id=1 (first measure), pane id=2 (second measure), and the combined-axes pane (id=3 with name='__combined_axes')",
    "pane_1": {
      "type": "pane",
      "attrs": { "id": "1" },
      "children": [
        { "type": "mark", "attrs": { "class": "Bar" } }
      ]
    },
    "pane_2": {
      "type": "pane",
      "attrs": { "id": "2" },
      "children": [
        { "type": "mark", "attrs": { "class": "Line" } }
      ]
    },
    "combined_axes_pane": {
      "_note": "This pane is auto-generated by Tableau for dual-axis. Do not manually add it.",
      "type": "pane",
      "attrs": { "id": "3", "name": "__combined_axes" }
    }
  },
  "notes": {
    "shelf_format": "([ds].[ci1]+[ds].[ci2]) — parens + + operator, both CI references",
    "vs_multi_measure": "Single axis multi-measure uses ([ds].[ci1]*[ds].[ci2]) with * operator",
    "mark_class_per_pane": "Each pane can have its own mark class — pane 1 and 2 are independently configurable",
    "synchronize_axes": "To synchronize Y axes: add synchronize-axis node in the view",
    "combined_axes_pane": "The __combined_axes pane is auto-created; don't manually add it — Tableau will create it"
  }
}

SHA-256: 226219d2706ed7deeceb482fc110fa439bc162cda7c5dc8359397398fbc5acfe