> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snaplabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Create your first conceptual model, reverse engineer a source, generate a target model, and export DDL.

This guide walks through a first session: create a project, start a free trial, sketch a conceptual model with AI, reverse engineer a source schema, generate a target model, refine it with Copilot, then forward engineer DDL.

## Steps

<Steps>
  <Step title="Create a project">
    Sign in to Snap Data Studio. On the home page, click **Create Blank Project**.

    Snap Data Studio opens an **Untitled Project**. You can rename it later from the project menu.
  </Step>

  <Step title="Start a free trial">
    Agent Copilot and Generate Model need a plan that includes those features.

    1. Open **Plans & Billing** from the sidebar.
    2. Choose a plan and start the free trial from the pricing table.
    3. Return to your project when billing is active.

    If a gated action asks you to upgrade, use **Upgrade** to open the same billing page.
  </Step>

  <Step title="Use AI to create a conceptual model">
    Open the **Conceptual Model** (use **Concepts** in the sidebar if you need the Concepts drawer).

    1. Open **AI Copilot** from the header.
    2. Switch to **Agent** mode.
    3. Paste the prompt below and send it.
    4. When you see **Staged changes ready**, review the highlighted concepts and relationships on the canvas.
    5. Click **Keep** to save the model (or **Revert** to discard).

    Example prompt:

    ```text theme={null}
    Model how we sell parts through customer orders and source those parts from suppliers.

    Customers and suppliers each belong to a nation, and every nation sits in a geographic region.

    Customers place orders. Each order has line items for specific parts. A part can be supplied by many suppliers, and each supplier can supply many parts — track that part–supplier availability as its own concept.
    ```

    Prefer business language and singular concept names. You can refine the model later with more Agent prompts or by editing concepts and relationships on the canvas.

    For field-level detail, see [Create a conceptual model](/guides/create-conceptual-model).
  </Step>

  <Step title="Reverse engineer a model">
    Import the TPC-H schema as a source ERD.

    1. Open **Diagrams** in the project sidebar.
    2. Click **Import diagram** → **Import DDL**.
    3. Leave the dialect as **Snowflake** (or choose the dialect that matches the script).
    4. Paste the DDL below into the editor.
    5. Click **Generate Diagram**.

    TPC-H DDL:

    ```sql theme={null}
    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.PART (
      P_PARTKEY DECIMAL(38, 0) PRIMARY KEY NOT NULL,
      P_NAME VARCHAR(55),
      P_MFGR VARCHAR(25),
      P_BRAND VARCHAR(10),
      P_TYPE VARCHAR(25),
      P_SIZE DECIMAL(38, 0),
      P_CONTAINER VARCHAR(10),
      P_RETAILPRICE DECIMAL(12, 2),
      P_COMMENT VARCHAR(23)
    );

    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.REGION (
      R_REGIONKEY DECIMAL(38, 0) PRIMARY KEY NOT NULL,
      R_NAME VARCHAR(25),
      R_COMMENT VARCHAR(152)
    );

    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.NATION (
      N_NATIONKEY DECIMAL(38, 0) PRIMARY KEY NOT NULL,
      N_NAME VARCHAR(25),
      N_REGIONKEY DECIMAL(38, 0),
      N_COMMENT VARCHAR(152),
      FOREIGN KEY (N_REGIONKEY) REFERENCES SAMPLE_DATA.TPCH_SF1.REGION (
        R_REGIONKEY
      )
    );

    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.CUSTOMER (
      C_CUSTKEY DECIMAL(38, 0) PRIMARY KEY NOT NULL,
      C_NAME VARCHAR(25),
      C_ADDRESS VARCHAR(40),
      C_NATIONKEY DECIMAL(38, 0),
      C_PHONE VARCHAR(15),
      C_ACCTBAL DECIMAL(12, 2),
      C_MKTSEGMENT VARCHAR(10),
      C_COMMENT VARCHAR(117),
      FOREIGN KEY (C_NATIONKEY) REFERENCES SAMPLE_DATA.TPCH_SF1.NATION (
        N_NATIONKEY
      )
    );

    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.ORDERS (
      O_ORDERKEY DECIMAL(38, 0) PRIMARY KEY NOT NULL,
      O_CUSTKEY DECIMAL(38, 0),
      O_ORDERSTATUS VARCHAR(1),
      O_TOTALPRICE DECIMAL(12, 2),
      O_ORDERDATE DATE,
      O_ORDERPRIORITY VARCHAR(15),
      O_CLERK VARCHAR(15),
      O_SHIPPRIORITY DECIMAL(38, 0),
      O_COMMENT VARCHAR(79),
      FOREIGN KEY (O_CUSTKEY) REFERENCES SAMPLE_DATA.TPCH_SF1.CUSTOMER (
        C_CUSTKEY
      )
    );

    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.SUPPLIER (
      S_SUPPKEY DECIMAL(38, 0) PRIMARY KEY NOT NULL,
      S_NAME VARCHAR(25),
      S_ADDRESS VARCHAR(40),
      S_NATIONKEY DECIMAL(38, 0),
      S_PHONE VARCHAR(15),
      S_ACCTBAL DECIMAL(12, 2),
      S_COMMENT VARCHAR(101),
      FOREIGN KEY (S_NATIONKEY) REFERENCES SAMPLE_DATA.TPCH_SF1.NATION (
        N_NATIONKEY
      )
    );

    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.PARTSUPP (
      PS_PARTKEY DECIMAL(38, 0) NOT NULL,
      PS_SUPPKEY DECIMAL(38, 0) NOT NULL,
      PS_AVAILQTY DECIMAL(38, 0),
      PS_SUPPLYCOST DECIMAL(12, 2),
      PS_COMMENT VARCHAR(199),
      PRIMARY KEY (PS_PARTKEY, PS_SUPPKEY),
      FOREIGN KEY (PS_PARTKEY) REFERENCES SAMPLE_DATA.TPCH_SF1.PART (
        P_PARTKEY
      ),
      FOREIGN KEY (PS_SUPPKEY) REFERENCES SAMPLE_DATA.TPCH_SF1.SUPPLIER (
        S_SUPPKEY
      )
    );

    CREATE OR ALTER TABLE SAMPLE_DATA.TPCH_SF1.LINEITEM (
      L_LINENUMBER DECIMAL(38, 0) UNIQUE NOT NULL,
      L_LINENUMBE DECIMAL(38, 0) NOT NULL,
      L_SUPPKEY DECIMAL(38, 0),
      L_PARTKEY DECIMAL(38, 0),
      L_QUANTITY DECIMAL(12, 2),
      L_EXTENDEDPRICE DECIMAL(12, 2),
      L_DISCOUNT DECIMAL(12, 2),
      L_TAX DECIMAL(12, 2),
      L_RETURNFLAG VARCHAR(1),
      L_LINESTATUS VARCHAR(1),
      L_SHIPDATE DATE,
      L_COMMITDATE DATE,
      L_RECEIPTDATE DATE,
      L_SHIPINSTRUCT VARCHAR(25),
      L_SHIPMODE VARCHAR(10),
      L_COMMENT VARCHAR(44),
      PRIMARY KEY (L_LINENUMBER, L_LINENUMBE),
      FOREIGN KEY (L_LINENUMBE) REFERENCES SAMPLE_DATA.TPCH_SF1.ORDERS (
        O_ORDERKEY
      ),
      FOREIGN KEY (L_PARTKEY, L_SUPPKEY) REFERENCES SAMPLE_DATA.TPCH_SF1.PARTSUPP (
        PS_PARTKEY,
        PS_SUPPKEY
      )
    );
    ```

    Snap Data Studio creates a new diagram from the script. It does not overwrite your conceptual model.

    For other import options (database or DBML), see [Create a logical & physical model](/guides/create-logical-physical-model#reverse-engineer-import).
  </Step>

  <Step title="Generate a logical and physical model">
    Combine your conceptual model with the reverse-engineered source to produce a target ERD.

    1. With the Conceptual Model or source diagram tab active, click **Generate Model** in the header.
    2. Choose a methodology — for analytics, pick **Kimball - Dimensional Model**.
    3. On **Concepts**, select the concepts to include (use **Select All** for this walkthrough).
    4. On **Source Model**, select the diagram you imported from DDL.
    5. Optionally add guidance on the **Guidance** tab.
    6. Click **Generate Model** and wait for the run to finish.

    Generation always creates a **new** diagram (for example the source name with a ` - Dimensional` suffix), plus **AI-Generated Documentation** and often **Column Mappings**. It does not overwrite the source diagram.

    Open the new diagram and use the **Logical** / **Physical** toggle to switch views. If physical mode is incomplete, set **Warehouse**, **Database** or **Catalog**, and **Schema** from physical location settings.

    For methodology options and how concepts enrich generation, see [Create a logical & physical model](/guides/create-logical-physical-model).
  </Step>

  <Step title="Refine the model with Copilot">
    Use Agent mode on the generated diagram to make a real modeling change — promote shipping method into its own dimension.

    1. Open the generated dimensional diagram.
    2. Open **AI Copilot** and switch to **Agent** mode.
    3. Paste the prompt below and send it.
    4. Review the staged table and relationship changes on the canvas.
    5. Click **Keep** to apply them (or **Revert** to discard).

    Example prompt:

    ```text theme={null}
    Add a Ship Mode dimension for how line items are shipped. Link it to the line item fact, give it a surrogate key, and include the ship mode code and a display name. If ship mode still exists only as an attribute on the fact, remove that attribute after the dimension is in place.
    ```

    Staged changes are not saved until you **Keep**. Resolve them before starting another Agent edit.

    For more Copilot patterns on diagrams, see [Create a logical & physical model](/guides/create-logical-physical-model#use-the-copilot).
  </Step>

  <Step title="Export an artifact">
    Forward engineer the generated diagram into warehouse DDL.

    1. Open **Diagrams** in the project sidebar.
    2. Hover the generated diagram and open its ⋯ menu.
    3. Click **Forward engineer**.
    4. Confirm the database type (**Snowflake** or **Databricks**).
    5. Click **Generate DDL**.

    A `.sql` artifact opens under the diagram. Edit and autosave as needed — Snap Data Studio does not run the script against your warehouse.

    You can also [add documentation](/guides/create-artifact#docs) from the same ⋯ menu, or review the docs generation already created.
  </Step>
</Steps>

## Next steps

* [Connect to a data warehouse](/get-started/connect-to-data-warehouse)
* [Create a conceptual model](/guides/create-conceptual-model)
* [Create a logical & physical model](/guides/create-logical-physical-model)
* [Create an artifact](/guides/create-artifact)
