Skip to content

twbparser

0.5.1Package record

Parse 'Tableau' Workbooks into Functional Data

0packages depend
3.5Kdownloads / year
81.4%test coverage
13/13flavors OK

Overview

About

High-performance parsing of 'Tableau' workbook files into tidy data frames and dependency graphs for other visualization tools like R 'Shiny' or 'Power BI' replication, plus an interactive 'Shiny' workbook inspector for uploaded .twb and .twbx files.

Changes in 0.5.1

New features

  • Added audit_tableau_folder() for portfolio-scale Tableau migration audits. It batch parses .twb / .twbx files and returns workbook summaries, datasource inventory, calculated-field complexity, field usage, lineage edges, parse issues, optional CSV exports, and migration complexity flags.
  • Added twb_lineage() for migration-oriented lineage from datasources and tables through fields, calculated fields, worksheets, and dashboards. Results can be returned as tidy node/edge tables, an igraph object, or Mermaid text. TwbParser now exposes this as get_lineage() and parser$lineage.
  • Added migration-assistant helpers: twb_migration_assessment(), twb_compatibility(), translate_tableau_calc(), export_migration_bundle(), render_migration_brief(), scaffold_shiny_dashboard(), and scaffold_quarto_dashboard(). These add target-aware readiness scoring, feature compatibility notes, deterministic formula translation candidates, exportable migration bundles, Markdown briefs, and starter rebuild scaffolds.
Show all changes in 0.5.1Hide the rest of the changes in 0.5.1
  • New twb_sheet_spec(): a full per-worksheet visualization spec — mark type, rows/columns shelves in order, dimensions vs. measures, every marks-card encoding (color, size, label, detail, shape, tooltip, ...), tooltip configuration, plus the sheet's filters, sorts, and axes. It reduces a worksheet to everything needed to understand and rebuild its visualization in another tool (also available as parser$sheet_spec / parser$get_sheet_spec()).
  • New twb_dashboard_charts(): one row per worksheet placed on each dashboard — mark type, fields, tooltip summary, and layout position — so you can see at a glance what graphs a dashboard page uses (also available as parser$dashboard_charts / parser$get_dashboard_charts()).
  • New rebuild kit for the "what do I need to recreate?" questions: twb_unused_fields() lists every raw field, calculated field, and parameter that is defined but referenced nowhere (the safe-to-drop list); twb_calc_build_order() returns calculated fields topologically sorted so each formula is rebuilt after the calculations it depends on, flagging dependency cycles instead of silently emitting them in the wrong order; and twb_parameter_usage() maps every parameter to its consumption points — formulas, worksheet shelves/filters, and dashboard filter zones. All three are also available as parser methods and properties (parser$unused_fields, parser$calc_build_order, parser$parameter_usage), are exported as unused_fields.csv, calc_build_order.csv, and parameter_usage.csv by parse_twb(), and are exercised by the new inst/extdata/rebuild_kit.twb fixture.
  • New parse_twb() batch export: parse a .twb/.twbx workbook and write a structured report to disk — report.txt, one CSV per key table, per-worksheet visualization specs (sheet_specs.txt), a plain-text replication brief, and the field dependency graph as GraphML. This delivers the parse_twb() entry point the README previously documented but which did not exist.

Breaking changes

  • Removed the tbs_publish_info() and tbs_custom_sql_graphql() stubs. They were exported and documented as querying Tableau Server/Cloud, but never made a network request and always returned empty tibbles. Tableau Server/Cloud integration is planned as a real feature; the premature stubs are gone rather than silently returning no data.
  • The unused strict argument to validate_relationships() is deprecated and ignored, while remaining available for compatibility with 0.5.0 callers.

Documentation

  • ?TwbParser rewritten from scratch: it now documents every active-binding property (parser$summary, parser$overview, parser$datasources, ...) as the primary API alongside every get_*() method. summary is correctly described as a read-only property — the previously documented parser$summary() call form never worked at runtime.
  • README Quick Start no longer requires the fs package (uses base R), and the lifecycle badge is corrected to experimental while the API is settling.

Bug fixes

  • Sheet/dashboard/story lookup by name no longer interpolates the name into an XPath predicate. Names containing quotes or brackets (e.g. "Bob's Dashboard") now match exactly instead of being mangled or silently missing (new internal .twb_find_named() / .twb_find_all_named() helpers).
  • Removed dead code: the never-firing "safe getter" rebind block in twb_install_active_properties() and the uncalled internal print_datasource_summary().
  • parse_twb(overwrite = TRUE) now removes the previous outputs written by parse_twb before writing, so the export directory reflects the current workbook instead of mixing stale and fresh files. Unrelated files are left alone.
  • Fixed twb_calc_build_order() crashing with "subscript out of bounds" for calculated fields that reference no other calculated field: a NULL dependency hit was deleting the list element instead of recording an empty dependency set.
  • Fixed mark-type detection reading the wrong XML attribute: Tableau writes <mark class="Bar"/>, not <mark type="Bar"/>, so bar/line/etc. charts were mislabeled as automatic unless a style rule happened to name the mark.
  • Restored the strict argument of validate_relationships() (present in 0.5.0, dropped by mistake): it is deprecated and ignored, warning only when explicitly supplied.
  • The cheat sheet no longer documents the removed tbs_*() server stubs or a strict argument that didn't exist; footer version corrected to 0.5.1.

Tests

  • New tests for the parse_twb() batch export and Shiny app smoke tests (the bundled app file parses cleanly and the app object builds headlessly).

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 4.6 min · r-oldrel-windows-x86_64
Status changes
  • OK13 OK2026-10-03
  • NOTE12 OK, 1 NOTE2026-07-11
  • OK13 OK2026-06-09
  • WARNING12 OK, 1 WARNING2026-06-08
  • OK14 OK2026-03-10
Advisories

none known

Documentation

In release 0.5.1
READMEYes · 593 wordsVignettesYes · 1 · dynamicNEWSYes · 100% structured · mentions 0.5.1Citation fileNoWebsiteYes · pkgdown
Help pages
70 (10 internal)includes a package overview page
Examples that run
100%44 run in a plain check (4 of them under a condition)
Exported functions with examples
73%
Documented parameters
99%
Return-value docs
98%
Help pages citing references
0%
Vignettes (1)

Downloads

3.5K
CRAN downloads in the past year
Rank #9,937 · ~10/day · ~292/mo
Daily download trend is not available in this view yet.
47130 days
1K90 days
3.5K1 year
Compare downloads with other packages →
Also on99 r2u4 autocran

Repository

2Stars
2Forks
0Open issues
0Open PRs
1Releases
61Commits
2Commit identities
61 commits · Last activity 2026-09-28 · 0% stars, 30d
Responsiveness
How these are sampled
PRs merged (all time)
100%
Median days to close, 50 most recently updated closed issues
not measured
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2026-02-24 · 12026-09-15 · 2
PracticesBeta

9 development-tooling and community-health practices detected across 5 families in the upstream repository

Checks run against github.com/prigasg/twbparser on 2026-10-18.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel

Docs source (3)
pkgdown

GitHub Pages site last deployed 2026-09-28 · The repository has a site deploy workflow

pkgdown site last built 2026-09-28

Coverage (1)
Coverage reporting
CRAN release process (2)
cran-comments.mdCRAN-SUBMISSION
Show all practicesHide 1 practice
Lint, format, editor (1)
RStudio project
How this is detected·Detection ruleset v3 (2026-09-26)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Claude Codefirst seen 2026-04-10
    Named in .Rbuildignore: .claude
    Named in .gitignore: .claude
    Pull request it wrote: opened by a project member
    Commits: at least 4 crediting it in the message
  • Codexfirst seen 2026-06-17
    Named in .gitignore: .codex
Models named in its commits
  • Claude Sonnet 4.63 commits · Apr 2026
  • Claude Opus 4.81 commit · Jun 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
25 external dependencies (excludes base and recommended)

Installing twbparser adds 22 packages (14 with compiled code, 23 MB of source tarballs). Heaviest: stringi 11 MB, igraph 4.8 MB, vctrs 1.0 MB.

Depends (1)
R >= 4.2.0
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

People & History

People (1)
Author, Maintainer since 0.2.3 (2025)
Releases (5)

Pick two releases to compare their code metrics.

  • 0.5.1Latest
    record
    2026-09-28 · current release · diff ↗ ·
    removed 2 exports
    tbs_custom_sql_graphql, tbs_publish_info
    added 15 exports
    audit_tableau_folder, export_migration_bundle, parse_twb, render_migration_brief, scaffold_quarto_dashboard, scaffold_shiny_dashboard, translate_tableau_calc, twb_calc_build_order, twb_compatibility, twb_dashboard_charts, twb_lineage, twb_migration_assessment, twb_parameter_usage, twb_sheet_spec, twb_unused_fields
  • 0.5.0
    record
    2026-06-18 · diff ↗ ·
    added 4 exports
    run_twbparser_app, twb_dashboard_size, twb_formatting, twb_tooltips
  • R
    R 4.6.0 released · 2026-04-24
  • 0.4.0
    record
    2026-04-14 · diff ↗ ·
    added 10 exports
    twb_calc_complexity, twb_dashboard_actions, twb_dashboard_layout, twb_dashboard_sheets, twb_field_usage, twb_replication_brief, twb_sheet_axes, twb_sheet_filters, twb_sheet_shelves, twb_sheet_sorts
  • 0.3.1
    record
    2025-12-10 · diff ↗ ·
    added 8 exports
    twb_charts, twb_colors, twb_dashboard_filters, twb_dashboard_summary, twb_dashboards, twb_page_composition, twb_pages, twb_pages_summary
  • 0.2.3
    record
    2025-09-30
  • R
    R 4.5.0 released · 2025-04-11

Package metadata

First published
2025-09-30
Total releases
5 / 1 yrs
License
MIT + file LICENSE OSI
Minimum R
≥ 4.2.0
Download size
1.3 MB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("twbparser")
Arthur, G. (2026). twbparser: Parse 'Tableau' Workbooks into Functional Data (Version 0.5.1) [Computer software]. https://doi.org/10.32614/CRAN.package.twbparser

This package has no citation file, so citation() returns this entry built from DESCRIPTION.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for twbparser version 0.5.1 [Data set]. HJJB, LLC. Data release v2026-10-21. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-21, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy