We’re excited to announce GenAI data modeling, which we call MagicModel.
MagicModel lets you ask a question with no data modeling ahead of time.
MagicModel automatically generates fully editable join relationships between your data tables to answer your question. It can do joins across 5+ tables to answer a question, handle approximate field matches, and use context from your previous queries to automatically determine relationships.
This makes it radically easier to ask questions that span multiple tables, even if no dbt model or previous join relationship has been set up. You save time on avoiding data schema lookups or scouring data catalogs and data dictionaries. It also means you can get much more immediate answers – just add a data set and query away. And of course, you can always control or edit the relationships Zing learns.
All of these relationships are fully reusable, editable, and visually visible so you can see exactly what fields were used to create joins and override them if you’d like.
This dramatically speeds up time to insight because no model needs to be pre-created to ask a question; you can simply add a data source and immediately start querying it, creating alerts and dashboards, and sharing insights across your company.
Whenever you have a lot of data, you need to split it up between multiple tables, views, or even databases to make it more useful.
This typically requires modeling the relationship between tables to be able to answer questions – whether by dragging and dropping to define relationships, or using something like dbt, or transformation code to achieve this.
This can take a lot of time, and invariably, even well-modeled data needs to be flexible for new tables or sources that arise. For instance, you have well structured data but a marketing campaign provides customer-level information on event attendees as a one-off CSV you want to correlate to downstream sales.
This allows you to have questions run more quickly and not need to represent everything in a really large table that’s going to be slow to run, time consuming to update.
Let’s say you have four tables:
Orders, which contains customer information, summary order information
Products, which contains details about each product, such as product descriptions, reviews, product shipping weight
Customers which contains information about each customer including their loyalty information, gift card balances
Inventory, which contains data about each product, it’s availability in your warehouse, and additional supplier information like lead times to order and receive additional quantities of a product
You wouldn’t want to capture the detail of every product in every order, so you separate these out and perhaps join them using a product ID field. And you wouldn’t want every customer’s gift card balance to be captured in every order so you update it on the customers table.
Traditionally, you’d define joins between each of these tables manually by identifying the join keys between tables, and saving these as individual tables or views, or as DBT models.
This was fundamentally time consuming and fragile – if a field name changes, the associated joins no longer work. But with MagicModel, all of these relationships are figured our on fly and are inherently flexible and up-to-date.
Lets look at an example where we ask for “total orders by category name” – where no single table or view contains all the data necessary to answer the question.
The join relationships created are fully visible in Zing, as we see:
Zing’s GenAI data modeling is:
This is live for BigQuery and PostgreSQL today, and is being rolled out for additional data source types in the coming week.
Of course, you’re always in control so you can pre-create specific relationships if you’d like and Zing will use those, or modify any relationships that Zing has created for you.
Have more questions? Our team is ready to guide you through the process and answer any questions you have. Feel free to reach out via email or chat.