← Back to Function Catalog

Tableau Output Contract

TableauOutputs.from(DataAiResult) returns a TableauOutputBundle. The adapter does not write these DataFrames. Persist only the outputs needed by the customer and use governed table/view names if they differ from the defaults.

Standard outputs

Bundle methodDefault table constantGrainTableau use
cleanRows()dataai_clean_rowsOne accepted source recordGoverned analysis and record drill-through
rejectedRows()dataai_rejected_rowsOne rejected source recordRemediation workflow
qualityFindings()dataai_quality_findingsOne rule findingSeverity/rule/field analysis
fieldProfiles()dataai_field_profilesOne field profile for the current runCompleteness and distribution analysis
pipelineRuns()dataai_pipeline_runsOne pipeline executionAudit and run history
dashboardMetrics()dataai_dashboard_metricsOne pipeline executionFast Tableau overview

The default names are constants in TableauOutputNames. They do not force a catalog, schema, storage format, or write mode.

dataai_dashboard_metrics

FieldSpark typeNullableMeaning
run_idstringNoDataAI pipeline run identifier
completed_attimestampNoPipeline completion time
statusstringNoPipeline status
rows_readlongNoInput records evaluated
rows_acceptedlongNoRecords without findings
rows_rejectedlongNoRecords with at least one finding
quality_scoredoubleNoAccepted records / read records * 100
critical_findingslongNoCRITICAL finding count
error_findingslongNoERROR finding count
warning_findingslongNoWARNING finding count
info_findingslongNoINFO finding count
fields_profiledlongNoProfile rows produced
total_null_valueslongNoSum of profile null_count values

dataai_pipeline_runs

FieldSpark typeNullable
run_idstringNo
started_attimestampNo
completed_attimestampNo
statusstringNo
rows_readlongNo
rows_acceptedlongNo
rows_rejectedlongNo
quality_scoredoubleNo
library_versionstringNo

dataai_quality_findings

The base DataAI findings schema is:

record_key, rule_id, field_name, severity, finding_code, message, original_value, normalized_value.

For multi-run Tableau history, add the current run_id before appending:

Dataset<Row> findingsForHistory = tableau.qualityFindings()
        .withColumn("run_id", lit(result.summary().runId()));

dataai_field_profiles

The base profile schema is:

field_name, source_type, record_count, null_count, distinct_count, minimum_value, maximum_value, mean_value, standard_deviation.

For multi-run Tableau history, add run_id in the same way before append.

Recommended Tableau model