Experimental External sources are available to design partners behind the
external-sources feature flag, and the flow, limits and wording on this page may change between releases. Contact Lightdash support to enable it for your organization. Self-hosted instances also need an Enterprise license and the setup below. What Experimental means.

A Google Sheet of monthly targets, explored like any other table
Before you start
- Editor role or above. Editors, developers and admins can add, refresh, rename and delete external sources. Everyone else in the project sees the tables, and the charts built on them follow normal space permissions.
- A header row. The first row names the columns. Every following row is data.
- For Google Sheets, access to the sheet. The first time you connect a sheet, Lightdash asks your Google account for access to Google Sheets and to the Drive files you pick.
- Size limits. Up to 100 MB per file, 1,000,000 rows per table and 5 GB per organization.
Upload a CSV
1
Open Add data
In the Tables sidebar, select Add data.



2
Drop your file
Drop a CSV on the upload area, or click it to pick a file.



3
Name the table and its columns
Give the table a name and check the type detected for each column. Rename any column whose name reads oddly, then select Create table. Lightdash opens the new table as soon as it’s ready.



Connect a Google Sheet
1
Paste the sheet link
Select Add data, then Connect a Google Sheet instead. Paste the sheet’s URL from your browser and name the table.Lightdash reads the tab the link points to. Open the tab you want before copying the URL, so the link ends in 

#gid=…. A link without a tab reads the first tab.

2
Connect your Google account
Select Connect sheet. If you haven’t connected Google before, select Connect Google account, approve access in the pop-up, then select Connect sheet again.
3
Review the table
Once the import finishes, rename the table or any column, then select Open table.



What the table contains
Each column becomes a dimension with a detected type: string, number, date, timestamp or boolean. Date columns also get day, week, month, quarter and year breakdowns. Lightdash adds a Total rows metric, plus a sum and an average for every number column. Column names are tidied into SQL-safe names, soRegião becomes regiao and a column called month becomes _month. The name you see in the sidebar is the one you gave it while importing, or a readable version of the SQL name.
Join with warehouse data
Select Join with your warehouse data under the table name to combine it with an explore from your dbt project, such as targets next to actual orders by month. Lightdash suggests a join on a matching field. The result is a merge query, which you can save, add to dashboards and schedule like any other chart.

Monthly targets from a Google Sheet joined to warehouse orders by month
Keep the table up to date
An external source is a copy taken when you import it, and edits to the sheet or file don’t show up until you refresh it. The menu next to the table name holds the source actions:- Refresh from Google Sheets reads the sheet again. Column names you set are kept.
- Replace file uploads a new version of a CSV.
- Reconnect Google account makes your Google access the one used for future refreshes, for example when the person who connected the sheet leaves.
- Rename table changes the table and column names. Saved charts keep working.
- View source details previews the columns and the first rows.
- Delete removes the table. Charts built on it stop working.




Renaming a column from Rename table
Self-hosted setup
External sources run on the same DuckDB engine and object storage as pre-aggregates, but they don’t need pre-aggregate workers or NATS. You need:- An Enterprise license. Set
LIGHTDASH_LICENSE_KEY. See enterprise features. - A bucket for the imported data. Set the
PRE_AGGREGATE_RESULTS_S3_*variables listed under pre-aggregates. Lightdash stores each table underexternal-sources/in that bucket. - The feature flag. Add
external-sourcestoLIGHTDASH_ENABLE_FEATURE_FLAGS. See feature flags. - For Google Sheets, a Google OAuth client. Follow configure a Google Sheets integration. Enable the Google Sheets API and the Google Drive API on the same Google Cloud project, and add
<SITE_URL>/api/v1/oauth/redirect/googleto the client’s authorized redirect URIs.
EXTERNAL_SOURCES_MAX_FILE_SIZE_BYTES, EXTERNAL_SOURCES_MAX_ROWS or EXTERNAL_SOURCES_MAX_ORGANIZATION_BYTES.