These Tech Guides and instructions are provided in good faith as a general educational guide. Technology changes over time, and settings, software versions, menu names, and features may vary by system and Tableau edition.
I cannot guarantee that these steps will work in every environment, and I am not responsible for data loss, configuration problems, system errors, or other problems that may result from following this guide.
Save your workbook often while you build.
Anything published to Tableau Public, including its data, is visible to everyone.
Do not publish private, confidential, or student data to Tableau Public.
The dataset reflects company statements as reported; it is for learning, not investment or business decisions.
When in doubt, consult the official Tableau documentation.
Overview
In this guide, you will build a four-view interactive dashboard in Tableau using a dataset of how 19 major companies report using AI in their software engineering work. Along the way, you will practice relating multiple tables, writing a calculated field, building dual-axis charts, and connecting views with dashboard actions.
The dataset contains 48 observations from earnings calls, executive interviews, and press reports between October 2024 and May 2026. Each row is one disclosed data point, such as a share of code written by AI, a productivity gain, or the number of developers using an AI tool.
Main idea: Relate the tables first, build each view on its own worksheet, then combine the worksheets into a dashboard and link them with filters and actions.
Requirements
Tableau Desktop 2020.2 or later. The free Public Edition is enough for this guide.
A Tableau Public account if you want to publish your dashboard online.
Tableau Desktop comes in three editions. Any of them can complete this guide, but they differ in how you can save and share your work:
Edition
Cost
Data connectors
How you share
Public Edition
Free
Limited: Excel, text/CSV, JSON, PDF, Google Drive, spatial and statistical files
Publish to Tableau Public (visible to everyone)
Free Edition
Free
Almost all sources
Save locally only
Professional
Paid license
All sources
Packaged workbooks (.twbx), Tableau Cloud or Server
Important Notes About This Data
Values are stored as whole numbers: 25 means 25%, not 2,500%.
Companies define “AI-written code” differently, so figures are not directly comparable across companies.
Some rows are targets or forecasts, not results. The status and date_role fields tell you which.
Some rows come from leaked documents or secondary sources. The source_tier field tells you which.
Dashboard Build Instructions
Work through the tabs in order. Each tab builds on the one before it, and most end with a Check yourself note so you can confirm your view is correct before moving on.
Building the AI in Software Engineering Dashboard
Click the tabs above in order. You will build four worksheets and then combine them into one dashboard.
The guide covers these major tasks:
Connect to the data and relate the tables.
Build a share-of-code line chart.
Build a claims vs targets range chart.
Build a disclosure heatmap.
Build a tool adoption bar chart.
Combine the views into a dashboard.
Publish and troubleshoot.
The data file contains five tables:
Table
Rows
What it holds
Observations
48
One disclosed data point per row, with value, unit, status, speaker, venue, and source URL
Companies
19
Sector, sector group, HQ country, first and last report dates
Tools
15
Normalized AI tool names, vendor, and whether the tool is third-party
Observation_Tools
61
Bridge table linking each observation to the tools it names
Company_Tools
29
Company × tool list (not used in this guide)
Part 1: Connect and Set Up the Data Model
You will relate four tables so each chart can use fields from any of them without duplicating rows.
Open Tableau and choose Connect → Microsoft Excel. Select ai_in_software_engineering_tableau.xlsx.
Drag the Observations sheet onto the canvas.
Drag Companies and drop it directly on the Observations box. A relationship line (the “noodle”) appears. Click it and set the fields to company_id = company_id.
Drag Observation_Tools and drop it directly on the Observations box, not on Companies. In the relationship dialog, check that the left-hand table is Observations, then set obs_id = obs_id.
Drag Tools and drop it directly on the Observation_Tools box, not on Observations. Check that the left-hand table is Observation_Tools, then set tool_id = tool_id.
Leave out Company_Tools and README.
Click the Observations box to show its data grid below the canvas, then check the type icon above each column name. The grid shows one table at a time, and all of these fields are in Observations. Tableau usually guesses correctly, so this is a check:
report_date should be Date (calendar icon). If it shows Date & Time (calendar with a clock), click the icon and change it.
value_low, value_high, midpoint, and range_size should be Number (decimal) (# icon).
is_range, is_numeric, and is_percent should be Boolean (T|F icon).
When it's set up correctly, the canvas reads as a chain:
Tip: Tableau attaches a new table to whichever box you drop it on. If a relationship dialog doesn't list the field you expect, the table is attached to the wrong box. Right-click it, choose Remove, and drop it again on the right one. You can also fix a data type later on a worksheet: right-click the field in the Data pane → Change Data Type.
Note: Use relationships, not joins. Do not double-click into a table, because that opens the join editor. One observation can name several tools, and a join would copy that observation once per tool and inflate every count.
Part 2: Sheet 1 — AI Share of Code Over Time
This line chart shows how the reported share of AI-written code changed over time. Only achieved figures are shown; targets and forecasts are filtered out.
Open a new worksheet and name it AI Share of Code Over Time.
Add three filters:
metric_category: keep only Share of code.
date_role: keep only Reported.
is_numeric: keep only True.
Drag report_date to Columns. Right-click the pill and choose the second “Month” option, the green continuous one.
Drag value_low to Rows. Right-click it and choose Measure → Average.
On the Marks card, set the type to Line and drag company to Color. Then click Color → Markers and choose the option that shows all points.
Drag share_of_code_measure, unit, speaker, venue, and source_url to Tooltip. Click Tooltip and edit the text, for example:
<company>: <AVG(value_low)>% of <share_of_code_measure> <speaker>, <venue>
Format the Y axis:
Right-click it → Format → Numbers → Custom, and set the suffix to %.
Right-click it → Edit Axis, and fix the range at 0–100.
Drag company to Label. Click Label and choose Line ends → End of line.
One row has no date, so a “1 null” indicator may appear. Right-click it and choose Hide indicator.
Optional: Show What Each Percentage Measures
Ctrl-drag (Cmd-drag on Mac) the AVG(value_low) pill on Rows to duplicate it.
On the second Marks card, set the type to Shape and drag share_of_code_measure to Shape.
Right-click the second axis → Dual Axis, then right-click again → Synchronize Axis.
Right-click the right-hand axis and uncheck Show Header.
Check yourself: Google's line should rise from 25 (October 2024) to 75 (April 2026).
Part 3: Sheet 2 — Claims vs Targets vs Forecasts
This chart puts every share-of-code figure on one scale. Ranges appear as bars, single values as short ticks, and a dot marks each midpoint. Color separates what companies have achieved from what they are aiming for or predicting.
Create a calculated field (Analysis → Create Calculated Field) named Bar Size:
IF [range_size] = 0 THEN 0.6 ELSE [range_size] END
Without this field, single-value rows would draw a Gantt bar with zero width and disappear.
Add the filters metric_category = Share of code and is_numeric = True.
Drag company to Rows. Right-click it → Sort → By field, and choose value_low, Maximum, Descending.
Drag value_low to Columns and set it to Minimum.
On the Marks card:
Set the type to Gantt Bar.
Drag Bar Size to Size.
Drag status to Color. A suggested palette is Actual in dark blue, Target in orange, and Forecast in grey.
Drag obs_id to Detail so each observation gets its own mark.
Add the midpoint dots on a dual axis:
Drag midpoint to Columns, next to the first pill.
On its Marks card, set the type to Circle and drag source_tier to Shape. Use filled shapes for Primary and open shapes for Leak and Secondary.
Right-click the axis → Dual Axis, then Synchronize Axis.
Format the X axis with a % suffix and a fixed range of 0–100.
Add metric, unit, scope_notes, and source_url to Tooltip.
Check yourself: Microsoft should show a bar from 20 to 30 (actual) and a separate grey mark at 95 (forecast).
Part 4: Sheet 3 — What Companies Disclose
This heatmap shows which kinds of metrics each company reports. Tech firms tend to report share of code, while banks tend to report hours saved and adoption counts.
Drag sector_group and then company to Rows, and metric_category to Columns.
Drag Observations (Count) to Color and to Label. Tableau creates this field automatically; it is listed at the bottom of the Observations table.
Set the mark type to Square.
Click Color → Edit Colors and choose a single-hue sequential palette, such as Blue.
Make sure the sector_group header is showing (right-click the pill → Show Header), so Technology and Financial services appear as separate groups.
Part 5: Sheet 4 — AI Coding Tools by Adoption
This bar chart counts how many companies name each AI coding tool. Because it uses tool from one table and company_id from another, it depends on the relationships from Part 1.
From the Tools table, drag tool to Rows and vendor to Color.
From the Observations table, drag company_id to Columns. Right-click it → Measure → Count (Distinct).
Drag tool to Filters and exclude Unspecified in-house tools and Unspecified AI coding tools.
Optional: drag is_third_party to Filters and keep only True to compare commercial products only.
Sort descending with the toolbar sort button, and turn on labels with Label → Show mark labels.
Check yourself: The longest bar should be Claude Code, at 6 companies.
Part 6: Build the Dashboard
The dashboard combines the four sheets and connects them, so a click or hover in one view updates the others.
Click New Dashboard. Under Size, choose Automatic or a fixed 1400 × 900.
Lay out the sheets:
Sheet 1 across the top.
Sheet 2 in the bottom left.
Sheets 3 and 4 stacked in the bottom right.
Shared filter. On Sheet 1, open its menu (▼) → Filters → sector_group. On the filter card that appears, open its menu (▼) → Apply to Worksheets → All Using This Data Source.
Click-to-filter. Select Sheet 3 on the dashboard and click its funnel icon (Use as Filter). Clicking a company square now filters the other views.
Link to sources. Choose Dashboard → Actions → Add Action → Go to URL:
Source sheets: Sheets 1 and 2.
Run on: Select.
URL: click ▶ and insert <source_url>. This works because source_url is already on the Tooltip of those sheets.
Hover highlight. Choose Dashboard → Actions → Add Action → Highlight. Set it to run on Hover, with target highlighting on the selected field company.
Add a Text object at the bottom of the dashboard:
Companies define "AI-written code" differently; values are as reported and not directly comparable. Click a mark to open its source.
Part 7: Save and Share Your Dashboard
How you share depends on your Tableau edition:
Edition
How to save and share
Public Edition
File → Save to Tableau Public, then share the link. Anything published there is visible to everyone, data included.
Free Edition
Save locally. It cannot publish to Tableau Public or share packaged workbooks.
Professional
File → Save As → Tableau Packaged Workbook (.twbx), which bundles the data with the workbook.
Troubleshooting
Problem
Likely cause and fix
Counts look too high
You joined the tables instead of relating them. On the Data Source tab, look for noodles between tables, not Venn-diagram join icons.
Values show as 2500%
The data stores 25, not 0.25. Use a custom % suffix, not Tableau's percentage number format.
Uber's line in Sheet 1 is jagged
Uber's points mix two measures, “All code” (31%) and “Code changes” (10–11%). Filter on share_of_code_measure, or put it on Detail to split the line into separate series.
A field from another table shows null
Check that the relationship keys match and that both fields have the same data type.
Clicking a mark doesn't open a source
The URL action needs source_url on Detail or Tooltip in the source sheet.
Practice Challenges
Once your dashboard works, use it to answer these questions:
Which company reports the highest achieved share of AI-generated code, and what exactly is that percentage a share of?
How many of the six banks report a share-of-code figure? What do they report instead?
Which company has the most Target or Forecast rows, and why doesn't it appear in Sheet 1?
A headline says “Uber lags Google: 31% vs 75% AI-written code.” Using the share_of_code_measure and scope_notes fields, explain why that comparison is weak.
Find a new public disclosure published after May 2026, add it as a row in Observations, refresh the data source (Data → Refresh), and confirm it appears in your dashboard.
Final Notes:
Relationships keep each table at its own level of detail, so counts stay correct.
Filter on status and date_role before reading trends over time.
Encode source credibility visually rather than dropping weaker sources.
Always tell viewers when figures are not directly comparable.