For the complete documentation index, see llms.txt. This page is also available as Markdown.

Profiling a database

A database profile is a thorough analysis of the data and its structure. Each table has its own profile.

The Data Agent consults the profile whenever it needs to understand the content or structure of a table. For example, when it adds data to a table, the Data Agent uses the table profile as a guide.

You can also prompt the Data Agent to use a profile to guide data generation. For example, for a live connection database, you can generate data to one database connection based on the profile of another database connection.

To profile an external database, you can either:

  • Connect to it and generate the profile from within Fabricate.

  • From your own coding agent, use the Fabricate public profiling skill to create the profile.

Using Fabricate to create a profile

When it needs to use profile information, but there is no profile, then the Data Agent automatically creates one.

The Data Agent also automatically updates the profile to reflect changes to the data structure. For example, if you add columns or if you make changes to the distribution of values, then the Data Agent updates the profile.

To manually profile a database, prompt the Data Agent. For example:

Create a profile of the transactions database.

Using a coding agent to create and import a profile

You might want to use the profile of an existing production database to generate data in Fabricate. However, for security reasons, you also might not want to add a connection from Fabricate to the database.

For this type of use case, Fabricate provides an external data profiling skill that you can add to an AI agent such as Claude or Cursor. From within your AI agent, you create the profile. You can then import the profile into Fabricate to use for future data generation.

Adding the profiling skill to your AI agent

To add the profiling skill to your AI agent, run the following:

npx skills add TonicAI/agents --skill fabricate-database-profile

Profiling a database

After you add the profiling skill, you prompt your AI agent to profile the database.

The prompt must include the location and connection details of the database to profile.

For example: Create a Fabricate database profile. To connect to the database, use the connection string Server=123.45.6789;Database=commerce;Port=1234;User Id=user1;Password=p@ssw0rd

Importing the profile into Fabricate

If your AI agent is connected to the Fabricate MCP server, then you can prompt the agent to import the profile into Fabricate.

Otherwise, you can download the profile from your AI agent and then use the Data Agent to import the profile into Fabricate.

Attach the file, then prompt the Data Agent to add the profile to the Profiles list. For example: Add the profile from the attached file fabricate_profile.json to the list of available profiles.

Viewing a table profile

For an individual table, findings view displays the profile for the table.

The profile details page provides access to the profile information for all of the tables.

Displaying findings view for a table

To display the findings view for a table:

  1. In the navigation panel, display the table list for a database or data connection.

  2. In the table list, click the table.

  3. In the table heading, click the findings icon.

Findings view for a database table

Displaying the profile details page

To display the profile details page in the navigation panel, under Profiles, click the profile to display.

By default, the profile details page displays the the profiles for all of the tables.

Profile details page displaying the profiles for all tables

To display the profile for a specific table, in the profile header, click the table name.

What's in a profile?

Each profile includes:

  • Table DDL.

  • Correlation of columns. For example, a transaction date and transaction identifier are likely to be tightly correlated. Or the total cost of an order is the sum of each order item cost times the order item quantity.

  • Cardinality of column values. For example, most orders have 1 item, fewer orders have 2 items, and even fewer orders have more than 2 items.

  • Constraints on columns. For example, the same order cannot have a duplicate product identifier. All timestamps must use the ISO 8601 format.

  • Distribution of column values. For example, customer addresses are distributed across 20 states.

Exporting a profile

From the profile details page, you can export a profile. Fabricate creates and downloads a JSON file that contains the profile.

You can then use the profile as the basis for another database.

To export the profile, on the profile details page, click Export.

You can also use the Data Agent chat to request the export. For example: Export the Retail database profile.

Last updated

Was this helpful?