See it in action
Try the getting started Jupyter notebook for a hands-on walkthrough.
Installation
Before you start
To use the SDK, you need three things from your Lightdash instance:instance_url— the URL where you log into Lightdash (for example,https://app.lightdash.cloudfor Lightdash Cloud, or your self-hosted URL likehttps://lightdash.mycompany.com).project_uuid— the unique ID of the project you want to query.access_token— a personal access token (PAT) used to authenticate as you.
How to get your project UUID
- Log in to Lightdash and open the project you want to query.
-
Look at the URL in your browser’s address bar. It looks like this:
-
Copy the long string between
/projects/and the next/. In the example above, the project UUID is3675b69e-8324-4110-bdca-059031aa8da3.
How to get a personal access token
- Click your avatar (top-right corner) and go to Settings.
- In the left-hand menu, under your name, click Personal access tokens.
- Click Generate new token.
- Give it a description (for example, “Python SDK”) and pick an expiration date.
- Click Generate token.
- Copy the token immediately and save it somewhere safe — you won’t be able to see it again after closing the dialog. If you lose it, just generate a new one.
Quick start
Query builder
The SDK provides two patterns for building queries: single-call and chainable builder.Single-call pattern
Pass all parameters at once for simple queries:Chainable builder pattern
Build queries incrementally with method chaining. Each method returns a new immutableQuery object:
- Immutable — each method returns a new
Queryobject, safe for reuse - Lazy evaluation — API calls only happen when
.execute()is called - Order-independent — methods can be called in any order
- Composable — create base queries and extend them
Dimensions and metrics
Access dimensions and metrics as attributes on the model:- Lazy loading — fetched from API on first access, then cached
- Fuzzy matching — typos suggest closest matches
- Tab completion — works in Jupyter/IPython for discovery
- Rich display — HTML rendering in notebooks
Filters
Use Python comparison operators on dimensions to create filters:Supported operators by data type
Combining filters
Use& (AND) and | (OR) to combine filters:
.filter() calls on a query are combined with AND logic:
Sorting
Sort results using the.sort() method:
Results
Query results implement a unifiedResultSet interface.
Converting results
Iterating over results
Pagination
For large result sets, results are paginated automatically:result.query_uuid— unique identifier for the queryresult.total_results— total number of rowsresult.total_pages— number of pagesresult.fields— field metadata
SQL runner
Execute raw SQL queries directly against your data warehouse:Exception handling
The SDK provides specific exceptions for different error conditions:LightdashError— base exception for all SDK errorsQueryError— query execution failed (HTTP 400)QueryTimeout— query exceeded timeout (HTTP 408)QueryCancelled— query was cancelled (HTTP 499)
Complete example
For the full SDK source and more examples, see the Python SDK on GitHub.