Buyer’s guide Sourced and dated

Is there a ChatGPT data analysis alternative that doesn't upload my file?

Yes. xmetric reads your CSV, Excel, Parquet or .twbx file inside your browser tab, so confidential numbers never go to a chat server, and every metric is a formula you can read and check instead of code you have to trust. Keep using an AI chat for files that aren't sensitive and questions you want answered in words; use Julius if you want chat-driven analysis and the file can go to its cloud.

Updated

Our pick

xmetric

The file stays in your browser, so a customer revenue export never reaches a chat server. Metrics are formulas you can audit (FIXED expressions, running totals), and you slice by dragging instead of re-prompting.

Pick something else if

The data isn't sensitive and you want a summary in words (any AI chat), you want chat-driven Python and accept a cloud workspace (Julius), or your team works in SQL and Python on a warehouse (Hex).

xmetric makes this page. Every vendor fact below links to the vendor’s own page and the date we checked it.

How they compare

xmetric Our pickJuliusHexTableau Desktop
Where your file is processedxmetricIn your browser. Files are not uploaded.Source · checked October 17JuliusFiles are analyzed in Julius's cloud workspace; plans list server RAM and file storage.Source · checked October 17HexHex's cloud on AWS (file uploads and cached query results stored there, encrypted at rest)Source · checked October 17Tableau DesktopTableau Cloud: hosted and managed by Tableau. Tableau Server: managed by the customer. Desktop/Reader: local files.Source · checked October 17
Cost to startxmetricFree in your browser. No account needed to open a file.Saving a workbook online and sharing a link need a free account.Source · checked October 20JuliusA free plan to start.Free plan limits are not listed on the pricing page.Source · checked October 17HexCommunity plan: freeSmall compute, Hex agent trial only, limited to 5 projects (learn.hex.tech). No user cap stated on the pricing page.Source · checked October 17Tableau DesktopTableau Desktop Free Edition, Tableau Public and Tableau Reader are free.Free Edition can't publish, share online, or share packaged workbooks with others. Anything on Tableau Public is public.Source · checked October 17
Runs onxmetricAny modern browser on Mac, Windows or Linux. Nothing to install.Source · checked October 17JuliusBrowser-based cloud workspace.Source · checked October 17HexBrowser SaaS on Hex's AWS cloud (multi-tenant, EU multi-tenant); single-tenant as an Enterprise add-onSource · checked October 17Tableau DesktopTableau Desktop on Windows or Mac; Tableau Cloud hosted by Tableau, or Tableau Server managed by the customer.Source · checked October 17
Opens Tableau .twbx filesxmetricOpens .twbx and .twb in the browser app with dashboards, quick filters and filter actions working, plus sheets, data sources, formulas and packaged extracts.Source · checked October 20JuliusNot verified yetWhere we looked · October 17HexNot listed in the vendor's docs; data connections list SQL databases/warehouses (Postgres, Snowflake, BigQuery, Databricks...)Source · checked October 17Tableau DesktopYes, native format. Opens in Tableau Desktop or Tableau Reader.Source · checked October 17

Try it: the retention question, without uploading anything

Here are two years of a small software company's subscription revenue, opened in xmetric on this page. MRR grew 26.8% in 2025, which is what a quick chart says. But the customers who were paying $17,640 a year earlier now pay only 88.7% of that. The growth came from 35 new customers worth $6,719 a month.

Did existing customers grow, or did sales hide a leak?

Computed by the xmetric engine

The data

Ledgerline monthly recurring revenue, 2024 to 2025

Synthetic datamrr.csv

A small invoicing app for trades and clinics: one row per paying customer per month, with plan and MRR. Sales had a great 2025.

customer_idcompanyplanmonthmrr
C0001Willow RealtyTeam2024-01-01447
C0002Kestrel ClinicStarter2024-01-0149
C0003Maple RoofingTeam2024-01-01149
C0004Lumen MediaStarter2024-01-0149

Step 1

MRR by month

Recurring revenue ended 2025 far above where it started, summer dip and all. Ask a chat whether the business is healthy and this line is the answer you get.

Point at the line to read it.
$0$10K$20KJan 1, 2024Dec 1, 2025

Tableau

SUM([mrr])
// MONTH([month]) on Columns

SQL

SELECT month, SUM(mrr) AS mrr
FROM input
GROUP BY month
ORDER BY month

Rows

MonthMRR
Jan 1, 2024$15,304
Feb 1, 2024$15,863
Mar 1, 2024$16,085
Apr 1, 2024$16,781
May 1, 2024$16,923
Jun 1, 2024$17,307
Jul 1, 2024$17,521
Aug 1, 2024$17,423
Sep 1, 2024$17,048
Oct 1, 2024$16,848
Nov 1, 2024$17,170
Dec 1, 2024$17,640
Jan 1, 2025$18,398
Feb 1, 2025$18,806
Mar 1, 2025$19,814
Apr 1, 2025$20,749
May 1, 2025$21,394
Jun 1, 2025$21,384
Jul 1, 2025$20,113
Aug 1, 2025$19,879
Sep 1, 2025$20,114
Oct 1, 2025$20,347
Nov 1, 2025$20,931
Dec 1, 2025$22,359

Step 2

December 2025 MRR: old customers vs new

The FIXED expression finds each customer's first month, whatever the view is filtered to. Split December by it and nearly a third of the revenue turns out to be brand new.

Point at a bar to read it.
$0$5K$10K$15KCustomers from before 2025New in 2025

Tableau

IF { FIXED [customer_id] : MIN([month]) } < #2025-01-01# THEN "Customers from before 2025"
ELSE "New in 2025"
END

SQL

WITH f AS (
  SELECT customer_id, MIN(month) AS first_month
  FROM input
  GROUP BY customer_id
)
SELECT
  CASE
    WHEN first_month < DATE '2025-01-01' THEN 'Customers from before 2025'
    ELSE 'New in 2025'
    END AS segment,
  SUM(mrr) AS mrr,
  COUNT(*) AS customers
FROM input JOIN f USING (customer_id)
WHERE month = DATE '2025-12-01'
GROUP BY segment
ORDER BY segment

Rows

SegmentMRRCustomers
Customers from before 2025$15,640$63
New in 2025$6,719$35

Step 3

Net revenue retention

Take only the customers who paid in December 2024 and compare what they pay now. They shrank: churn and downgrades outran upgrades. Sales filled the hole and then some.

NRR

88.7%

Tableau

SUM(IF [month] = #2025-12-01# AND { FIXED [customer_id] : SUM(IF [month] = #2024-12-01# THEN [mrr] END) } > 0 THEN [mrr] END) / SUM(IF [month] = #2024-12-01# THEN [mrr] END)

SQL

WITH c AS (
  SELECT
    customer_id,
    SUM(mrr) FILTER (WHERE month = DATE '2024-12-01') AS dec_2024,
    SUM(mrr) FILTER (WHERE month = DATE '2025-12-01') AS dec_2025
  FROM input
  GROUP BY customer_id
)
SELECT
  SUM(dec_2024) AS base_mrr,
  SUM(COALESCE(dec_2025, 0)) FILTER (WHERE dec_2024 > 0) AS same_customers_now,
  SUM(COALESCE(dec_2025, 0)) FILTER (WHERE dec_2024 > 0)
    / SUM(dec_2024) AS nrr
FROM c

Rows

Dec 2024Same customers nowDec 2024
1764000%1564000%88.7%

Common mistake

Counting new customers in retention

This year's total over last year's total is growth, not retention: it gives 127% here and says customers are expanding. Restrict the numerator to last year's customers and it's 89%. It's the quiet mistake a hurried script makes, and the chart still looks right.

Wrong
Point at a bar to read it.
1.27Retention

Tableau

SUM(IF [month] = #2025-12-01# THEN [mrr] END) / SUM(IF [month] = #2024-12-01# THEN [mrr] END)

SQL

SELECT
  SUM(mrr) FILTER (WHERE month = DATE '2025-12-01')
    / SUM(mrr) FILTER (WHERE month = DATE '2024-12-01') AS retention
FROM input
Right
Point at a bar to read it.
0.89Dec 2024

Tableau

SUM(IF [month] = #2025-12-01# AND { FIXED [customer_id] : SUM(IF [month] = #2024-12-01# THEN [mrr] END) } > 0 THEN [mrr] END) / SUM(IF [month] = #2024-12-01# THEN [mrr] END)

SQL

WITH c AS (
  SELECT
    customer_id,
    SUM(mrr) FILTER (WHERE month = DATE '2024-12-01') AS dec_2024,
    SUM(mrr) FILTER (WHERE month = DATE '2025-12-01') AS dec_2025
  FROM input
  GROUP BY customer_id
)
SELECT
  SUM(COALESCE(dec_2025, 0)) FILTER (WHERE dec_2024 > 0)
    / SUM(dec_2024) AS nrr
FROM c

Run it on your own file

Drop your own subscription export (one row per customer per month, with an MRR column) and the same steps run on it, in your browser. Nothing is uploaded.

Drop a CSV anywhere on this page

Up to 10,000 rows. The sample, mrr.csv, shows the shape.

When an AI chat or another tool is the better choice

  • If this is you

    Customer revenue, payroll or anything under an NDA, analyzed on your laptop

    xmetric

    Nothing is uploaded, and each metric is a formula a colleague can check.

  • If this is you

    A public or harmless file and a quick question in plain words

    An AI chat

    Fast for a summary or a one-off chart. Check the numbers before you forward them.

  • If this is you

    You want to talk to your data and the file may live in a cloud workspace

    Julius

    Files are analyzed in Julius's cloud workspace; plans list server RAM and file storage. Plus is $20 per month billed monthly, or $16 per month billed annually.

  • If this is you

    You want an installed app and work alone

    Tableau Desktop

    Tableau Desktop Free Edition: full Desktop analytics for one person, stored locally; no publishing, online sharing or sharing packaged workbooks.

Questions

Can I clean a file with an AI chat and then analyze it in xmetric?

Yes, if the file isn't sensitive. Load the cleaned CSV into xmetric and build the analysis there, where each number is a formula you can inspect.

Why trust a formula over AI-written Python?

A chat writes new code for every prompt, and small changes in wording can change how it treats churned customers, nulls or date boundaries. The chart looks plausible either way. A calculated field is written once, is visible, and gives the same answer every time.

Does xmetric have an AI assistant?

Every action in the app is a command, so agents can drive it. An MCP server, a ChatGPT app and a Claude connector are in development.

What is net revenue retention?

This year's recurring revenue from the customers you had a year ago, divided by what those same customers paid then. New customers don't count. Above 100% means existing customers grow on their own; below means they shrink.

Sources