Open in Google Colab
Run this exact tutorial interactively in Google Colab
pydataframer) can be used to generate large amounts of high quality synthetic datasets where each sample size can be arbitrarily large.
Prerequisites
-
Service Principal Permissions (one-time admin setup)
This notebook must be run using a service principal that has access to the required Unity Catalog objects.
A Databricks admin should create a service principal and grant it:USE CATALOGon the catalogUSE SCHEMA,CREATE TABLE,SELECT, andMODIFYon the schema
- In addition, any user that is using the Databricks UI to access or manage the tables used in this notebook, should be given the same set of permissions specified in Step 1.
-
DataFramer Databricks Credentials (one-time admin setup)
A DataFramer company admin must configure the Databricks service principal credentials in the DataFramer web application. Navigate to Profile > Keys > Databricks Credentials and enter:- Client ID — the service principal application (client) ID
- Client Secret — the service principal secret
- API Base URL — the Databricks Model Serving endpoint URL
(e.g.https://adb-xxx.azuredatabricks.net/serving-endpoints)
databricks/model for specs, runs, evaluations, or chat. No credentials need to be passed in API calls. -
A Dataframer API key is required for this demo. This can be retrieved by navigating to Profile > Keys > Copy API Key on the web application.
Note that you can use the fully hosted Dataframer solution or an on-prem deployed version (reach out to [email protected] for more details). -
Databricks Secrets Setup
This notebook expects the following secrets to be stored in a Databricks secret scope.
End-users running this notebook need at least READ permission on the secret scope.
In this example, we use a scope nameddataframer.DATAFRAMER_API_KEY— DataFramer API key (from step 4)DATABRICKS_HTTP_PATH— SQL warehouse HTTP path (for data access)DATABRICKS_CLIENT_ID— Service principal client ID (for data access)DATABRICKS_CLIENT_SECRET— Service principal secret (for data access)DATABRICKS_SERVER_HOSTNAME— Databricks workspace hostname (for data access)
The Databricks secrets being stored in a secret scope above are used by the
DatabricksConnector for SQL access (fetching sample data and loading generated data into tables). Model Serving authentication is handled automatically by DataFramer using the credentials configured in step 3.Step 1: Install and Setup SDK
Install the DataFramer SDK and the Databricks connector package for DataFramer.Initialize the DataFramer client and the DatabricksConnector
In this step, we initialize the DataFramer client using an API key stored securely in Databricks Secrets under thedataframer scope. We also initialize the DatabricksConnector with dataframer scope to access/persist data from/into Unity Catalog.
Fetch sample data
For this demo, we use sample data available in the Databricks catalog, specifically thesamples.bakehouse.media_customer_reviews table. To keep the example lightweight, we select only the top 25 rows, export them as a CSV file, and upload the file to DataFramer.
Step 2: Upload data
Prepare CSV and upload to DataFramer
To use DataFramer, only a small sample of data is needed. To derive these samples from a table, we recommend creating a CSV file that contain the relevant rows from the table and supplying that as aSeed dataset to DataFramer.
Retrieve Dataset Details
This API demonstrates how to retrieve a specific dataset given a dataset ID.Step 3: Generate Specification via the analysis API
A specification (or “spec”) is a detailed description that captures the structure, patterns, and requirements of your data. Think of aspec as a blueprint for your data generation task. DataFramer automatically generates specifications by analyzing your seed data. This cell ensures a specification exists for the dataset by reusing an existing one or generating a new one.
When using a databricks/ model, DataFramer automatically retrieves your company’s stored Databricks credentials (configured by your admin in Profile > Keys).
Review Generated Specification
This cell retrieves the latest version of the generated specification and inspects key properties inferred from the dataset, such as data property variations.Step 4: Update Specification (Optional)
This cell demonstrates how to programmatically update a given specification. To keep this demo simple, the update is applied only when the specification is newly created (i.e., when the latest version is1). If the specification has already been updated, this step is skipped. In this step, we add a new data property called Review Detail Level with values 'Very brief', 'Brief', 'Moderate', 'Detailed' and expected distributions [15, 30, 35, 20].
Step 5: Generate New Samples
Once the spec is generated and finalized after any manual modifications, we will use this spec to generate synthetic data. Databricks Model Serving credentials are retrieved automatically from your company’s stored configuration.Step 6: Evaluate Generated Samples
While DataFramer evaluates each sample as it is generated, it also supports a post-generation evaluation. This API shows how to evaluate the generated dataset. Read the documentation for more details.Step 7: Download Generated Files
List Generated Files
This API lists all the files that were present in the generated dataset.Download All Files as ZIP
This API allows you to download all the generated files with metadata as a compressed ZIP file.Load generated data into a Delta table
This cell writes the generated data into a Delta table<catalog>.<schema>.<table_name>. If the table already exists, its contents are overwritten.

