The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
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.
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.
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.strict argument to
validate_relationships() is deprecated and ignored, while
remaining available for compatibility with 0.5.0 callers.?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.fs package
(uses base R), and the lifecycle badge is corrected to experimental
while the API is settling..twb_find_named() /
.twb_find_all_named() helpers).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.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.<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.strict argument of
validate_relationships() (present in 0.5.0, dropped by
mistake): it is deprecated and ignored, warning only when explicitly
supplied.tbs_*()
server stubs or a strict argument that didn’t exist; footer
version corrected to 0.5.1.parse_twb() batch export and Shiny
app smoke tests (the bundled app file parses cleanly and the app object
builds headlessly).twb_dashboard_size() (page size and sizing mode),
twb_formatting() (fonts, colours, number formats, and other
style-rule formats), and twb_tooltips() (plain-text
worksheet tooltips). Each has a matching TwbParser getter
(get_dashboard_size(), get_formatting(),
get_tooltips()).run_twbparser_app() launches a bundled Shiny workbook
inspector with a to-scale dashboard layout view,
chart/ggplot2 hints, parameter and formatting tabs, a
replication brief, and CSV / R-scaffold exports.parser$get_parameters() (and
datasource_details$parameters) now return the actual
parameter fields via extract_parameters(). Previously it
returned a single row of datasource-level metadata, so most parameters
were dropped and the overview count was wrong.parser$summary now prints calculated fields as readable
formula blocks instead of escaped tibble cells.R/ before
release.run_twbparser_app() launches the bundled Shiny app for
inspecting .twb and .twbx workbooks.deploy/huggingface/ records the Docker Space deployment
files and notes: Dockerfile, Space README.md,
and DEPLOYING.md.parser$summary and parser$report now
expose a structured workbook report used by both console output and the
Shiny app.twb_sheet_shelves() — extract every field placed on
rows, cols, or an encoding shelf (color, size, label, detail, tooltip)
for one or all worksheets.twb_sheet_filters() — extract worksheet-level filters
including categorical member lists, range min/max, and include/exclude
mode.twb_sheet_axes() — extract per-axis configuration:
reversed, include-zero, and scale type (linear, log, …).twb_sheet_sorts() — extract sort directives with sort
direction and method (field aggregate, alphabetic, manual, data-source
order).TwbParser as
get_sheet_shelves(), get_sheet_filters(),
get_sheet_axes(), get_sheet_sorts() and as
no-parens active bindings (parser$sheet_shelves,
etc.).twb_dashboard_sheets() — list every worksheet placed on
a dashboard with zone id and pixel position (x, y, w, h).twb_dashboard_layout() — full zone tree including
parent zone id, component type (worksheet / filter / container / …),
layout type (tiled / floating), and pixel bounds.twb_dashboard_actions() — extract filter and URL
actions with source and target sheets, run-on trigger type, and URL
value.TwbParser as
get_dashboard_sheets(),
get_dashboard_layout(),
get_dashboard_actions() and as active bindings.plot_relationship_graph(): fixed edge direction — the
from vertex was incorrectly built from
right_field instead of left_field.plot_source_join_graph(): fixed reference to
non-existent columns left_source /
right_source; replaced with left_table /
right_table.infer_implicit_relationships(): added deduplication
before the field-name self-join to prevent Cartesian explosion when many
tables share a field name; added
relationship = "many-to-many" to suppress the dplyr 1.1+
warning.integer_ typo in insights.R that
caused errors when parsing dashboard zone dimensions..twb_clean_table() and
.twb_clean_field() helpers added to utils.R,
replacing four independent copies scattered across
fields.R, calculated_fields.R,
relationships.R, joins.R, and
dependency_graph.R..twb_clean_field() now correctly strips Tableau
column-instance prefixes (none:Category:nk →
Category) and returns unnamed vectors.unlockBinding() in internal TwbParser
active-binding helpers. This avoids CRAN’s “possibly unsafe call” NOTE
while keeping the same user-facing behaviour for no-parens properties
(overview, pages, datasources, etc.).NEWS.md file to track changes to the
package.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.