Szybki start#
Po ukończeniu tej strony będziesz mieć źródło synchronizowane z jeziorem, zapytanie do bieżących danych i model przebudowywany co cztery godziny. Przykłady korzystają ze Skycrane, fikcyjnej firmy tworzącej oprogramowanie dla przewozów, która używa Stripe i HubSpot. Podczas pracy zastąp przykładowe wartości własnymi.
1. Połącz źródło#
Otwórz Aplikacje i wybierz Połącz aplikację. Wybierz potrzebne źródło — dla Skycrane jest to Stripe. Każde źródło prosi wyłącznie o niezbędne dane. Stripe potrzebuje jednego ograniczonego klucza API, który można utworzyć jako klucz tylko do odczytu w dashboardzie Stripe w ciągu minuty, więc jego wyciek nie pozwoli niczego zmienić na koncie. Strona każdego źródła opisuje wymagane dane uwierzytelniające; ten przewodnik korzysta ze Stripe.
Zapisz klucz, a pierwsza synchronizacja rozpocznie się automatycznie.
2. Obserwuj napływ danych#
Karta Historia synchronizacji pokazuje synchronizację podczas działania, tabela po tabeli. Po zakończeniu każda tabela znajduje się w jeziorze w schemacie nazwanym od źródła:
titan.stripe.charges
titan.stripe.customers
titan.stripe.subscriptions
titan.stripe.invoices
…Od tej chwili źródło synchronizuje się ponownie co 4 godziny. Pobierane są tylko zmiany, a wiersze usunięte w źródle są oznaczane, a nie po cichu kasowane — służy do tego kolumna _deleted, którą zaraz zobaczysz. Karta Tabele kontroluje dokładnie, które tabele i kolumny są synchronizowane; domyślnie włączone jest wszystko.
3. Wykonaj pierwsze zapytanie#
Otwórz Zapytania i zadaj pierwsze pytanie obecne w każdym dashboardzie finansowym:
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 4month gross_volume
2026-08-01 291441.00
2026-07-01 338129.50
2026-06-01 331624.00
2026-05-01 319887.25Zwróć uwagę na dwie rzeczy, które dotyczą każdej tabeli w jeziorze:
Stripe przechowuje
amountw jednostkach podrzędnych — centach — dlatego dzielimy przez 100. Strona każdego konektora opisuje takie właściwości.where not _deletedwyklucza wiersze usunięte w Stripe. Jezioro zachowuje je z oznaczeniem, aby historia nigdy nie kurczyła się po cichu. Kolumny systemowe opisuje strona Twoje jezioro.
Zapytania łączą źródła równie łatwo jak tabele w jednym źródle — otwarty lejek Skycrane i jego rozliczenia dzieli tylko jedno join:
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 descstage deals pipeline_value
contractsent 7 412000.0
decisionmakerboughtin 11 280500.0
qualifiedtobuy 19 224000.0
presentationscheduled 9 118750.04. Utwórz model#
Zapytanie, którego będziesz potrzebować jutro, powinno stać się modelem: instrukcją select w pliku, którą Supernova materializuje jako tabelę. Otwórz Pliki (albo sklonuj repozytorium danych przez Git) i utwórz models/monthly_revenue.sql:
-- 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 monthTo wszystko. Podstawowa nazwa pliku jest nazwą tabeli, a modele są przebudowywane co 4 godziny w kolejności zależności — model może wykonywać select from innego modelu, a Supernova wyznacza kolejność z samego SQL. Odpytuj go jak każdą inną tabelę:
select * from titan.models.monthly_revenue order by month descStrona Pisanie modeli opisuje dyrektywy nagłówka: schematy wyjściowe, aktualizacje przyrostowe według klucza, ręczną częstotliwość i kontrolę typów.
Co dalej#
Twoje jezioro — działanie tabel, usunięć i migawek. Dziesięć minut, dzięki którym reszta staje się zrozumiała.
Adnotacje typów — dodawanie typów dokładnie tam, gdzie SQL ich potrzebuje; moduł sprawdzający wykrywa zmianę przed dashboardami.
Limity — wszystkie ograniczenia w jednej szczerej tabeli.