Buyer’s guide Sourced and dated

Which free BI tool should a freelance data consultant use?

If clients send you CSV or Excel exports and Tableau workbooks and expect a finding, not a platform, use xmetric: it's free, needs no seat in the client's tenant, opens .twbx files, and keeps client data on your laptop. Pick Data Studio when the deliverable is a live Google marketing dashboard, Power BI when the client runs on Microsoft 365, and Tableau when they already pay for it.

Updated

Our pick

xmetric

No per-seat licence, no guest access to the client's tenant, works on whatever laptop you carry, opens the .twbx the client's last analyst left behind, and keeps the client's data on your machine.

Pick something else if

The client wants a live dashboard on Google Analytics, Ads or Sheets (Data Studio), lives in Microsoft 365 and will maintain the report in Power BI, or already pays for Tableau and wants the work inside it.

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 pickData Studio (formerly Looker Studio)Power BITableau
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 20Data Studio (formerly Looker Studio)Data Studio (formerly Looker Studio) self-service tier, no charge.Web-only. Pro features (team workspaces, Google Cloud support, CMEK) cost extra; some partner connectors are paid.Source · checked October 17Power BIPower BI Desktop is a free download; free account (Fabric Free license) also available.Sharing reports needs Pro or Premium; Desktop is Windows-only; the service needs a work or school email.Source · checked October 17TableauTableau 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
Where client data goesxmetricIn your browser. Files are not uploaded.Source · checked October 17Data Studio (formerly Looker Studio)Live connections leave data in the source (cached temporarily); extracts and uploaded CSVs are stored by Google (Cloud Storage).Source · checked October 17Power BIDesktop works locally; the Power BI service (sharing, publishing) is Microsoft-hosted SaaS inside Microsoft Fabric.Source · checked October 17TableauTableau Cloud: hosted and managed by Tableau. Tableau Server: managed by the customer. Desktop/Reader: local files.Source · checked October 17
Runs onxmetricAny modern browser on Mac, Windows or Linux. Nothing to install.Source · checked October 17Data Studio (formerly Looker Studio)Browser-based cloud service only (no desktop app).Source · checked October 17Power BIPower BI Desktop runs on Windows only (Windows 10 / Server 2016 or later); sharing goes through the cloud Power BI service.Source · checked October 17TableauTableau 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 20Data Studio (formerly Looker Studio)Not listed in the vendor's docs. File connectors listed: Google Sheets, Microsoft Excel, Upload CSV files, Extract data.Source · checked October 17Power BINot listed in the vendor's docs. Connectors cover Excel, Text/CSV, JSON, XML, Parquet, PDF, Folder and databases; no Tableau connector.Source · checked October 17TableauYes, native format. Opens in Tableau Desktop or Tableau Reader.Source · checked October 17

Try it: the audit question behind most client projects

A retailer's order export, nine months of it. Marketplace is 43% of booked sales and the client wants to grow it. Take out returns (30% of marketplace orders come back) and it's 36% of net sales. Take out marketplace fees, shipping and cost of goods and it's 12% of the margin, at 8.9% against 37.8% for the webshop. Wholesale, with 30% of booked sales, earns the most. That's a finding a client pays for, and it took three formulas.

Is the biggest channel the best one?

Computed by the xmetric engine

The data

Ridgeline Outfitters orders, January to September 2025

Synthetic dataorders.csv

An outdoor-gear retailer selling tents, jackets and boots through its own webshop, a third-party marketplace and wholesale to shops. 1,800 orders with discounts, fees, shipping, cost of goods and returns.

order_idorder_datechannelcategoryunitsgross_salesdiscountfeesshippingcogsreturned
R002592025-01-01WebshopTents1249.113.227.0871370
R005362025-01-01WebshopTents1235.5818.036.537129.570
R009752025-01-01WebshopJackets1173.385.325.04778.020
R012592025-01-01WebshopAccessories124.171.760.6779.670

Step 1

Sales by channel, as the client's dashboard shows them

Marketplace is the biggest channel by a distance. The client wants to move budget into it.

Point at a bar to read it.
050K100K150KMarketplaceWholesaleWebshop

Tableau

SUM([gross_sales] - [discount])

SQL

SELECT
  channel,
  ROUND(SUM(gross_sales - discount)) AS booked_sales,
  ROUND(SUM(gross_sales - discount) / SUM(SUM(gross_sales - discount)) OVER (), 3) AS share
FROM input
GROUP BY channel
ORDER BY booked_sales DESC

Rows

ChannelBooked salesShare
Marketplace152,19543.3%
Wholesale103,72929.5%
Webshop95,51927.2%

Step 2

Take out the returns

Almost a third of marketplace orders come back. After refunds the three channels are close.

Point at a bar to read it.
050K100KMarketplaceWholesaleWebshop

Tableau

SUM(IF [returned] = 1 THEN 0 ELSE [gross_sales] - [discount] END)

SQL

SELECT
  channel,
  ROUND(SUM(CASE WHEN returned = 1 THEN 0 ELSE gross_sales - discount END)) AS net_sales,
  ROUND(AVG(returned), 3) AS return_rate
FROM input
GROUP BY channel
ORDER BY net_sales DESC

Rows

ChannelNet salesReturn rate
Marketplace105,21030.2%
Wholesale100,9772.4%
Webshop86,5389.4%

Step 3

Subtract fees, shipping and cost of goods

Marketplace pays a fee on every sale and double shipping on every return; the returned goods earn nothing. It ends up last by a wide margin. Wholesale, a smaller channel by sales, makes the most money.

Point at a bar to read it.
010K20K30KWholesaleWebshopMarketplace

Tableau

[Margin] = [Net sales] - [fees] - [shipping] - [cogs]
Margin % = SUM([Margin]) / SUM([Net sales])

SQL

WITH t AS (
  SELECT
    channel,
    CASE
      WHEN returned = 1 THEN 0
      ELSE gross_sales - discount
      END AS net_sales,
    fees,
    shipping,
    cogs
  FROM input
)
SELECT
  channel,
  ROUND(SUM(net_sales)) AS net_sales,
  ROUND(SUM(net_sales - fees - shipping - cogs)) AS margin,
  ROUND(SUM(net_sales - fees - shipping - cogs) / SUM(net_sales), 3) AS margin_pct,
  ROUND(SUM(net_sales - fees - shipping - cogs) / SUM(SUM(net_sales - fees - shipping - cogs)) OVER (), 3) AS share_of_margin
FROM t
GROUP BY channel
ORDER BY margin DESC

Rows

ChannelNet salesMarginMargin pctShare of margin
Wholesale100,97733,72933.4%44.5%
Webshop86,53832,74237.8%43.2%
Marketplace105,2109,3178.9%12.3%

Common mistake

Averaging each order's margin %

A returned order has zero net sales, so its margin % is a division by zero and Tableau drops it from AVG. The average then ignores every return, which is exactly what sinks the marketplace. Divide the sums instead.

WrongStarts with Marketplace, Webshop, Wholesale…
Point at a bar to read it.
0%25%50%75%100%MarketplaceWebshopWholesale

Tableau

AVG([Margin] / [Net sales])

SQL

WITH t AS (
  SELECT
    channel,
    CASE
      WHEN returned = 1 THEN 0
      ELSE gross_sales - discount
      END AS net_sales,
    fees,
    shipping,
    cogs
  FROM input
)
SELECT
  channel,
  ROUND(AVG((net_sales - fees - shipping - cogs) / NULLIF(net_sales, 0)), 3) AS margin_pct
FROM t
GROUP BY channel
ORDER BY channel
RightStarts with Marketplace, Webshop, Wholesale…
Point at a bar to read it.
0%25%50%75%100%MarketplaceWebshopWholesale

Tableau

SUM([Margin]) / SUM([Net sales])

SQL

WITH t AS (
  SELECT
    channel,
    CASE
      WHEN returned = 1 THEN 0
      ELSE gross_sales - discount
      END AS net_sales,
    fees,
    shipping,
    cogs
  FROM input
)
SELECT
  channel,
  ROUND(SUM(net_sales - fees - shipping - cogs) / SUM(net_sales), 3) AS margin_pct
FROM t
GROUP BY channel
ORDER BY channel

Run it on your client's export

Drop the client's CSV here: one row per order with a channel, the sales and the costs you have. The steps rerun in your browser and nothing is uploaded: the client's file never leaves your laptop.

Drop a CSV anywhere on this page

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

When another tool is the better choice

  • If this is you

    A diagnostic or due-diligence project on exports and workbooks the client sends

    xmetric

    Free, private by default, and the finding goes back as a view-only link.

  • If this is you

    A marketing client who checks GA4 and Ads numbers every morning

    Data Studio

    Free, live Google connectors, shared by link. Team workspaces are $9 per user per project per month.

  • If this is you

    The client's staff will maintain the report inside Microsoft 365

    Power BI

    Build in their tenant; sharing needs Pro at $14.00 user/month, paid yearly.

  • If this is you

    The client already runs Tableau Cloud and gives you a seat

    Tableau

    Work where their reports live; a Creator seat costs $75 per user/month, billed annually.

Questions

Can I open a client's .twbx without Tableau Desktop?

Yes. Open it in the xmetric app in your browser to keep building on it, or drop it into the workbook inspector to list its data sources, sheets and every calculated field.

Does xmetric upload client data?

No. CSV, Excel and Parquet files and .twbx workbooks are read inside your browser unless you choose to save the workbook online. That's easier to put in an NDA than a cloud upload.

How do I hand the result to the client?

Sign in, save the workbook online and send the client a view-only link. Until you save it, everything stays in your browser.

What if the client needs a live database connection?

Today xmetric works with files: CSV, Excel, Parquet and Tableau workbooks. Live Postgres and BigQuery connections are coming.

Sources