---
title: 빠른 시작
description: 약 10분 안에 소스를 연결하고 첫 쿼리를 실행한 뒤 최신 상태를 유지하는 모델을 만듭니다.
species: guide
---

# 빠른 시작

이 페이지를 마치면 레이크로 동기화되는 소스, 실제 데이터를 조회하는 쿼리, 4시간마다 자동으로 다시 빌드되는 모델을 갖게 됩니다. 예제는 Stripe와 HubSpot을 사용하는 가상의 화물 운송 소프트웨어 회사 **Skycrane**을 사용합니다. 진행하면서 자신의 수치로 바꿔보세요.

## 1. 소스 연결

**앱**을 열고 **앱 연결**을 선택합니다. 원하는 소스를 고릅니다. Skycrane의 예제에서는 Stripe를 사용합니다. 각 소스는 필요한 정보만 요청합니다. Stripe는 제한된 API 키 1개만 필요하며, Stripe 대시보드에서 1분 안에 읽기 전용으로 만들 수 있습니다. 따라서 키가 유출되어도 계정의 데이터를 변경할 수 없습니다. 자격 증명 설정은 각 소스 페이지에서 설명합니다. 이 가이드는 [Stripe](/docs/connectors/stripe)를 사용합니다.

키를 저장하면 첫 동기화가 자동으로 시작됩니다.

## 2. 데이터 수집 확인

**동기화 기록** 탭은 동기화 진행 상황을 테이블별로 보여줍니다. 완료되면 모든 테이블은 소스 이름을 딴 스키마 아래 레이크에 저장됩니다.

```text
titan.stripe.charges
titan.stripe.customers
titan.stripe.subscriptions
titan.stripe.invoices
…
```

이후 소스는 4시간마다 다시 동기화됩니다. 변경된 내용만 가져오고, 소스에서 삭제된 행은 알리지 않고 제거하는 대신 표시합니다. 곧 살펴볼 `_deleted` 열이 이를 나타냅니다. **테이블** 탭에서 동기화할 테이블과 열을 정확히 지정할 수 있습니다. 기본적으로 모든 항목이 켜져 있습니다.

## 3. 첫 쿼리 실행

**쿼리**를 열고 재무 대시보드에서 가장 먼저 묻는 질문을 해봅니다.

```sql run
select
  date_trunc('month', created_at) as month,
  round(sum(amount) / 100.0, 2) as gross_volume
from titan.stripe.charges
where not _deleted
group by month
order by month desc
limit 4
```

```output
month       gross_volume
2026-08-01     291441.00
2026-07-01     338129.50
2026-06-01     331624.00
2026-05-01     319887.25
```

레이크의 모든 테이블에 적용되는 다음 2가지를 확인하세요.

- Stripe는 `amount`를 최소 통화 단위인 센트로 저장하므로 100으로 나눕니다. 이런 특성은 각 커넥터 페이지에 설명되어 있습니다.
- `where not _deleted`는 Stripe에서 삭제된 행을 제외합니다. 레이크는 행에 표시를 남기고 유지하므로 이력이 알리지 않고 줄어들지 않습니다. [레이크](/docs/concepts/your-lake)에서 시스템 열을 설명합니다.

서로 다른 소스를 조인하는 것도 하나의 소스 안에서 조인하는 것만큼 간단합니다. Skycrane의 진행 중인 영업 파이프라인과 청구 데이터를 `join` 한 번으로 나란히 볼 수 있습니다.

```sql run
select
  property_dealstage as stage,
  count(*) as deals,
  round(sum(property_amount)) as pipeline_value
from titan.hubspot.deals
where not _deleted and not property_hs_is_closed
group by stage
order by pipeline_value desc
```

```output
stage                    deals  pipeline_value
contractsent                 7        412000.0
decisionmakerboughtin       11        280500.0
qualifiedtobuy              19        224000.0
presentationscheduled        9        118750.0
```

## 4. 모델로 만들기

내일도 사용할 쿼리는 모델에 저장하세요. 모델은 파일에 담긴 `select` 문이며, Supernova가 결과를 테이블로 구체화해 유지합니다. **파일**을 열거나 git으로 데이터 저장소를 복제한 뒤 `models/monthly_revenue.sql`을 만듭니다.

```sql run
-- name: Monthly revenue
select
  date_trunc('month', created_at) as month,
  round(sum(amount) / 100.0, 2) as gross_volume,
  round(sum(amount_refunded) / 100.0, 2) as refunded
from titan.stripe.charges
where not _deleted
group by month
```

이것이 전부입니다. 기본 파일 이름이 테이블 이름이 되고, 모델은 4시간마다 종속성 순서로 다시 빌드됩니다. 모델은 다른 모델을 `select from`으로 읽을 수 있으며, Supernova가 SQL 자체에서 순서를 파악합니다. 다른 테이블처럼 쿼리하세요.

```sql fragment
select * from titan.models.monthly_revenue order by month desc
```

[모델 작성](/docs/models/authoring)에서는 출력 스키마, 키 기반 증분 업데이트, 수동 실행 주기, 타입 검사를 지정하는 헤더 지시문을 설명합니다.

## 다음 단계

- [레이크](/docs/concepts/your-lake): 테이블, 삭제, 스냅샷이 실제로 동작하는 방식입니다. 10분이면 나머지 내용을 이해할 토대를 만들 수 있습니다.
- [타입 어노테이션](/docs/typesql/annotations): 필요한 SQL에만 타입을 추가합니다. 검사기가 대시보드에 영향이 나타나기 전에 스키마 변화를 감지합니다.
- [제한](/docs/queries/limits): 모든 상한을 한 표에서 정확히 확인합니다.
