@metabase/cli 0.1.7 → 0.1.8-alpha.drop-workspaces.a42f32e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/README.md +2 -224
- package/dist/{add-collection-DQjTlDNF.mjs → add-collection-CuLyFlrE.mjs} +5 -5
- package/dist/add-collection-DkucDB2N.mjs +10 -0
- package/dist/{archive-BXzghEQX.mjs → archive-C1lk1rR7.mjs} +6 -7
- package/dist/{archive-CBGKzEAl.mjs → archive-C2AfP9G_.mjs} +5 -6
- package/dist/{archive-DTN9tLGT.mjs → archive-COAWrOVp.mjs} +5 -6
- package/dist/{archive-De8jzzq7.mjs → archive-DNVqPMhp.mjs} +6 -7
- package/dist/{archive-CuVk8iwN.mjs → archive-Dt1qDaIF.mjs} +6 -7
- package/dist/{archive-B3qiL-kK.mjs → archive-mdSqCzVw.mjs} +5 -6
- package/dist/auth-WILFa6Xf.mjs +19 -0
- package/dist/{body-tcURGnGh.mjs → body-b76dLVpL.mjs} +2 -2
- package/dist/{branches-CIGkjXIk.mjs → branches-DwV1q-4h.mjs} +5 -6
- package/dist/{cancel-pPsvgJ0Z.mjs → cancel-DDKstWQM.mjs} +4 -5
- package/dist/{cancel-task-BLGE4UlL.mjs → cancel-task-DX_OdGan.mjs} +5 -6
- package/dist/{render-0_GsapXa.mjs → capabilities-Dj3NgPHg.mjs} +28 -2
- package/dist/card-Bd8jLmZW.mjs +20 -0
- package/dist/{card-ezYiriML.mjs → card-BtPiKjbB.mjs} +1 -1
- package/dist/{cards-Dq3nx_9n.mjs → cards-CYKPNOp3.mjs} +5 -6
- package/dist/cli.mjs +23 -24
- package/dist/collection-gz4k8jWl.mjs +20 -0
- package/dist/{create-BrUqxreg.mjs → create-B4aKAWaQ.mjs} +7 -8
- package/dist/{create-9DBTkbMq.mjs → create-BfRIHlHk.mjs} +11 -12
- package/dist/{create-aPaUEGdr.mjs → create-BfseKO3F.mjs} +7 -8
- package/dist/{create-w3mQg9n4.mjs → create-BqiR1kvi.mjs} +7 -8
- package/dist/{create-BcgoukG4.mjs → create-BscN4jFB.mjs} +9 -10
- package/dist/{create-BdPoSk_7.mjs → create-CE1WZ4du.mjs} +9 -10
- package/dist/{create-DHscDhRd.mjs → create-CQxJpVXk.mjs} +9 -10
- package/dist/{create-BIphz0kO.mjs → create-DRhRPfD-.mjs} +10 -11
- package/dist/{create-branch-DGoc9CUU.mjs → create-branch-2yEa7-9x.mjs} +5 -6
- package/dist/{current-task-DZM28rnr.mjs → current-task-5buIatuG.mjs} +5 -6
- package/dist/dashboard-BL8_Ysst.mjs +21 -0
- package/dist/{database-BXiue1in.mjs → database-_Td7rG4o.mjs} +1 -1
- package/dist/db-Bw8m4M2J.mjs +22 -0
- package/dist/{delete-BrJOotpW.mjs → delete-C3i5dE4s.mjs} +6 -7
- package/dist/{delete-BPaFdHZP.mjs → delete-CF8in6gw.mjs} +6 -7
- package/dist/{delete-runtime-uuYbd4k2.mjs → delete-runtime-Bo7v-0au.mjs} +2 -2
- package/dist/{delete-table-CNupWUO0.mjs → delete-table-m-6cOPnX.mjs} +6 -7
- package/dist/{dirty-BCkNOY8c.mjs → dirty-hGWiemB-.mjs} +5 -6
- package/dist/{eid-CLY5X0Uw.mjs → eid-BP0H-LTl.mjs} +6 -7
- package/dist/{error-ZsFeevV2.mjs → error-BLukG0Vf.mjs} +1 -1
- package/dist/{export-CgHgWW3I.mjs → export-wh9l0s7F.mjs} +7 -8
- package/dist/field-GgVH-HUD.mjs +18 -0
- package/dist/{fields-RkRWU-u9.mjs → fields-BD52yx5k.mjs} +6 -7
- package/dist/{get-CTDqioaj.mjs → get-436DayeX.mjs} +5 -6
- package/dist/{get-B8l4t4Pz.mjs → get-B1jyFBkg.mjs} +5 -6
- package/dist/{get-42tJ7BNp.mjs → get-BLUldOxi.mjs} +5 -6
- package/dist/{get-sMpa-X4E.mjs → get-BVMyLnhh.mjs} +6 -7
- package/dist/{get-B9kwSs6U.mjs → get-BhFiIyyH.mjs} +5 -6
- package/dist/{get-CRvbChoX.mjs → get-C5PKCCzj.mjs} +5 -6
- package/dist/{get-y17zJMnU.mjs → get-C_LAPJ7J.mjs} +5 -6
- package/dist/{get-CiZrZJLt.mjs → get-CgdzDOTX.mjs} +7 -8
- package/dist/{get-DmzgSgrl.mjs → get-Cu7Om0g2.mjs} +6 -7
- package/dist/{get-DsqGHNHN.mjs → get-DETcYP1F.mjs} +5 -6
- package/dist/{get-Bo4Cpd_c.mjs → get-DSmnRBrw.mjs} +5 -7
- package/dist/{get-CvmqPN30.mjs → get-EJOWmpkC.mjs} +5 -6
- package/dist/{get-run-CBwcRc8E.mjs → get-run-BEvwTmr7.mjs} +5 -6
- package/dist/{get-C9O_aEGo.mjs → get-z9XIWbVG.mjs} +5 -6
- package/dist/git-sync-oYYp_Z6v.mjs +28 -0
- package/dist/{has-remote-changes-CfRidwXT.mjs → has-remote-changes-BNjTil7k.mjs} +5 -6
- package/dist/{import-BZV0Z2KR.mjs → import-C0iBM0UR.mjs} +7 -8
- package/dist/is-dirty-C_RyVkc1.mjs +9 -0
- package/dist/{is-dirty-hKcB4OH9.mjs → is-dirty-D_e5Xoke.mjs} +4 -4
- package/dist/{items-C94eW2Yd.mjs → items-D6h0ejme.mjs} +7 -8
- package/dist/{list-DfDZr55C.mjs → list-B3CgwSU4.mjs} +6 -7
- package/dist/{list-BS_Bxejg.mjs → list-BJxm0-6m.mjs} +6 -7
- package/dist/{list-DuSoEk_J.mjs → list-BZkOPBmK.mjs} +6 -7
- package/dist/{list-BJXaGk-z.mjs → list-CSX_xieo.mjs} +4 -5
- package/dist/{list-C-oZe1_p.mjs → list-CWItVq2v.mjs} +5 -6
- package/dist/{list-CU6sOfI-.mjs → list-CkCgkJFh.mjs} +5 -6
- package/dist/{list-BmHoYJr7.mjs → list-CmVbbX3f.mjs} +4 -5
- package/dist/{list-DrINpVLM.mjs → list-D0ZVA1e1.mjs} +4 -5
- package/dist/{list-HS15y_WN.mjs → list-DLC82gFo.mjs} +4 -5
- package/dist/{list-BFlzLGlw.mjs → list-DcV2bfg8.mjs} +4 -5
- package/dist/{list-B0V7FeL2.mjs → list-ZX3ooQ9h.mjs} +4 -6
- package/dist/{list-CF1pMN4S.mjs → list-pXgd_HTy.mjs} +4 -5
- package/dist/{list-CqN4gvCk.mjs → list-r3gm10tz.mjs} +5 -6
- package/dist/{login-enh9Yimb.mjs → login-DSS8QywX.mjs} +9 -10
- package/dist/{logout-BWLPLDh8.mjs → logout-B6acbVng.mjs} +4 -5
- package/dist/{manifest-BNh0Lw6p.mjs → manifest-B_OfG-Ss.mjs} +1 -2
- package/dist/measure-DDn0jAB8.mjs +19 -0
- package/dist/{metadata-D2TxboMm.mjs → metadata-C-bcafH-.mjs} +6 -7
- package/dist/{metadata-BTTEBWdS.mjs → metadata-D_wFDaCb.mjs} +7 -8
- package/dist/{parse-id-0_tOPvfI.mjs → parse-id-BapRoz4R.mjs} +1 -1
- package/dist/{path-C8GrBdgT.mjs → path-DmYXSF59.mjs} +4 -6
- package/dist/{poll-4eoh5J0r.mjs → poll-CYFFYOiB.mjs} +1 -1
- package/dist/{poll-task-51WRdugU.mjs → poll-task-Dalt24ov.mjs} +2 -2
- package/dist/{preflight-BhsErYz3.mjs → preflight-G7NUAKod.mjs} +3 -3
- package/dist/{query-BBCAF-tG.mjs → query-COWTai5j.mjs} +11 -12
- package/dist/{query-DYVBnu9d.mjs → query-DRosi9Ha.mjs} +7 -8
- package/dist/{query-result-ABPLz6I4.mjs → query-result-PoQE05Pe.mjs} +1 -1
- package/dist/{remove-collection-CBAHz0Dk.mjs → remove-collection-CLWw-48s.mjs} +7 -8
- package/dist/{rescan-values-cfTSNQZo.mjs → rescan-values-C3L03Crf.mjs} +7 -8
- package/dist/{run-qgdEJv-I.mjs → run-PL8TRDGx.mjs} +7 -8
- package/dist/{runs-BFIIH4GL.mjs → runs-B86YP36a.mjs} +6 -7
- package/dist/{runtime-Duawf5lE.mjs → runtime-C2EDX9E7.mjs} +10 -77
- package/dist/{schema-tables-C2xM3dho.mjs → schema-tables-CZr0QT1g.mjs} +6 -7
- package/dist/{schemas-BP7xiktH.mjs → schemas-DnGJlmQl.mjs} +4 -5
- package/dist/{search-DYP3lOlq.mjs → search-thFe-n3F.mjs} +4 -5
- package/dist/segment-ydERbF0L.mjs +19 -0
- package/dist/{set-DpRQqdo7.mjs → set-CDQE4s8H.mjs} +7 -8
- package/dist/{setting-DUa96KF3.mjs → setting-BTMmbmKB.mjs} +3 -3
- package/dist/{setup-BPlllnim.mjs → setup-mOHveOFI.mjs} +6 -7
- package/dist/{skills-BkregMyb.mjs → skills-BDPVoBWU.mjs} +33 -2
- package/dist/{skills-SqbPo0BI.mjs → skills-d2iLclsk.mjs} +3 -3
- package/dist/snippet-i1Z8-yJQ.mjs +19 -0
- package/dist/{stash-C89zNKxo.mjs → stash-B4RTStPo.mjs} +7 -8
- package/dist/{status-B1EJ_jv0.mjs → status-B7H0JH52.mjs} +6 -7
- package/dist/{status-BNvFPemM.mjs → status-DoVvjifV.mjs} +4 -5
- package/dist/{summary-Cihbx0Qs.mjs → summary-BsdiF7LZ.mjs} +5 -6
- package/dist/{sync-schema-C3odu0ZH.mjs → sync-schema-CvXkT9Rg.mjs} +7 -8
- package/dist/{table-qDD2kApF.mjs → table-CkWja2UH.mjs} +1 -1
- package/dist/table-DoAu2iwB.mjs +19 -0
- package/dist/transform-JzFSQdFi.mjs +24 -0
- package/dist/transform-job-C8q3Fcf7.mjs +19 -0
- package/dist/{tree-mvq9gM9w.mjs → tree-CGBtDXfk.mjs} +4 -5
- package/dist/{update-CbBnHz42.mjs → update-B89kI8l9.mjs} +10 -11
- package/dist/{update-CtOo3LsX.mjs → update-BA48uHRd.mjs} +9 -10
- package/dist/{update-DCrOQ1PW.mjs → update-BHit5RyS.mjs} +11 -12
- package/dist/{update-BoIiuC70.mjs → update-BJhk_A4R.mjs} +10 -11
- package/dist/{update-tRparnUs.mjs → update-BJn9ZitD.mjs} +12 -13
- package/dist/{update-C0jP0AKT.mjs → update-C44bumhM.mjs} +8 -9
- package/dist/{update-Rr4usmCo.mjs → update-DqAKFmkw.mjs} +8 -9
- package/dist/{update-VvKMnwsM.mjs → update-JpO3b8g3.mjs} +10 -11
- package/dist/{update-DwRxdflw.mjs → update-WMzbyUw2.mjs} +8 -9
- package/dist/{update-dashcard-DFvIz8Qj.mjs → update-dashcard-C8BGZtY7.mjs} +8 -9
- package/dist/{upgrade-D-Rl_fH9.mjs → upgrade-DeiR3fjf.mjs} +34 -7
- package/dist/{uuid-BSVUk8u2.mjs → uuid-BWvbC2Z8.mjs} +3 -4
- package/dist/{validate-dPEOnOf8.mjs → validate-CqVB_3_p.mjs} +1 -1
- package/dist/{validate-query-CYvOP8Ld.mjs → validate-query-BUTNK00f.mjs} +2 -2
- package/dist/{values-D1RJE4H6.mjs → values-07BZxAK5.mjs} +5 -6
- package/dist/{verify-A7BWfBPZ.mjs → verify-D2q5RI4i.mjs} +1 -1
- package/dist/{wait-DK5QDZ8n.mjs → wait-DWyuBO_X.mjs} +6 -7
- package/dist/{wait-flags-DlfbIXHw.mjs → wait-flags-Crs-j7Z8.mjs} +2 -2
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +13 -26
- package/skill-data/git-sync/SKILL.md +8 -63
- package/skill-data/transform/SKILL.md +3 -4
- package/skill-data/visualization/SKILL.md +158 -0
- package/skill-data/visualization/references/settings.md +414 -0
- package/skills/metabase-cli/SKILL.md +1 -1
- package/dist/add-collection-C9BdVBs2.mjs +0 -11
- package/dist/auth-D9eAyVoG.mjs +0 -19
- package/dist/capabilities-7e9MgquN.mjs +0 -29
- package/dist/card-DDDrWcDU.mjs +0 -20
- package/dist/collection-DkEvCDar.mjs +0 -20
- package/dist/create-B1dyuL9Y.mjs +0 -54
- package/dist/credentials-qryRLUed.mjs +0 -88
- package/dist/dashboard-BLf1RZlk.mjs +0 -21
- package/dist/database-Ce1gOJF7.mjs +0 -17
- package/dist/db-CWTFe_FZ.mjs +0 -22
- package/dist/delete-FFj1xQWO.mjs +0 -104
- package/dist/deprovision-BNr9fPDY.mjs +0 -67
- package/dist/docker-Ds252Mwc.mjs +0 -515
- package/dist/field-LL6W_c-c.mjs +0 -18
- package/dist/git-sync-CrWTo3YX.mjs +0 -28
- package/dist/is-dirty-CPzOnnH6.mjs +0 -10
- package/dist/license-B37055sr.mjs +0 -17
- package/dist/list-DUXdt0XI.mjs +0 -36
- package/dist/logs-Cu3QtvPs.mjs +0 -60
- package/dist/measure-CDlEPFtB.mjs +0 -19
- package/dist/parse-schemas-D-qVLl4z.mjs +0 -12
- package/dist/process-CM7Uu5q_.mjs +0 -105
- package/dist/provision-Chf86BF0.mjs +0 -83
- package/dist/ps-CEYtsKBj.mjs +0 -80
- package/dist/ps-CIDwaubS.mjs +0 -11
- package/dist/remove-2yInufA6.mjs +0 -64
- package/dist/segment-B6HnNGDs.mjs +0 -19
- package/dist/set-Tt-ioa4L.mjs +0 -68
- package/dist/snippet-dJ68tGsl.mjs +0 -19
- package/dist/start-DJZA67WF.mjs +0 -414
- package/dist/status-D5wSqYV_.mjs +0 -34
- package/dist/stop-5rCLmkCQ.mjs +0 -87
- package/dist/table-J2f0STnB.mjs +0 -19
- package/dist/transform-job-OW4SDhsQ.mjs +0 -19
- package/dist/transform-q1LYWQtW.mjs +0 -24
- package/dist/update-DEZayTb4.mjs +0 -78
- package/dist/url-BB6jeNQj.mjs +0 -56
- package/dist/wait-B17I_pWy.mjs +0 -19
- package/dist/workspace-D8HtUN0y.mjs +0 -72
- package/dist/workspace-credentials-8CBMQJFz.mjs +0 -100
- package/dist/workspace-ri6r3zWo.mjs +0 -25
- package/dist/yaml-Gv6wRFMF.mjs +0 -43
- package/skill-data/viz/SKILL.md +0 -137
- package/skill-data/viz/references/settings.md +0 -312
- package/skill-data/workspace/SKILL.md +0 -390
- /package/dist/{body-flags-D7q87Btw.mjs → body-flags-D78h_-Ua.mjs} +0 -0
- /package/dist/{collection-Bcy8cWYH.mjs → collection-B3sPXRLs.mjs} +0 -0
- /package/dist/{dashboard-B4bn3z6t.mjs → dashboard-FY5UzJ_Z.mjs} +0 -0
- /package/dist/{field-E0IBy4Uw.mjs → field-MGxpNQUH.mjs} +0 -0
- /package/dist/{input-cMSEqISy.mjs → input-xewHccej.mjs} +0 -0
- /package/dist/{key-vkNkH82H.mjs → key-C2XG394c.mjs} +0 -0
- /package/dist/{measure-Bt3InQsA.mjs → measure-ClESGxIb.mjs} +0 -0
- /package/dist/{paginate-BexjkjbY.mjs → paginate-Dfm9eO9A.mjs} +0 -0
- /package/dist/{parse-enum-CrEWOhuY.mjs → parse-enum-Dr7ACrTR.mjs} +0 -0
- /package/dist/{parse-ref-DKag6a6I.mjs → parse-ref-BiETXmvm.mjs} +0 -0
- /package/dist/{prompt-CFKoys7k.mjs → prompt-u4WhE4T5.mjs} +0 -0
- /package/dist/{render-khznBlla.mjs → render-BQHJhSP1.mjs} +0 -0
- /package/dist/{revision-message-flag-DY29-cgz.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
- /package/dist/{segment-DhBmcr_E.mjs → segment-Be2v4ilr.mjs} +0 -0
- /package/dist/{setting-BzCng1Ub.mjs → setting-oL97SNeO.mjs} +0 -0
- /package/dist/{snippet-bi_0XbNT.mjs → snippet-xh42tYly.mjs} +0 -0
- /package/dist/{transform-BKahefz_.mjs → transform-DyJb0bV0.mjs} +0 -0
- /package/dist/{transform-job-DjhoJbiV.mjs → transform-job-DpDGoqQt.mjs} +0 -0
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
# visualization_settings — full key catalog
|
|
2
|
-
|
|
3
|
-
Exhaustive reference for `visualization_settings`. The SKILL.md body covers the
|
|
4
|
-
common cases; this file is the long tail. Keys are grouped by the `display` they
|
|
5
|
-
apply to (see the display → namespace map in the body).
|
|
6
|
-
|
|
7
|
-
**Form note.** Every key name and value enum below is identical in the API/numeric
|
|
8
|
-
form (`mb card create`) and the portable git-sync YAML form. The only form-specific
|
|
9
|
-
constructs are (1) `column_settings` `["ref", …]` keys, where the inner field id is
|
|
10
|
-
numeric in the API form and a name-path in the portable form, and (2) click-behavior
|
|
11
|
-
dimension targets, same rule. All the column-naming keys (`graph.dimensions`,
|
|
12
|
-
`pie.dimension`, `table.columns[].name`, …) are output column-name strings in both.
|
|
13
|
-
|
|
14
|
-
JSON-body reminder: examples here are shown as YAML/JSON fragments. In a real
|
|
15
|
-
`--body`/`--file` JSON payload, `column_settings` keys are JSON **strings** with
|
|
16
|
-
escaped inner quotes: `"[\"name\",\"TOTAL\"]"`.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Common
|
|
21
|
-
|
|
22
|
-
| Setting | Type | Description |
|
|
23
|
-
| --------------------- | ------- | ------------------------------------------------------------------- |
|
|
24
|
-
| `column_settings` | map | Per-column formatting, keyed by column-reference string (see below) |
|
|
25
|
-
| `card.title` | string | Override the card's display title on a dashboard |
|
|
26
|
-
| `card.description` | string | Override the description |
|
|
27
|
-
| `dashcard.background` | boolean | Show/hide the dashcard background (dashcards only) |
|
|
28
|
-
|
|
29
|
-
## Graph (`bar`, `line`, `area`, `combo`, `scatter`, `waterfall`, `row`, `boxplot`)
|
|
30
|
-
|
|
31
|
-
| Setting | Type | Values / notes |
|
|
32
|
-
| --------------------------------------- | -------------- | ------------------------------------------------------------------------ |
|
|
33
|
-
| `graph.dimensions` | array | Dimension (x-axis) output column names |
|
|
34
|
-
| `graph.metrics` | array | Metric (y-axis) output column names |
|
|
35
|
-
| `graph.series_order` | array | Explicit series display order |
|
|
36
|
-
| `graph.show_values` | boolean | Show value labels on data points |
|
|
37
|
-
| `graph.label_values_frequency` | string | `"fit"`, `"all"` |
|
|
38
|
-
| `graph.show_stack_values` | string | `"total"`, `"individual"`, `"all"` |
|
|
39
|
-
| `graph.x_axis.title_text` | string | X-axis title |
|
|
40
|
-
| `graph.x_axis.scale` | string | `"ordinal"`, `"histogram"`, `"timeseries"`, `"linear"`, `"pow"`, `"log"` |
|
|
41
|
-
| `graph.x_axis.axis_enabled` | boolean/string | `true`, `false`, `"compact"`, `"rotate-45"`, `"rotate-90"` |
|
|
42
|
-
| `graph.y_axis.title_text` | string | Y-axis title |
|
|
43
|
-
| `graph.y_axis.scale` | string | `"linear"`, `"pow"`, `"log"` |
|
|
44
|
-
| `graph.y_axis.auto_range` | boolean | Auto-scale Y axis |
|
|
45
|
-
| `graph.y_axis.min` / `graph.y_axis.max` | number | Y bounds when `auto_range` is false |
|
|
46
|
-
| `graph.show_goal` | boolean | Show goal line |
|
|
47
|
-
| `graph.goal_value` | number | Goal line value |
|
|
48
|
-
| `graph.goal_label` | string | Goal line label |
|
|
49
|
-
| `graph.show_trendline` | boolean | Show trend line |
|
|
50
|
-
| `graph.max_categories_enabled` | boolean | Limit number of categories |
|
|
51
|
-
| `graph.max_categories` | number | Maximum categories shown |
|
|
52
|
-
| `graph.other_category_aggregation_fn` | string | `"sum"`, `"avg"`, `"min"`, `"max"` |
|
|
53
|
-
| `stackable.stack_type` | string | `null`, `"stacked"`, `"normalized"` |
|
|
54
|
-
|
|
55
|
-
### Series settings
|
|
56
|
-
|
|
57
|
-
Per-series overrides keyed by series name (the metric column name, or the breakout
|
|
58
|
-
value for a split series):
|
|
59
|
-
|
|
60
|
-
```yaml
|
|
61
|
-
series_settings:
|
|
62
|
-
Revenue:
|
|
63
|
-
display: line # override this series' type in a combo chart
|
|
64
|
-
color: "#509EE3"
|
|
65
|
-
"line.style": solid # "solid", "dashed", "dotted"
|
|
66
|
-
"line.size": normal # "S", "M", "L"
|
|
67
|
-
"line.interpolate": linear # "linear", "cardinal", "step-before", "step-after"
|
|
68
|
-
"line.missing": interpolate # "interpolate", "zero", "none"
|
|
69
|
-
"line.marker_enabled": true
|
|
70
|
-
axis: left # "left", "right"
|
|
71
|
-
show_series_values: true
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Waterfall extras (`display: waterfall`)
|
|
75
|
-
|
|
76
|
-
| Setting | Type | Description |
|
|
77
|
-
| -------------------------- | ------- | ----------------------- |
|
|
78
|
-
| `waterfall.increase_color` | string | Color for increases |
|
|
79
|
-
| `waterfall.decrease_color` | string | Color for decreases |
|
|
80
|
-
| `waterfall.total_color` | string | Color for the total bar |
|
|
81
|
-
| `waterfall.show_total` | boolean | Show the total bar |
|
|
82
|
-
|
|
83
|
-
### BoxPlot extras (`display: boxplot`)
|
|
84
|
-
|
|
85
|
-
| Setting | Type | Values |
|
|
86
|
-
| ---------------------- | ------- | -------------------------------------- |
|
|
87
|
-
| `boxplot.whisker_type` | string | `"min-max"`, `"tukey"`, `"percentile"` |
|
|
88
|
-
| `boxplot.points_mode` | string | `"none"`, `"outliers"`, `"all"` |
|
|
89
|
-
| `boxplot.show_mean` | boolean | Show mean marker |
|
|
90
|
-
|
|
91
|
-
## Pie (`display: pie`)
|
|
92
|
-
|
|
93
|
-
| Setting | Type | Values |
|
|
94
|
-
| ------------------------ | ------- | ----------------------------------------- |
|
|
95
|
-
| `pie.dimension` | string | Dimension column name |
|
|
96
|
-
| `pie.metric` | string | Metric column name |
|
|
97
|
-
| `pie.show_legend` | boolean | |
|
|
98
|
-
| `pie.show_total` | boolean | Show total in center |
|
|
99
|
-
| `pie.percent_visibility` | string | `"off"`, `"legend"`, `"inside"`, `"both"` |
|
|
100
|
-
| `pie.slice_threshold` | number | Min percentage to show as its own slice |
|
|
101
|
-
| `pie.colors` | object | Color map keyed by dimension value |
|
|
102
|
-
|
|
103
|
-
## Scalar / Number (`display: scalar`, `number`)
|
|
104
|
-
|
|
105
|
-
| Setting | Type | Values |
|
|
106
|
-
| --------------------------------- | ------- | ------------------------------- |
|
|
107
|
-
| `scalar.field` | string | Output column to display |
|
|
108
|
-
| `scalar.switch_positive_negative` | boolean | Invert positive/negative colors |
|
|
109
|
-
| `scalar.compact_primary_number` | string | `"auto"`, `"yes"`, `"no"` |
|
|
110
|
-
|
|
111
|
-
### Smart scalar (`display: smartscalar`)
|
|
112
|
-
|
|
113
|
-
```yaml
|
|
114
|
-
scalar.comparisons:
|
|
115
|
-
- id: comp1
|
|
116
|
-
type: previousPeriod # vs. previous time period
|
|
117
|
-
- id: comp2
|
|
118
|
-
type: previousValue # vs. previous value
|
|
119
|
-
- id: comp3
|
|
120
|
-
type: periodsAgo # vs. N periods ago
|
|
121
|
-
value: 12
|
|
122
|
-
- id: comp4
|
|
123
|
-
type: staticNumber # vs. fixed number
|
|
124
|
-
value: 1000
|
|
125
|
-
label: Target
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Funnel (`display: funnel`)
|
|
129
|
-
|
|
130
|
-
| Setting | Type | Values |
|
|
131
|
-
| ------------------ | ------ | --------------------- |
|
|
132
|
-
| `funnel.dimension` | string | Dimension column |
|
|
133
|
-
| `funnel.metric` | string | Metric column |
|
|
134
|
-
| `funnel.type` | string | `"funnel"` or `"bar"` |
|
|
135
|
-
| `funnel.rows` | array | Row order definitions |
|
|
136
|
-
|
|
137
|
-
## Gauge (`display: gauge`)
|
|
138
|
-
|
|
139
|
-
| Setting | Type | Description |
|
|
140
|
-
| ---------------------- | ----- | ------------------------------------------- |
|
|
141
|
-
| `gauge.segments` | array | Segments, each `{ min, max, color, label }` |
|
|
142
|
-
| `gauge.segment_colors` | array | Segment colors |
|
|
143
|
-
|
|
144
|
-
## Map (`display: map`)
|
|
145
|
-
|
|
146
|
-
| Setting | Type | Values |
|
|
147
|
-
| ---------------------------------------------- | ------ | -------------------------------- |
|
|
148
|
-
| `map.type` | string | `"region"`, `"pin"`, `"grid"` |
|
|
149
|
-
| `map.latitude_column` | string | Latitude column name |
|
|
150
|
-
| `map.longitude_column` | string | Longitude column name |
|
|
151
|
-
| `map.metric_column` | string | Metric column for coloring |
|
|
152
|
-
| `map.region` | string | Region map identifier |
|
|
153
|
-
| `map.pin_type` | string | `"tiles"`, `"markers"`, `"heat"` |
|
|
154
|
-
| `map.colors` | array | Color scale |
|
|
155
|
-
| `map.zoom` | number | Initial zoom level |
|
|
156
|
-
| `map.center_latitude` / `map.center_longitude` | number | Map center |
|
|
157
|
-
|
|
158
|
-
## Table (`display: table`)
|
|
159
|
-
|
|
160
|
-
| Setting | Type | Description |
|
|
161
|
-
| ------------------------- | ------- | --------------------------------------------------------- |
|
|
162
|
-
| `table.columns` | array | Column order + visibility; each entry `{ name, enabled }` |
|
|
163
|
-
| `table.column_formatting` | array | Conditional formatting rules (see below) |
|
|
164
|
-
| `table.pivot` | boolean | Enable in-table pivot mode |
|
|
165
|
-
| `table.pivot_column` | string | Column to pivot on |
|
|
166
|
-
| `table.cell_column` | string | Column used for cell values (pivot mode) |
|
|
167
|
-
|
|
168
|
-
### Conditional formatting (`table.column_formatting`)
|
|
169
|
-
|
|
170
|
-
```yaml
|
|
171
|
-
table.column_formatting:
|
|
172
|
-
- columns: [Total]
|
|
173
|
-
type: single # "single" or "range"
|
|
174
|
-
operator: ">" # "=", "!=", "<", ">", "<=", ">=", "is-null", "not-null"
|
|
175
|
-
value: 100
|
|
176
|
-
color: "#84BB4C"
|
|
177
|
-
highlight_row: false
|
|
178
|
-
- columns: [Rating]
|
|
179
|
-
type: range
|
|
180
|
-
colors: ["#ED6E6E", "#F9CF48", "#84BB4C"]
|
|
181
|
-
min_type: custom # "min", "max", "custom"
|
|
182
|
-
min_value: 1
|
|
183
|
-
max_type: custom
|
|
184
|
-
max_value: 5
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Pivot table (`display: pivot`)
|
|
188
|
-
|
|
189
|
-
| Setting | Type | Description |
|
|
190
|
-
| -------------------------------- | ------- | --------------------------------------------------------------- |
|
|
191
|
-
| `pivot_table.column_split` | object | `{ rows: [...names], columns: [...names], values: [...names] }` |
|
|
192
|
-
| `pivot_table.collapsed_rows` | object | `{ rows: [...collapsed_keys], value: [] }` |
|
|
193
|
-
| `pivot_table.show_row_totals` | boolean | |
|
|
194
|
-
| `pivot_table.show_column_totals` | boolean | |
|
|
195
|
-
|
|
196
|
-
## Sankey (`display: sankey`)
|
|
197
|
-
|
|
198
|
-
| Setting | Type | Values |
|
|
199
|
-
| ------------------------- | ------- | -------------------------------------------- |
|
|
200
|
-
| `sankey.source` | string | Source column |
|
|
201
|
-
| `sankey.target` | string | Target column |
|
|
202
|
-
| `sankey.value` | string | Value column |
|
|
203
|
-
| `sankey.node_align` | string | `"left"`, `"right"`, `"center"`, `"justify"` |
|
|
204
|
-
| `sankey.show_edge_labels` | boolean | |
|
|
205
|
-
|
|
206
|
-
## Column settings
|
|
207
|
-
|
|
208
|
-
`column_settings` is keyed by a JSON-encoded column reference. Prefer the
|
|
209
|
-
`["name", "<output column name>"]` form — it is the canonical key Metabase writes and
|
|
210
|
-
is identical across forms. The `["ref", ["field", <id>, <opts>]]` form uses the
|
|
211
|
-
**legacy** field-ref order (id second); in the API form `<id>` is the numeric field id.
|
|
212
|
-
|
|
213
|
-
Per-column keys (apply under any column key):
|
|
214
|
-
|
|
215
|
-
| Key | Type | Values |
|
|
216
|
-
| ------------------- | ----------- | ------------------------------------------------------ |
|
|
217
|
-
| `column_title` | string | Override the column header |
|
|
218
|
-
| `number_style` | string | `"decimal"`, `"currency"`, `"percent"`, `"scientific"` |
|
|
219
|
-
| `currency` | string | ISO code, e.g. `"USD"` |
|
|
220
|
-
| `currency_style` | string | `"symbol"`, `"code"`, `"name"` |
|
|
221
|
-
| `number_separators` | string | e.g. `".,"` (decimal + thousands) |
|
|
222
|
-
| `decimals` | number | Fixed decimal places |
|
|
223
|
-
| `scale` | number | Multiply values by this factor |
|
|
224
|
-
| `prefix` / `suffix` | string | Affixes around the value |
|
|
225
|
-
| `date_style` | string | moment.js format, e.g. `"MMMM D, YYYY"` |
|
|
226
|
-
| `date_separator` | string | e.g. `"/"` |
|
|
227
|
-
| `date_abbreviate` | boolean | |
|
|
228
|
-
| `time_enabled` | string/null | `null`, `"minutes"`, `"seconds"`, `"milliseconds"` |
|
|
229
|
-
| `time_style` | string | e.g. `"HH:mm"`, `"h:mm A"` |
|
|
230
|
-
| `view_as` | string | `"link"`, `"image"`, `"email"`, `"auto"` |
|
|
231
|
-
| `link_text` | string | Display text when `view_as: link` |
|
|
232
|
-
| `link_url` | string | URL template; `{{value}}` interpolates the cell value |
|
|
233
|
-
| `click_behavior` | object | Per-column click behavior (see below) |
|
|
234
|
-
|
|
235
|
-
```yaml
|
|
236
|
-
column_settings:
|
|
237
|
-
'["name","TOTAL"]':
|
|
238
|
-
number_style: currency
|
|
239
|
-
currency: USD
|
|
240
|
-
currency_style: symbol
|
|
241
|
-
decimals: 2
|
|
242
|
-
column_title: "Total Revenue"
|
|
243
|
-
'["name","CREATED_AT"]':
|
|
244
|
-
date_style: "MMMM D, YYYY"
|
|
245
|
-
time_enabled: null
|
|
246
|
-
'["name","EMAIL"]':
|
|
247
|
-
view_as: link
|
|
248
|
-
link_text: "Send email"
|
|
249
|
-
link_url: "mailto:{{value}}"
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
## Virtual card settings (dashcards only, `card_id: null`)
|
|
253
|
-
|
|
254
|
-
| `virtual_card.display` | Extra keys |
|
|
255
|
-
| ---------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
256
|
-
| `heading` | `text` (the heading string) |
|
|
257
|
-
| `text` | `text` (markdown; `{{param}}` placeholders wired via dashcard `parameter_mappings`, target `[text-tag, name]`) |
|
|
258
|
-
| `link` | `link.url`, or `link.entity` `{ id, model }` where model ∈ `question`/`dashboard`/`collection`/`database`/`table` |
|
|
259
|
-
| `iframe` | `iframe` (the `<iframe …>` HTML string) |
|
|
260
|
-
| `placeholder` | — |
|
|
261
|
-
|
|
262
|
-
```yaml
|
|
263
|
-
visualization_settings:
|
|
264
|
-
virtual_card:
|
|
265
|
-
display: text
|
|
266
|
-
text: "**Bold** and _italic_ markdown content"
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
## Click behavior
|
|
270
|
-
|
|
271
|
-
Stored at `visualization_settings.click_behavior` (whole dashcard) or per column at
|
|
272
|
-
`column_settings[<key>].click_behavior`.
|
|
273
|
-
|
|
274
|
-
| `type` | Description |
|
|
275
|
-
| ------------- | -------------------------------------------- |
|
|
276
|
-
| `actionMenu` | Default drill-through menu (no config) |
|
|
277
|
-
| `crossfilter` | Filter the dashboard using the clicked value |
|
|
278
|
-
| `link` | Navigate to a URL, question, or dashboard |
|
|
279
|
-
|
|
280
|
-
```yaml
|
|
281
|
-
# Link to URL — {{column}} = clicked row value, {{filter:param}} = dashboard parameter
|
|
282
|
-
click_behavior:
|
|
283
|
-
type: link
|
|
284
|
-
linkType: url
|
|
285
|
-
linkTemplate: "https://example.com/orders/{{ORDER_ID}}?status={{filter:status}}"
|
|
286
|
-
linkTextTemplate: "View Order {{ORDER_ID}}"
|
|
287
|
-
|
|
288
|
-
# Link to another dashboard/question — targetId is the entity_id of the target
|
|
289
|
-
click_behavior:
|
|
290
|
-
type: link
|
|
291
|
-
linkType: dashboard # or "question"
|
|
292
|
-
targetId: Q_jD-f-9clKLFZ2TfUG2h
|
|
293
|
-
parameterMapping:
|
|
294
|
-
target-param-uuid:
|
|
295
|
-
id: target-param-uuid
|
|
296
|
-
source: { id: USER_ID, name: User ID, type: column }
|
|
297
|
-
target: { id: target-param-uuid, type: parameter }
|
|
298
|
-
|
|
299
|
-
# Crossfilter — map a clicked column to dashboard parameters
|
|
300
|
-
click_behavior:
|
|
301
|
-
type: crossfilter
|
|
302
|
-
parameterMapping:
|
|
303
|
-
param-uuid:
|
|
304
|
-
id: param-uuid
|
|
305
|
-
source: { id: CATEGORY, name: Category, type: column }
|
|
306
|
-
target: { id: param-uuid, type: parameter }
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
`parameterMapping` entries: `source` is where the value comes from
|
|
310
|
-
(`{ id, name, type }`, type `"column"`/`"parameter"`); `target` is where it goes
|
|
311
|
-
(`{ id, type }`, type `"parameter"`/`"dimension"`/`"variable"`). A `dimension` target
|
|
312
|
-
carries a `dimension` array — the same target shape as a dashboard parameter mapping.
|